ЗаписьДанных.ЗаписатьЦелое64Асинх

Методы · WriteInt64Async

Асинхронная функция. Записывает целое 64-битное число в целевой поток.

Синтаксис

ЗаписатьЦелое64Асинх(<Число>, <ПорядокБайтов>)
Полное описание, параметры и ограничения

ЗаписьДанных.ЗаписатьЦелое64Асинх (DataWriter.WriteInt64Async)

ЗаписьДанных (DataWriter)

ЗаписатьЦелое64Асинх (WriteInt64Async)

Доступен, начиная с версии 8.3.18.

Синтаксис:
ЗаписатьЦелое64Асинх(<Число>, <ПорядокБайтов>)
Параметры:

<Число> (обязательный)
Тип: Число.
Целое число, которое будет записано в целевой поток. Значение числа должно находиться в диапазоне от 0 до 2^64-1.

<ПорядокБайтов> (необязательный)
Тип: ПорядокБайтов.
Порядок байтов, который будет использован для кодировки числа при записи. Если не установлен, то будет использован порядок байтов, заданный для текущего экземпляра объекта ЗаписьДанных.
Значение по умолчанию: Неопределено.
Возвращаемое значение:
Тип: Обещание.
Результат выполнения обещания - Неопределено.
Описание:

Асинхронная функция. Записывает целое 64-битное число в целевой поток.

Доступность:

Тонкий клиент, толстый клиент.

См. также:
ЗаписьДанных, метод НачатьЗаписьЦелого64
ЗаписьДанных, метод ЗаписатьЦелое64

Использование в версии:

Доступен, начиная с версии 8.3.18.

Методическая информация

Практические примеры

Асинхронно записать и прочитать четыре числовых поля по порядку

Полный клиентский обработчик использует Ждать для каждой операции. Чтение начинается только после закрытия записи и получения данных.

Где и как запускать

Модуль пустой управляемой формы учебной внешней обработки; тонкий или толстый клиент Windows. Вставьте весь модуль. Это не серверный код.

Подготовка

  1. Создайте учебную внешнюю обработку с пустой управляемой основной формой. Создайте команду УчебныйПример и кнопку этой команды.

  2. В свойстве команды Действие выберите процедуру УчебныйПример. Вставьте полный приведённый модуль формы.

  3. Откройте EPF в тонком или толстом клиенте Windows и нажмите кнопку. Не переносите Ждать и Асинх в серверный общий модуль.

  4. Пример работает только со своими данными в памяти; записи в базу, файлы и сеть нет.

  5. Имя кнопки формы должно быть КнопкаУчебныйПример. Если назвали иначе, переименуйте кнопку в дереве элементов формы.

  6. Доступность меняется у кнопки, не у команды. На время ожидания кнопка отключена для защиты от повторного запуска.

&НаКлиенте
Асинх Процедура УчебныйПример(Команда)
    Элементы.КнопкаУчебныйПример.Доступность = Ложь;
    Поток = Новый ПотокВПамяти;
    Запись = Новый ЗаписьДанных(Поток);
    Попытка
        Ждать Запись.ЗаписатьБайтАсинх(7);
        Ждать Запись.ЗаписатьЦелое16Асинх(4660, ПорядокБайтов.LittleEndian);
        Ждать Запись.ЗаписатьЦелое32Асинх(16909060, ПорядокБайтов.BigEndian);
        Ждать Запись.ЗаписатьЦелое64Асинх(4294967296, ПорядокБайтов.LittleEndian);
        Ждать Запись.СброситьБуферыАсинх();
        Ждать Запись.ЗакрытьАсинх();
    Исключение
        Запись.Закрыть();
        Поток.Закрыть();
        Элементы.КнопкаУчебныйПример.Доступность = Истина;
        ВызватьИсключение;
    КонецПопытки;
    Данные = Поток.ЗакрытьИПолучитьДвоичныеДанные();
    Чтение = Новый ЧтениеДанных(Данные);
    Попытка
        Версия = Ждать Чтение.ПрочитатьБайтАсинх();
        Поле16 = Ждать Чтение.ПрочитатьЦелое16Асинх(ПорядокБайтов.LittleEndian);
        Поле32 = Ждать Чтение.ПрочитатьЦелое32Асинх(ПорядокБайтов.BigEndian);
        Поле64 = Ждать Чтение.ПрочитатьЦелое64Асинх(ПорядокБайтов.LittleEndian);
        Конец = Ждать Чтение.ПрочитатьБайтАсинх();
        Сообщить(Данные.Размер() = 15);
        Сообщить(Версия = 7 И Поле16 = 4660 И Поле32 = 16909060 И Поле64 = 4294967296);
        Сообщить(Конец = Неопределено);
        Ждать Чтение.ЗакрытьАсинх();
    Исключение
        Чтение.Закрыть();
        Элементы.КнопкаУчебныйПример.Доступность = Истина;
        ВызватьИсключение;
    КонецПопытки;
    Элементы.КнопкаУчебныйПример.Доступность = Истина;
КонецПроцедуры

Разбор по шагам

  1. Асинх ставится у клиентской процедуры. Ждать извлекает результат обещания; без него переменная содержала бы Обещание, а не число.

  2. Четыре записи выполняем последовательно, не запускаем параллельные операции над одним потоком.

  3. Сбрасываем буферы, закрываем запись, затем закрываем свой ПотокВПамяти с получением данных.

  4. Читаем поля теми же ширинами и порядками байтов, после них проверяем конец дополнительным байтовым чтением.

  5. Синхронное закрытие в исключении допустимо именно в указанном клиенте Windows; веб-клиент для этого модуля не заявлен.

Как проверить результат

  1. Три контрольных сообщения Истина; пакет 15 байтов, версия 7.

  2. После окончания/обрабатываемой ошибки кнопка снова доступна. В рабочую базу записи нет.

Ожидаемый результат

Завершён последовательный асинхронный цикл записи и чтения учебного пакета.

На что обратить внимание

  1. Асинхронные методы этой группы доступны на клиенте, не на сервере.

  2. Асинх не делает операции потокобезопасными. Два одновременных чтения одного экземпляра не нужны.

  3. Не используйте пример как универсальную реализацию для браузера: подготовка ограничена Windows-клиентом.

Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.

Не хотите разбираться сами?

Адаптируем это решение под вашу базу. Оценка бесплатно.

Оставить задачу

1С, 1С:Предприятие — товарные знаки ООО «1С». Сайт не является официальным представительством фирмы «1С» и не аффилирован с ней.