Инициализирует объект для вывода результирующего XML в строку.
Синтаксис
УстановитьСтроку(<ТипКодировки>)УстановитьСтроку(<ПараметрыЗаписи>)Примеры платформы
ЗаписьXML = Новый ЗаписьXML;
ЗаписьXML.УстановитьСтроку();
...
СтрXML = ЗаписьXML.Закрыть();Полное описание, параметры и ограничения
ЗаписьXML.УстановитьСтроку (XMLWriter.SetString)
ЗаписьXML (XMLWriter)
УстановитьСтроку (SetString)
Доступен, начиная с версии 8.1.
Вариант синтаксиса: По типу кодировки
Синтаксис:
УстановитьСтроку(<ТипКодировки>)
Параметры:
<ТипКодировки> (необязательный)
Тип: Строка.
В качестве типа кодировки может быть указано имя одной из возможных кодировок. Это никак не влияет на формируемую строку. Но если будет записано объявление XML-документа, то объявление будет содержать атрибут 'encoding', имеющий соответствующее значение. Если же в качестве параметра указана пустая строка или ничего не указано, то атрибут 'encoding' не будет присутствовать в объявлении XML-документа.
Поддерживаемые коды кодировок:
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
Вариант синтаксиса: С параметрами записи
Синтаксис:
УстановитьСтроку(<ПараметрыЗаписи>)
Параметры:
<ПараметрыЗаписи> (необязательный)
Тип: ПараметрыЗаписиXML.
Параметры записи XML.
Описание варианта метода:
Позволяет указать параметры записи XML.
Описание:
Инициализирует объект для вывода результирующего XML в строку.
Доступность:
Тонкий клиент, мобильный клиент, сервер, толстый клиент, внешнее соединение, мобильное приложение (клиент), мобильное приложение (сервер), мобильный автономный сервер.
Пример:
ЗаписьXML = Новый ЗаписьXML;
ЗаписьXML.УстановитьСтроку();
// Запись документа XML
...
СтрXML = ЗаписьXML.Закрыть();
Использование в версии:
Доступен, начиная с версии 8.1.
Методическая информация
Практические примеры
Передать учебный контакт через XML в памяти
Тип ДанныеКонтакта поддерживает XML-сериализацию. Проверяем имя и собственный почтовый элемент; мобильная синхронизация при этом не выполняется.
Где и как запускать
Учебная база: создайте серверный общий модуль УчебныеЗадачи (флаг Сервер). Код без директив вставьте в тело процедуры ВыполнитьПример() Экспорт. Вызовите её из серверного обработчика команды учебной обработки. Не запускайте в рабочей базе.
Подготовка
Учебная база, серверный контекст. ДанныеКонтакта и связанные типы доступны на сервере: для этих задач не нужен мобильный телефон, разрешение на контакты или настоящая адресная книга.
Вся персона вымышлена: Учебный Ученик Тестович, организация Учебный магазин. Телефоны 000-000-01/02 — демонстрационные строки, адрес student@example.invalid учебный. Ничего не отправляйте и не звоните.
Код создаёт объекты только в памяти. Он не вызывает менеджер контактов устройства, синхронизацию, геокодирование, интернет или запись справочника Партнеры/КонтактныеЛица.
Контакт = Новый ДанныеКонтакта;
Контакт.Имя = "Учебный";
Контакт.Фамилия = "Ученик";
Контакт.Отчество = "Тестович";
Контакт.АдресаЭлектроннойПочты = Новый Массив;
Контакт.АдресаЭлектроннойПочты.Добавить(Новый ЭлементДанныхКонтакта(ТипАдресаЭлектроннойПочтыДанныхКонтакта.Рабочий, "student@example.invalid"));
Сообщить(XMLСтрока(Контакт.Имя) = "Учебный");
Сериализатор = Новый СериализаторXDTO(ФабрикаXDTO);
Запись = Новый ЗаписьXML;
Запись.УстановитьСтроку();
Попытка
Сериализатор.ЗаписатьXML(Запись, Контакт, НазначениеТипаXML.Явное);
СтрокаXML = Запись.Закрыть();
Исключение
Запись.Закрыть();
ВызватьИсключение;
КонецПопытки;
Чтение = Новый ЧтениеXML;
Чтение.УстановитьСтроку(СтрокаXML);
Попытка
Чтение.ПерейтиКСодержимому();
Копия = Сериализатор.ПрочитатьXML(Чтение, Тип("ДанныеКонтакта"));
Исключение
Чтение.Закрыть();
ВызватьИсключение;
КонецПопытки;
Чтение.Закрыть();
Сообщить(ТипЗнч(Копия) = Тип("ДанныеКонтакта"));
Сообщить(Копия.Имя = "Учебный");
Сообщить(Копия.Фамилия = "Ученик");
Сообщить(Копия.Отчество = "Тестович");
Сообщить(Копия.АдресаЭлектроннойПочты.Количество() = 1);
Сообщить(Копия.АдресаЭлектроннойПочты[0].Значение = "student@example.invalid");Разбор по шагам
Новый контакт имеет собственные имя и почтовый элемент с системным типом Рабочий.
XMLСтрока используется только для простого строкового поля имени: это не сериализация составного контакта.
Для всей карточки создаём СериализаторXDTO со стандартной ФабрикаXDTO, пишем с явным типом и читаем в ДанныеКонтакта. Чтение и запись закрываем также при ошибке.
В копии проверяем тип, три части имени, количество и содержимое почты. Устройство и менеджер синхронизации не вызываются.
Как проверить результат
Семь сообщений Истина.
XML остаётся в строке памяти: ни файл, ни внешний сервис не нужны.
Ожидаемый результат
Получена отдельная XML-копия собственного учебного контакта.
На что обратить внимание
Это собственные учебные объекты, не контакт, уже полученный от операционной системы или сохранённый на устройстве.
XML-сериализация платформы не является универсальным vCard или JSON-контрактом сторонней CRM.
Для входного неизвестного XML необходимы отдельные ограничения размера и согласованный контракт; этот пример читает только свой источник.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.
Перекодировать свой XML в Fast Infoset и вернуть обычный XML
ЗаписатьТекущий переносит текущий узел reader, не продвигая reader. Внешние файлы, неизвестные DTD и реальные ссылки не используются.
Где и как запускать
Учебная база: создайте серверный общий модуль УчебныеЗадачи (флаг Сервер). Код без директив вставьте в тело процедуры ВыполнитьПример() Экспорт. Вызовите её из серверного обработчика команды учебной обработки. Не запускайте в рабочей базе.
Подготовка
Учебная база на платформе 8.5.1.1343. Создайте серверный общий модуль УчебныеЗадачи и процедуру ВыполнитьПример() Экспорт; код урока без директив вставляйте в её тело. Каждый урок запускайте отдельно.
Все документы создаются из собственных строк и чисел в памяти. Не подставляйте файл XML, бинарный архив обмена, ссылки или данные рабочей базы вместо учебных значений.
Fast Infoset — двоичное представление XML. Для чтения нужен соответствующий reader, а не преобразование байтов в UTF-8-строку. Это не формат API Avito и не автоматическое сжатие произвольного JSON.
Запуск в 1С ещё не подтверждён; выполните контрольные проверки в учебной базе. Не сравнивайте точные байты двух кодировщиков: в заданиях проверяется восстановленная структура и значения.
XMLИсточника = "<products><product code=""A-01"">Книга</product><product code=""B-02"">Ручка</product></products>";
ИсходноеЧтение = Новый ЧтениеXML;
ИсходноеЧтение.УстановитьСтроку(XMLИсточника);
Запись = Новый ЗаписьFastInfoset;
Запись.УстановитьДвоичныеДанные();
Попытка
Пока ИсходноеЧтение.Прочитать() Цикл
Запись.ЗаписатьТекущий(ИсходноеЧтение);
КонецЦикла;
Данные = Запись.Закрыть();
Исключение
Запись.Закрыть();
ИсходноеЧтение.Закрыть();
ВызватьИсключение;
КонецПопытки;
ИсходноеЧтение.Закрыть();
Если ТипЗнч(Данные) <> Тип("ДвоичныеДанные") Тогда
ВызватьИсключение "Не получен собственный двоичный XML";
КонецЕсли;
Чтение = Новый ЧтениеFastInfoset;
Чтение.УстановитьДвоичныеДанные(Данные);
ТекстоваяЗапись = Новый ЗаписьXML;
ТекстоваяЗапись.УстановитьСтроку();
Попытка
Пока Чтение.Прочитать() Цикл
ТекстоваяЗапись.ЗаписатьТекущий(Чтение);
КонецЦикла;
XMLРезультата = ТекстоваяЗапись.Закрыть();
Исключение
ТекстоваяЗапись.Закрыть();
Чтение.Закрыть();
ВызватьИсключение;
КонецПопытки;
Чтение.Закрыть();
Сообщить(Данные.Размер() > 0);
Сообщить(СтрНайти(XMLРезультата, "Книга") > 0);
Сообщить(СтрНайти(XMLРезультата, "Ручка") > 0);
Сообщить(XMLРезультата);Разбор по шагам
Первый reader разбирает собственную XML-строку; writer пишет его текущие узлы в бинарное представление.
В каждом цикле Прочитать вызывается ровно один раз условием цикла, ЗаписатьТекущий сам не перемещает источник.
Для обратного шага используем ЧтениеFastInfoset и обычный ЗаписьXML с приёмником-строкой.
Каждый reader/writer закрывается на успешном и ошибочном пути; проверяем сохранение собственных кириллических подписей.
Как проверить результат
Три сравнения Истина: непустые байты и две подписи в восстановленном XML.
Выводится обычный текст XML с двумя товарами. Пробелы, декларацию и стиль кавычек не считаем побайтовым эталоном.
Ожидаемый результат
Выполнен учебный мост между текстовым и двоичным представлением XML.
На что обратить внимание
Не используйте преобразование произвольных бинарных байтов в строку вместо правильного reader.
Проверка подстрок в уроке не является полной валидацией внешнего XML: реальный контракт требует проверки элементов, атрибутов и допустимых значений.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.