ЗаписьТекста.На основании потока

Конструкторы

Устанавливает поток для записи. Аналогичен методу Открыть.

Синтаксис

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

ЗаписьТекста.На основании потока

ЗаписьТекста (TextWriter)

На основании потока

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

Синтаксис:
Новый ЗаписьТекста(<Поток>, <Кодировка>, <РазделительСтрок>, <КонвертируемыйРазделительСтрок>, <ЗаписатьBOM>)
Параметры:

<Поток> (обязательный)
Тип: Поток, ПотокВПамяти, ФайловыйПоток.
Поток для записи.

<Кодировка> (необязательный)
Тип: КодировкаТекста, Строка.
Кодировка записываемого текста (согласована с текстовым документом).

Кодировка может быть задана как в виде значения перечисления КодировкаТекста, так и в виде строки с указанием названия кодировки.
Поддерживаемые кодировки:
UTF-8

UTF-16

UTF-16BE

UTF-16LE

ISO-8859-1

US-ASCII

gb18030

iso-8859-2

iso-8859-3

iso-8859-4

iso-8859-5

iso-8859-6

iso-8859-7

iso-8859-8

iso-8859-9

iso-8859-13

iso-8859-15

Shift_JIS

EUC-JP

Big5

Big5-HKSCS

GBK

GB2312

GB_2312-80

EUC-KR

KSC_5601

windows-949

windows-874

cp866

KOI8-R

KOI8-U

windows-1250

windows-1251

windows-1252

windows-1253

windows-1254

windows-1255

windows-1256

windows-1257

windows-1258

macintosh

x-mac-cyrillic

ISO-2022-JP

ISO-2022-KR

ISO-2022-CN

ISO-2022-CN-EXT

HZ-GB-2312

Значение по умолчанию: UTF8.

<РазделительСтрок> (необязательный)
Тип: Строка.
Определяет строку, разделяющую строки в потоке.
Значение по умолчанию: ПС.

<КонвертируемыйРазделительСтрок> (необязательный)
Тип: Строка.
Определяет разделение строк в потоке для конвертации в стандартный перевод строк ПС.
Значение по умолчанию: ВК + ПС.

<ЗаписатьBOM> (необязательный)
Тип: Булево.
Если в начало потока требуется записать метку порядка байтов (BOM) для используемой кодировки текста, то данный параметр должен иметь значение Истина.
Значение по умолчанию: Ложь.
Описание:

Устанавливает поток для записи. Аналогичен методу Открыть.

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

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

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

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

Записать и прочитать UTF-8 в потоке памяти

Обмен текстом без файла: запись в ПотокВПамяти, позиционирование в начало и чтение через ЧтениеТекста.

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

Учебная база: создайте серверный общий модуль УчебныеЗадачи (флаг Сервер). Код без директив вставьте в тело процедуры ВыполнитьПример() Экспорт. Вызовите её из серверного обработчика команды учебной обработки. Не запускайте в рабочей базе.

Подготовка

  1. Внешние файлы и настройки конфигурации не нужны.

  2. Используйте конструктор по потоку; его пятый параметр — ЗаписатьBOM, а не Дописывать из файлового конструктора.


Поток = Новый ПотокВПамяти;
Запись = Неопределено;
Чтение = Неопределено;
Попытка
    Запись = Новый ЗаписьТекста(Поток, КодировкаТекста.UTF8, Символы.ПС, Символы.ВК + Символы.ПС, Ложь);
    Запись.Записать("Книга");
    Запись.Закрыть();
    Запись = Неопределено;
    Поток.Перейти(0, ПозицияВПотоке.Начало);
    Чтение = Новый ЧтениеТекста(Поток, КодировкаТекста.UTF8);
    Текст = Чтение.Прочитать();
    Чтение.Закрыть();
    Чтение = Неопределено;
    Сообщить(Текст);
    Если Текст <> "Книга" Тогда
        ВызватьИсключение "Текст не совпал";
    КонецЕсли;
    Данные = Поток.ЗакрытьИПолучитьДвоичныеДанные();
    Поток = Неопределено;
    Сообщить(Данные.Размер());
Исключение
    Если Запись <> Неопределено Тогда
        Запись.Закрыть();
    КонецЕсли;
    Если Чтение <> Неопределено Тогда
        Чтение.Закрыть();
    КонецЕсли;
    Если Поток <> Неопределено Тогда
        Поток.Закрыть();
    КонецЕсли;
    ВызватьИсключение;
КонецПопытки;

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

  1. Создаём поток памяти и записываем UTF-8 без BOM и без перевода строки.

  2. Закрываем текстовую запись; поток остаётся отдельным объектом. Перемещаем его позицию на ноль.

  3. ЧтениеТекста получает тот же поток и возвращает текст целиком.

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

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

  1. Вывод: Книга и размер 10 байтов.

  2. Замените Ложь на Истина в конструкторе записи: UTF-8 BOM добавит три байта, ожидаемый размер станет 13.

  3. Уберите Перейти: чтение начнётся в конце потока и исходный текст не получится.

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

Пять букв успешно прочитаны обратно; UTF-8 без BOM занимает десять байтов.

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

  1. Закрытие текстового чтения по потоку не закрывает сам поток: его жизненным циклом управляйте отдельно.

  2. После ЗакрытьИПолучитьДвоичныеДанные нельзя повторно обращаться к закрытому потоку.

  3. Не путайте перегрузки конструктора: пятый аргумент файлового и потокового вариантов имеет разный смысл.

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

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

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

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

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