Часто в процессе разработки перед нами встает задача быстрой передачи данных объекта 1С во внешнюю систему. Самым универсальным форматом для таких целей традиционно считается XML. Сегодня мы разберем, как максимально просто и быстро превратить документ 1С в XML-представление, минуя запись на жесткий диск.
Для решения этой задачи мы воспользуемся механизмом XDTO (XML Data Transfer Objects). Это мощный встроенный инструмент платформы, который берет на себя всю рутинную работу по обходу полей объекта и формированию структуры XML-файла. Вся магия кроется в использовании СериализаторXDTO.
Многие разработчики ошибочно полагают, что для получения XML нужно сначала создавать физический файл. Однако мы можем работать напрямую с оперативной памятью, используя возможности объекта ЗаписьXML.
Давайте разберем процесс превращения вашего документа в строку XML шаг за шагом. Нам не потребуется создание громоздких обработок — достаточно нескольких строчек кода, выполняющих последовательные действия:
УстановитьСтроку().Посмотрим на пример кода, который реализует эту задачу:
// Предположим, у нас есть ссылка на документ
ДокументСсылка = Документы.РеализацияТоваровУслуг.НайтиПоНомеру("000000001", ТекущаяДата());
ОбъектДокумента = ДокументСсылка.ПолучитьОбъект();
// 1. Создаем объект записи XML
ЗаписьXML = Новый ЗаписьXML;
// 2. Устанавливаем вывод в строку (в оперативную память)
ЗаписьXML.УстановитьСтроку();
// 3. Выполняем сериализацию с помощью СериализаторXDTO
СериализаторXDTO.ЗаписатьXML(ЗаписьXML, ОбъектДокумента);
// 4. Получаем готовую XML-строку
РезультатXML = ЗаписьXML.Закрыть();
Главное преимущество данного подхода — скорость разработки. СериализаторXDTO автоматически учитывает структуру метаданных вашей конфигурации. Он «знает», какие реквизиты есть у документа, какие типы данных у табличных частей, и самостоятельно прописывает теги XML, соответствующие структуре базы данных.
Использование метода УстановитьСтроку() позволяет передавать сформированные данные напрямую в веб-сервисы, HTTP-сервисы или сохранять их в переменные, не создавая лишних временных файлов на диске сервера. Это избавляет нас от необходимости очистки файловой системы и повышает производительность обмена данными.
Несмотря на то, что это решение выглядит как «пара строк кода», важно учитывать несколько нюансов, чтобы ваша интеграция прошла успешно:
СериализаторXDTO в XML попадет всё содержимое объекта. Это удобно для обмена между базами 1С, но если вы готовите файл для стороннего сайта, возможно, вам придется отфильтровать лишние служебные поля (ссылки, версии, метаданные).JSON. В 1С 8.3 реализована похожая механика для формата JSON, которая также работает очень быстро и часто предпочтительнее для веб-интеграций.Используя этот метод, вы сможете значительно сократить время на написание кода интеграции и сделать обмен данными между системами более надежным и структурированным.