15.11.2019 Вадим Хоменко 44199
Варианты работы с форматом данных 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
ООО «Пелигрин Матен»

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

Внедренное типовое решение:
1С:Управление производственным предприятием

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

Московский филиал ООО «Авиакомпания «Икар»
Московский филиал ООО «Авиакомпания «Икар»

Отрасль:
Авиаперевозки

Внедренное типовое решение:
1С:Бухгалтерия КОРП

Бухгалтерский учет Производственные операции Регламентированная отчетность Учет в обособленных подразделениях Налоговый учет ...

Автоматизация кадрового учета на базе «1С:ERP Управление предприятием 2.0»
Автопредприятие ПАО «Газпром»

Отрасль:
Транспорт

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

- Настройка подсистемы кадрового учета;
- Перенос персональных данных;
- Заполнение НСИ и классификаторов. ...

Апгрейд 1С:Бухгалтерия 8 ПРОФ (USB) до версии 1С:Бухгалтерия 8 КОРП (USB)
ООО «Ява Строй»

Отрасль:
Строительство

Внедренное типовое решение:
1С:Бухгалтерия 8 КОРП (USB)

- Создание чистых конфигураций. Внесение изменений в БД ЗУП и новая расчетная ведомость;
- Администрирование MS SQL Server;
- Сжати...

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

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

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

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

АО "Нижегородский водоканал"
АО "Нижегородский водоканал"

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

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

-Кадровый учет
-Расчет зарплаты
-Регламентированная отчетность
-Подбор кадров
-Анализ кадрового состава
-Учет рабочего времен...

Автоматизация торговых операций на базе "1С:Управление торговлей" в ОАО "Авиазапчасть"
ОАО «Авиазапчасть»

Отрасль:
Авиационно-космическая промышленность

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

- Оптовая торговля;
- Оформление заказов покупателей;
- Планирование продаж. ...

ООО «ТейблТок»
ООО «ТейблТок»

Отрасль:
Общественное питание и рестораны

Внедренное типовое решение:
1С:ТОИР Управление ремонтами и обслуживанием оборудования

Мониторинг и анализ ключевых показателей деятельности предприятия Управленческий учет Финансовый анализ ...

Автоматизация торгового учета на базе "1С:Управление торговлей"
ООО «ТЕЛЕВЕС РУСС»

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

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

- Управление складскими запасами;
- Оформление заказов покупателей;
- Планирование продаж;
- Взаиморасчеты с покупателями;
-...

Внедрение ПП "1С:Бухгалтерия 8 ПРОФ" в ООО Фирма «Бисер»
ООО фирма «Бисер»

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

Внедренное типовое решение:
1С:Бухгалтерия 8 ПРОФ

Финансы, управленческий учет, мониторинг показателей:
- Налоговый учет...

ООО «ТейблТок»
ООО «ТейблТок»

Отрасль:
Общественное питание и рестораны

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

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

ООО "ЛИКАРД" (Лукойл)
ООО "ЛИКАРД" (Лукойл)

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

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

Делопроизводство
• Учет и контроль исполнения поручений
Учет и хранение документов
• Учет рабочего времени
Закупки (снабжение) и...

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

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

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

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