Каталог решений - Описание формата 1С JDTO (JSON data transfer object)

Описание формата 1С JDTO (JSON data transfer object)

Описание формата 1С JDTO (JSON data transfer object)

В наличии

Формат 1С JDTO может быть полезен для интеграции информационных баз 1С между собой, а также 1С с внешними системами. Публикация имеет своей целью помочь в освоении этого формата для обмена данными.

Категория:

Описание

Платформа 1С:Предприятие 8 имеет встроенный механизм сериализации/десериализации своих объектов в формат JSON.

Сериализация:

  USD = Справочники.Валюты.НайтиПоКоду("840");
  	
  Объект = USD.ПолучитьОбъект();
  	
  ЗаписьJson = Новый ЗаписьJSON();
  ЗаписьJson.УстановитьСтроку();
  СериализаторXDTO.ЗаписатьJSON(ЗаписьJson, Объект, НазначениеТипаXML.Явное);
  
  JSON = ЗаписьJson.Закрыть();

Получаемый таким образом JSON можно использовать для обмена данными, как между информационными базами 1С, так и для передачи во внешние системы.

Десериализация:

  ЧтениеJSON = Новый ЧтениеJSON();
  ЧтениеJSON.УстановитьСтроку(JSON);
  		
  ОбъектДанных = СериализаторXDTO.ПрочитатьJSON(ЧтениеJSON);
  
  ОбъектДанных.ОбменДанными.Загрузка = Истина;
  ОбъектДанных.Записать();

При этом следует учитывать, что при загрузке JDTO в информационную базу 1С, имеющую отличную от загружаемого JSON схему данных, может возникать три типа ошибок:

1. Отсутствие соответствующего типа данных (не критичная):

Ошибка при вызове метода контекста (ПрочитатьJSON): Неизвестный тип

2. Несоответствие схемы XDTO (не критичная):

Ошибка при вызове метода контекста (ПрочитатьJSON): Ошибка преобразования данных XDTO

3. Несоответствие схемы XDTO (критичная !!! — вылетает платформа):

Недопустимое значение аргумента функции: [xdto — src\XDTOFactoryImpl.cpp (414)]

Третья ошибка тянется, судя по поиску в Интернет, ещё с платформы 8.2. Была обнаружена на версии 8.3.18.1433. Возникает в том случае, если тип значения реквизита стал составным. При загрузке однозначного типа в составной возникает вот такая ошибка. Например, в моём случае реквизит имел значение  одного перечисления, а затем к нему добавили ещё одно перечисление. Сериализатор XDTO поломался.

Важно также отметить, что порядок следования свойств объекта JDTO для 1С имеет значение.

Рассмотрим формат 1С JDTO (JSON data transfer object) более подробно на примере основных объектов 1С: перечислениях, справочниках, документах, регистрах сведений и накопления. Как правило в обмене данными с внешними системами используются именно они.

 

has been added to your cart:
Оформление заказа