Содержание:
1. Автоматическая сериализация и десериализация объектов XDTO
1. Автоматическая сериализация и десериализация объектов XDTO
В настоящее время достаточно часто требуется организовать взаимодействие 1С с различными внешними и/или внутренними приложениями как на базе платформы 1С, так и сторонних вендоров.
«Из коробки» платформа уже имеет ряд встроенных механизмов, позволяющих реализовать обмен, но в данной статье мы рассмотрим один из вариантов работы с форматом файла JSON.
Первые встроенные средства по работе с данным форматом (потоковая запись/чтение и сериализация примитивных типов и коллекций) появились в платформе начиная с релиза 8.3.6.1977 (29.04.2015), а в релизе 8.3.7.1759 (19.11.2015) появилась автоматическая сериализация и десериализация объектов XDTO.
2. Работа с объектами XDTO
Рассматриваемый механизм в первую очередь используется при обмене данными между информационными системами, написанными на платформе системы 1С: Предприятие, но также подходит для обмена с внешними системами, готовыми принимать типы данных «1С: Предприятие», т.к. полностью соответствует JSON-стандарту, а потому не накладывает никаких ограничений на его использование для обмена с другими системами.
Чтобы выполнить запись XDTO-объекта в формате файла JSON, необходимо использовать (в простейшем случае) следующие объекты:
1. Объект, поддерживающий преобразование в/из XDTO.
2. Сериализатор XDTO-объектов ‑ СериализаторXDTO;
3. Объект, обеспечивающий низкоуровневую запись данных в формате JSON – ЗаписьJSON.
4. Объект настроек сериализации НастройкиСериализацииJSON.
Источником данных послужит справочник «Демо: Договоры контрагентов» (Демонстрационная конфигурация «Библиотека стандартных подсистем», редакция 3.1), который имеет следующий вид:
Рассмотрим пример сериализации данных типа СправочникОбъект:
В результате будет получен файл JSON следующего содержания:
Следует обратить внимание на то, что сериализация значений типа Дата выполняется только в формате ISO и не управляется при записи данных, а также не поддерживается использование функции преобразования при операции сериализации.
Рассмотрим пример чтения файла JSON, полученного ранее в примере сериализации справочника «Демо: Договоры контрагентов»:
В приведённом примере следует обратить внимание на явное указание типа десериализуемых данных в методе ПрочитатьJSON, т.к. при выполнении JSON-сериализации значение параметра НазначениеТипаXML было по умолчанию установлено в значение Неявное (см. описание метода ЗаписатьJSON в синтакс-помощнике).
При обмене данными между прикладными программными решениями с помощью объектов XDTO может потребоваться выполнить некоторую предобработку данных, которые поступают в пакете обмена. Например, заменить любое значение некоторого типа на фиксированное значение того же типа (т.е. нельзя изменить тип считываемого объекта!), кроме служебных свойств, используемых конфигурацией системы «1С: Предприятие» (например, #type, #ns и т.д.). Для этого можно воспользоваться функцией восстановления:
В результате десериализации в прочитанном объекте у реквизита ДатаНачалаДействия будет установлено заданное нами значение:
ДатаНачалаДействия
С полным перечнем механизмов по работе с JSON-форматом можно ознакомиться в руководстве для разработчиков на ИТС.
Специалист компании "Кодерлайн"
Алексей Болдонов