15.11.2019 Вадим Хоменко 52031
Варианты работы с форматом данных JSON

Содержание

1.       История формата данных JSON

2.       Описание JSON для 1С 8.3

3.       Работа с JSON

4.       Особенности работы 1С JSON

 

В этой статье рассмотрим формат данных JSON. Что это за формат, когда он появился и где используется, зачем, а главное, как работать с программой 1С в нем? Поехали! 

 

1.    История формата данных JSON


Формат JSON, JavaScriptObjectNotation (в дословном переводе - «запись объектов ЯваСкрипта») был придуман Дугласом Крокфордом в 2002 году и в 2006-ом был официально стандартизирован как формат RFC 4627. Отчасти он схож с форматом XML 1С 8.3, но является более простым и легким в использовании.  

 

2.    Описание JSON для 1С 8.3.


JSON представляет собой текстовый формат данных, MIME-тип application/json.
Он может хранить примитивные типы данных, такие как строка, число и логические значения (булево, null). Значения представляются в виде многомерных структур {"ключ": "значение"} и массивов ["значение1", "значение2"]. Его можно легко прочитать и отредактировать, просто открыв файл в текстовом редакторе.  

 

3.    Работа с JSON


На сегодняшний день формат поддерживается всеми популярными браузерами. Широко применяется в веб-приложениях и для обмена данными между серверами посредством HTTP-соединений. Библиотеки для работы с JSON включены во все современные языки программирования, что делает его идеальным форматом обмена для программных продуктов, написанных на различных языках.


Теперь становится понятно, что такое JSON для 1С 8.3. Это:

- обмен данными с сайтом;

- взаимодействие с веб интерфейсами RESTAPI;

- обмен данными со сторонним программным обеспечением.


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

 

Есть несколько способов формирования файла JSON в 1С. Здесь мы рассмотрим три основных, которыми я и сам чаще всего пользуюсь. Также отмечу особенности каждого из них.


Способ 1. Объектный.
Он наиболее простой и использовался мной намного чаще других. Особенность его в формировании всего файла целиком, что при объемных данных даст снижение скорости обработки и больший расход памяти. Это надо учитывать!


Пример записи:




В результате имеем строку следующего формата:


{"Фамилия": "Петров",

"Имя": "Петр",

"АктивныйПользователь": true,

"Телефоны": [

123456,

"123456",

null]

}

 

Сразу видно, что сериализатор определил наличие структуры и массива, корректно распознал типы: булево (true), число (123456), строку ("123456") и Неопределено (null).

Пример чтения:




В результате получим обратно такие же данные:




Единственное, как видим, порядок элементов в структуре изменился, а в массиве – нет. Это обязательно нужно учитывать.

Способ 2. Потоковый.
Его отличие от первого в том, что при формировании файла данные обрабатываются потоком, а не помещаются в память целиком.



Пример записи того же JSON:




Как видим, потоковая запись занимает больше времени и выглядит не так красиво, как объектная.

Пример потокового чтения:      




Как видно, здесь показана лишь возможность обработки чтения. На самом деле, чтобы прочитать файл примера выше, необходимо написать намного больше кода, желательно используя итерацию для чтения массивов. Также нужно добавить код создания и заполнения структуры и массива. Вот почему я чаще пользуюсь именно объектной обработкой формата JSON.


Способ 3. Объектный через СериализаторXDTO.
Особенность способа в том, что СериализаторXDTO способен сериализовать объекты 1С. Поэтому данный способ можно использовать для передачи данных между базами 1С.


Пример записи объекта 1С:





Результат будет такой:
{

"#type": "jcfg:CatalogObject.Организации",

"#value": {

"Ref": "624aad03-5f82-11e4-8258-201a060dcd61",

"DeletionMark": false,

"Code": "000000001",

"Description": "Основнаяорганизация",

"ИНН": "123456789",

"ЮридическийАдрес": "город, улица, до",

"Телефон": "123456789",

"ОсновнойСчет": "624aad04-5f82-11e4-8258-201a060dcd61"

}

}

Пример чтения:




Как видно, обработка сериализатором такая же простая в коде, как и объектный способ 1.  

 

4.    Особенности работы 1С JSON


Если в процессе записи объектным способом будет передан неподдерживаемый тип данных, то возможно передать это значение в экспортную функцию для дополнительной обработки, задав ИмяФункцииПреобразования (например, ссылку на справочник преобразовать в его наименование).


Выглядит это так:

ЗаписатьJSON(ЗаписьJSON, Структура,, "ПреобразованиеЗначенийJSON", ЭтаФорма);

Аналогично при чтении JSON можно задать ИмяФункцииВосстановаления.

По сути, это напоминает работу с асинхронными методами, где в ОписанииОповещения передается имя и модуль обработки завершения.

 

Дата из 1С относится к неподдерживаемым типам данных JSON. Но все же для нее есть особые методы. Они схожи с обработчиками описанными выше, но с небольшим исключением.


При записи дата из 1С, всегда преобразовывается в строку, а формат преобразования задается в параметре НастройкаСериализации. Я на практике использовал только преобразование ISO, хотя есть ещеJavaScript иMicrosoft.




А вот при чтении необходимо будет задать ИменаСвойствСоЗначениямиДата и ОжидаемыйФорматДаты, вот так:
ОбъектИзJSON = ПрочитатьJSON(ЧтениеJSON, , "Дата", ФорматДатыJSON.ISO);

 

Вот и все тонкости работы с 1С JSON. Освоить его – это уже половина пути к погружению во все сферы, где данный формат применяется!


Специалист компании ООО «Кодерлайн» 

Вадим Хоменко.

Наши проекты

ООО «ЛукБелОйл»
ООО «ЛукБелОйл»

Отрасль:
Нефтегазовая отрасль

Внедренное типовое решение:

- Обследовании бизнес-процессов «Документооборот», «Казначейство и Бюджети...

Автоматизация интеграции с информсистемами клиентов на базе «1С:Предприятие 8. WMS Логистика. Управление складом»
ОАО «Фрейт Линк»

Отрасль:
Логистика и грузоперевозки

Внедренное типовое решение:
«1С:Предприятие 8. WMS Логистика. Управление складом»

– Управление складскими запасами;
– Оформление заказов покупателей;
– ...

Автоматизация производственного планирования нефтесервисной компании на базе 1С:ЕРП 2.0
ЗАО «Инвестгеосервис»

Отрасль:
Нефтесервис

Внедренное типовое решение:
1С:ERP Управление предприятием 2.0

- Блок планирования проектов (процессы объемно-календарного планирования пр...

Доработка конфигурации Заказчика «1С:Управление строительной организацией»
ЗАО «Стройтрансгаз»

Отрасль:
Проектирование

Внедренное типовое решение:
1С:Управление строительной организацией

Взаиморасчеты с поставщиками;
- Оформление заказов поставщикам;
- Склад ...

Внедрение 1С:Управление торговлей в оптово-розничной компании «Много Плитки»
ООО «Много Плитки»

Отрасль:
Торговля

Внедренное типовое решение:
1С:Управление торговлей

Закупки (снабжение) и управление отношениями с поставщиками:
- Оформление ...

Внедрение ПП "1С:CRM ПРОФ" в ООО «Торговый Дом Факел»
ООО «Торговый Дом Факел»

Отрасль:
Производство

Внедренное типовое решение:
1С:CRM ПРОФ

- Управление отношениями с клиентами (CRM) ...

МИР ХОББИ
МИР ХОББИ

Отрасль:
Торговля. Интернет магазин

Внедренное типовое решение:
1С:ERP Управление предприятием 2.0

Оформление заказов поставщикам
Взаиморасчеты с покупателями
Оформление...

ООО «Лаборатория успеха»
ООО «Лаборатория успеха»

Отрасль:
Общественное и плановое питание, гостиничный бизнес, туризм

Внедренное типовое решение:
1С:Зарплата и управление персоналом 8. КОРП

Кадровый учет;
Расчет зарплаты;...

ООО «Солви Пак»
ООО «Солви Пак»

Отрасль:
Торговля. Производство печати на рулонных материалах

Внедренное типовое решение:
1С:CRM+1С:Комплексная автоматизация

Управление отношениями с клиентами (CRM) ...

Группа компаний ТМ «Дружба народов»
Группа компаний ТМ «Дружба народов»

Отрасль:
Пищевая промышленность

Внедренное типовое решение:
1С:ERP Управление предприятием 2.1

- Переход на новый релиз 2.1 программы «1С:ERP Управление предприятием»
- Разра...

ООО «ЛИГА-ТРАНС»
ООО «ЛИГА-ТРАНС»

Отрасль:
Профессиональные услуги, бытовое обслуживание

Внедренное типовое решение:
«1С:ERP Управление предприятием 2.1».

- Сделано ТЗ по автоматизации учета МСФО: - Разработана карта бюджета доходо...

ООО ХДМ Рус
ООО ХДМ Рус

Отрасль:
Торговля

Внедренное типовое решение:
1С:Управление торговлей

Управление цепочками поставок Оптовая торговля ...

Наши соц. сети

Telegram-канал «Koderline 1С» Группа в Вконтакте «Кодерлайн КОРП» Rutube

Остались вопросы - обратитесь к нам!

Впишите свои Имя и Телефон, чтобы мы ответили на все интересующие Вас вопросы.
ФИО*
E-mail*
Телефон*
Сообщение