ЧтениеДанных.ПрочитатьСтрокуАсинх

Методы · ReadLineAsync

Асинхронная функция. Выполняет чтение строки текста до разделителя строки. Если разделитель не найден, чтение выполняется до конца потока. Если разделитель строки не задан явно, используется разделитель строки, указанный для данного экземпляра объекта ЧтениеДанных.

Синтаксис

ПрочитатьСтрокуАсинх(<КодировкаТекста>, <РазделительСтрок>)
Полное описание, параметры и ограничения

ЧтениеДанных.ПрочитатьСтрокуАсинх (DataReader.ReadLineAsync)

ЧтениеДанных (DataReader)

ПрочитатьСтрокуАсинх (ReadLineAsync)

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

Синтаксис:
ПрочитатьСтрокуАсинх(<КодировкаТекста>, <РазделительСтрок>)
Параметры:

<КодировкаТекста> (необязательный)
Тип: КодировкаТекста, Строка.
Кодировка текста. Если не установлена, используется кодировка, заданная для текущего экземпляра ЧтениеДанных.
Значение по умолчанию: Неопределено.

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

Асинхронная функция. Выполняет чтение строки текста до разделителя строки. Если разделитель не найден, чтение выполняется до конца потока.
Если разделитель строки не задан явно, используется разделитель строки, указанный для данного экземпляра объекта ЧтениеДанных.

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

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

Примечание:
По умолчанию, в качестве разделителя строки выступают следующие строки:
ВК,

ПС,

ВК,

ВК + ПС.

См. также:
ЧтениеДанных, метод НачатьЧтениеСтроки
ЧтениеДанных, метод ПрочитатьСтроку
ЧтениеДанных, метод Прочитать

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

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

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

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

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

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

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

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

Подготовка

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

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

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

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

&НаКлиенте
Асинх Процедура УчебныйПример(Команда)
    Поток = Новый ПотокВПамяти;
    Запись = Новый ЗаписьДанных(Поток, КодировкаТекста.UTF8, , Символы.ПС);
    Попытка
        Ждать Запись.ЗаписатьСтрокуАсинх("Книга");
        Ждать Запись.ЗаписатьСимволыАсинх("Ручка");
        Ждать Запись.ЗакрытьАсинх();
    Исключение
        Запись.Закрыть();
        Поток.Закрыть();
        ВызватьИсключение;
    КонецПопытки;
    Данные = Поток.ЗакрытьИПолучитьДвоичныеДанные();
    Чтение = Новый ЧтениеДанных(Данные, КодировкаТекста.UTF8, , Символы.ПС);
    Попытка
        Сообщить(Чтение.РазделительСтрок = Символы.ПС);
        ПерваяСтрока = Ждать Чтение.ПрочитатьСтрокуАсинх();
        Остаток = Ждать Чтение.ПрочитатьСимволыАсинх();
        Сообщить(ПерваяСтрока = "Книга");
        Сообщить(Остаток = "Ручка");
        Ждать Чтение.ЗакрытьАсинх();
    Исключение
        Чтение.Закрыть();
        ВызватьИсключение;
    КонецПопытки;
КонецПроцедуры

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

  1. Конструкторы явно используют UTF-8 и разделитель ПС. BOM не добавляется по умолчанию.

  2. Первый ожидаемый вызов пишет Книга и ПС, второй — только пять букв Ручка без добавленного ПС.

  3. После закрытия записи создаём новое чтение полученных данных.

  4. ПрочитатьСтрокуАсинх возвращает после Ждать строку Книга без разделителя, а ПрочитатьСимволыАсинх — остаток Ручка.

  5. Все объекты локальны одному запуску: повторный клик не переиспользует чужую позицию чтения.

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

  1. Все три сравнения Истина; первая строка Книга, остаток Ручка.

  2. Повторный запуск выдаёт такой же результат и не создаёт файлов.

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

Получены именно строки, а не объекты обещаний; граница между записями сохранена.

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

  1. Не вставляйте клиентскую Асинх процедуру внутрь другой процедуры.

  2. Успешная запись в память не означает отправку в сервис или сохранение в базу.

  3. При работе с текстом всегда согласовывайте кодировку обеих сторон.

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

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

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

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

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