JSON в интеграции 1С
Зачем JSON в 1С
JSON (JavaScript Object Notation) — текстовый формат обмена данными. На платформе 8.3 он используется при вызове внешних REST API, в телах HTTP-сервисов, в конфигурационных файлах обмена и при интеграции с маркетплейсами, банками, сайтами.
Платформа даёт три уровня работы с JSON — от низкоуровневого потока до сериализации ссылок и документов. Выбор уровня зависит от объёма данных, типов в документе и требований контрагента.
| Уровень | Объекты | Когда применять |
|---|---|---|
| Потоковый | ЗаписьJSON, ЧтениеJSON | Большие файлы, ручной контроль структуры, ответ HTTP-сервиса «по кускам» |
| Объектный (коллекции) | ЗаписатьJSON(), ПрочитатьJSON() | Структура, Массив, Соответствие — типичный REST-обмен |
| Прикладные типы | СериализаторXDTO.ЗаписатьJSON() | Ссылки, объекты, наборы записей — обмен между базами 1С или строгий контракт |
См. также Коллекции значений — типы, которые попадают в JSON на втором уровне.
Потоковая запись и чтение
Объекты ЗаписьJSON и ЧтениеJSON обходят документ поэлементно, без загрузки всего файла в память. Удобно для выгрузки больших выборок и формирования ответа HTTP-сервиса.
Запись = Новый ЗаписьJSON;
Запись.УстановитьСтроку();
Запись.ЗаписатьНачалоОбъекта();
Запись.ЗаписатьИмяСвойства("Наименование");
Запись.ЗаписатьЗначение("Товар А");
Запись.ЗаписатьКонецОбъекта();
СтрокаJSON = Запись.Закрыть();
Чтение — симметрично: ЧтениеJSON.УстановитьСтроку() или ОткрытьФайл(), затем цикл по Прочитать() с разбором типа текущего значения (ИмяСвойства, НачалоОбъекта, КонецОбъекта и т.д.).
ЗаписьJSON проверяет корректность вложенности. Для нестандартных схем можно отключить: Запись.ПроверятьСтруктуру = Ложь.Объектная техника — коллекции
Методы глобального контекста ЗаписатьJSON() и ПрочитатьJSON() сериализуют примитивы и коллекции платформы целиком в память.
Запись:
Данные = Новый Структура;
Данные.Вставить("Контрагент", "ООО Пример");
Данные.Вставить("Сумма", 150000);
Запись = Новый ЗаписьJSON;
Запись.УстановитьСтроку();
ЗаписатьJSON(Запись, Данные);
СтрокаJSON = Запись.Закрыть();
Чтение возвращает Структура, Массив, Соответствие, числа, строки, булево, Неопределено, Дата.
Структура или соответствие
По умолчанию ключи читаются в структуру. Имена свойств с точками, пробелами или спецсимволами ("user.first", "Объем Продаж") в структуру не помещаются — нужно читать в соответствие:
Данные = ПрочитатьJSON(Чтение, Истина); // второй параметр — в соответствие
Функции преобразования
Если внешний API отдаёт телефоны в неудобном виде или даты в нестандартном формате, в ЗаписатьJSON / ПрочитатьJSON передают функцию преобразования и контекст (ЭтотОбъект). Для ускорения чтения больших файлов можно ограничить список свойств, для которых вызывается восстановление.
Даты
JSON не задаёт единый формат даты. Платформа поддерживает ФорматДатыJSON: ISO, JavaScript и др. При записи — через НастройкиСериализацииJSON; при чтении — параметры ИменаСвойствСоЗначениямиДата и формат.
Прикладные типы через XDTO
Коллекции не сериализуют ссылки на справочники и объекты документов. Для прикладных типов используют СериализаторXDTO:
Сериализатор = Новый СериализаторXDTO;
Запись = Новый ЗаписьJSON;
Запись.УстановитьСтроку();
Сериализатор.ЗаписатьJSON(Запись, ОбъектДокумента);
СтрокаJSON = Запись.Закрыть();
Чтение — СериализаторXDTO.ПрочитатьJSON(Чтение, Тип("СправочникОбъект.Номенклатура")). Подробнее про XML и XDTO-пакеты — в материалах фазы 3 (хаб интеграции).
Смешанная техника
На практике комбинируют уровни:
- HTTP-сервис отдаёт список через потоковую запись в цикле по выборке (экономия памяти);
- входящее тело POST разбирают
ПрочитатьJSONв структуру; - выгрузка пакета для другой базы 1С — XDTO в файл.
Типичные ошибки
| Симптом | Причина | Решение |
|---|---|---|
| Ошибка при чтении в структуру | Недопустимые символы в имени свойства | ПрочитатьJSON(..., Истина) — в соответствие |
| Пустая ссылка после чтения | Ожидали GUID, пришла строка представления | Функция восстановления или явный поиск по коду |
| «Память» при большой выгрузке | Объектная техника держит весь JSON в RAM | Потоковая запись ЗаписьJSON |
| Неверная дата в контрагенте | Разные форматы ISO / JavaScript | Явно задать ФорматДатыJSON и список полей-дат |
Связанные материалы
- HTTP-сервисы 1С — JSON в теле ответа сервиса
- HTTP-запросы из 1С — разбор JSON из
HTTPОтвет - Интеграция — хаб
- Общий разбор REST и форматов — API
Проверка себя
- Когда выберете потоковую запись вместо
ЗаписатьJSON? - В какой коллекции прочитаете JSON с ключом
"поле №2"? - Чем сериализация через XDTO отличается от записи структуры с GUID в строке?
См. также
Другие статьи этого же раздела в боковом меню (как на странице "О разделе"). Платформа 1С - архитектура среды исполнения, назначение и место в автоматизации бизнес-процессов. История 1С - развитие платформы, ключевые этапы роста и влияние на цифровизацию бизнеса и госсектора. Экосистема 1С - продукты платформы, инструменты разработки, внедрение и сопровождение корпоративных решений. Архитектура платформы 1С, объекты метаданных, регистры, модули и исполнение прикладного кода. Пошаговое создание учебной конфигурации: справочники, документ, регистры, проведение, подсистемы и роли. Синтаксис и пунктуация 1С - базовые правила записи кода, операторы и структура выражений. Типизация, набор правил определения типа данных значений языка. Управление потоком выполнения в 1С - последовательность операций, ветвления и контроль выполнения сценариев. Функции и процедуры 1С - различия, правила использования и организация переиспользуемой бизнес-логики. Объекты и классы 1С - модель метаданных, экземпляры объектов и работа с прикладными сущностями. Данные — это конкретные записи, созданные пользователями или автоматически системой в рамках определённых объектов. Каждая запись имеет уникальный идентификатор и соответствует описанию в метаданных. Обработка ошибок в 1С - перехват исключений, диагностика сбоев и устойчивые сценарии обработки.Платформа 1С
История 1С
Экосистема 1С
Архитектура и мета-объекты 1С
Конфигурирование — мини-склад
Синтаксис и пунктуация 1С
Переменные и типы данных 1С
Управление потоком выполнения 1С
Функции и процедуры 1С
Объекты и классы 1С
Работа с базами данных 1С
Обработка ошибок 1С