Тип: Строка. Конвертируемый разделитель строк. Этот параметр влияет на поведение метода ЗаписатьСимволы.
Полное описание, параметры и ограничения
ЗаписьДанных.КонвертируемыйРазделительСтрок (DataWriter.ConvertibleSplitterOfLines)
ЗаписьДанных (DataWriter)
КонвертируемыйРазделительСтрок (ConvertibleSplitterOfLines)
Доступен, начиная с версии 8.3.9.
Использование:
Чтение и запись.
Описание:
Тип: Строка.
Конвертируемый разделитель строк. Этот параметр влияет на поведение метода ЗаписатьСимволы.
Доступность:
Тонкий клиент, веб-клиент, сервер, толстый клиент, внешнее соединение.
См. также:
ЗаписьДанных, метод ЗаписатьСимволы
Использование в версии:
Доступен, начиная с версии 8.3.9.
Методическая информация
Практические примеры
Отличить запись символов от записи строки с разделителем
Создаём в памяти текст Книга/Ручка в UTF-8. У строки есть завершающий перевод строки; у простого набора символов его нет.
Где и как запускать
Учебная база: создайте серверный общий модуль УчебныеЗадачи (флаг Сервер). Код без директив вставьте в тело процедуры ВыполнитьПример() Экспорт. Вызовите её из серверного обработчика команды учебной обработки. Не запускайте в рабочей базе.
Подготовка
Используйте отдельную учебную базу. Фрагмент без директив вставьте в тело серверной процедуры ВыполнитьПример() Экспорт общего модуля УчебныеЗадачи.
Все исходные байты создаются самим примером в памяти. Файлы, сеть, справочники и документы не нужны.
Запускайте задачи отдельно. После закрытия ЧтениеДанных/ЗаписьДанных не используйте этот экземпляр повторно.
Поток = Новый ПотокВПамяти;
Запись = Новый ЗаписьДанных(Поток, КодировкаТекста.UTF8, , Символы.ПС, Символы.ВК + Символы.ПС, Ложь);
Попытка
Сообщить(Запись.КодировкаТекста = КодировкаТекста.UTF8);
Сообщить(Запись.РазделительСтрок = Символы.ПС);
Сообщить(Запись.КонвертируемыйРазделительСтрок = Символы.ВК + Символы.ПС);
Запись.ЗаписатьСимволы("Книга" + Символы.ПС);
Запись.ЗаписатьСтроку("Ручка");
Исключение
Запись.Закрыть();
Поток.Закрыть();
ВызватьИсключение;
КонецПопытки;
Запись.Закрыть();
Данные = Поток.ЗакрытьИПолучитьДвоичныеДанные();
СыройТекст = ПолучитьСтрокуИзДвоичныхДанных(Данные, КодировкаТекста.UTF8);
Сообщить(СыройТекст = "Книга" + Символы.ВК + Символы.ПС + "Ручка" + Символы.ПС);
Чтение = Новый ЧтениеДанных(Данные, КодировкаТекста.UTF8, , , Символы.ВК + Символы.ПС);
Попытка
Сообщить(Чтение.КодировкаТекста = КодировкаТекста.UTF8);
Сообщить(Чтение.КонвертируемыйРазделительСтрок = Символы.ВК + Символы.ПС);
Нормализованный = Чтение.ПрочитатьСимволы();
Сообщить(Нормализованный = "Книга" + Символы.ПС + "Ручка" + Символы.ПС);
Исключение
Чтение.Закрыть();
ВызватьИсключение;
КонецПопытки;
Чтение.Закрыть();
ЧтениеСтрок = Новый ЧтениеДанных(Данные, КодировкаТекста.UTF8);
Попытка
Сообщить(ЧтениеСтрок.ПрочитатьСтроку() = "Книга");
Сообщить(ЧтениеСтрок.ПрочитатьСтроку() = "Ручка");
Исключение
ЧтениеСтрок.Закрыть();
ВызватьИсключение;
КонецПопытки;
ЧтениеСтрок.Закрыть();Разбор по шагам
В конструкторе ЗаписьДанных явно указаны кодировка UTF-8, разделитель для ЗаписатьСтроку ПС, конвертируемый разделитель ВК+ПС и отсутствие BOM.
ЗаписатьСимволы не добавляет разделитель, но содержащийся в переданном тексте ПС конвертируется в ВК+ПС.
ЗаписатьСтроку записывает текст и добавляет РазделительСтрок. Поэтому после Ручка будет один ПС.
ПрочитатьСимволы нормализует ВК+ПС обратно в ПС; полученную строку проверяем целиком.
Для построчного чтения создаём новый экземпляр с начала данных. ПрочитатьСтроку возвращает текст без завершающего разделителя.
Как проверить результат
Сырые данные содержат Книга + ВК+ПС + Ручка + ПС; после нормализации оба разделителя — ПС.
Два построчных вызова возвращают Книга и Ручка; все сравнения Истина.
Ожидаемый результат
Показано, где возникают разделители и как нормализация влияет на текст.
На что обратить внимание
ЗаписатьСимволы — не побайтовая запись: преобразование переводов строк предусмотрено API.
Позиция чтения продвигается. Для повторного разбора от начала создаём новый ЧтениеДанных.
Для точного двоичного формата передавайте ДвоичныеДанные/БуферДвоичныхДанных, а не текст с неявной конвертацией.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.