К статье
Практический материал

Разработка и Конфигурация · 12 мин

JSON в 1С: что это и как с ним работать

Что такое JSON в 1С, зачем он нужен и как с ним работать: чтение и запись JSON, обмен данными через HTTP-запросы, примеры кода и типичные ошибки.

JSON (JavaScript Object Notation) — текстовый формат обмена данными, который стал стандартом для интеграций программных систем. В контексте 1С формат JSON встречается почти везде, где платформа обменивается информацией с внешними сервисами: интернет-магазинами, банками, службами доставки, государственными порталами и мобильными приложениями.

Формат описывает данные в виде пар «ключ — значение», массивов и вложенных объектов. Его легко читает и человек, и программа, поэтому большинство современных API (программных интерфейсов сервисов) отдают и принимают данные именно в JSON. Когда менеджер видит в 1С загруженный из сайта заказ, а бухгалтер — выписку из банка, с высокой вероятностью «под капотом» этих операций работал обмен в формате JSON.

В платформе 1С:Предприятие 8.3 есть встроенные средства для работы с JSON: объекты ЧтениеJSON, ЗаписьJSON и функции глобального контекста ПрочитатьJSON() и ЗаписатьJSON(). Их не нужно подключать извне — они доступны на любом сервере и клиенте, где работает платформа.

Что такое JSON и как он выглядит

JSON описывает данные в виде структуры из пар «имя: значение». Значением может быть строка, число, логическое значение (true/false), массив (список элементов в квадратных скобках) или вложенный объект. Пустое значение обозначается как null.

Пример JSON-описания товара, который мог бы прийти с сайта в 1С:

{

"Артикул": "Т-1042",

"Наименование": "Кабель сетевой 3 м",

"Цена": 450.50,

"Активен": true,

"Характеристики": ["черный", "экранированный"]

}

Такой текст имеет строгие правила: имена свойств заключаются в двойные кавычки, элементы разделяются запятыми, после последнего элемента запятая не ставится. Нарушение синтаксиса — самая частая причина ошибок при чтении JSON в 1С: платформа просто выдаст исключение «Недопустимый символ» или «Ожидается символ».

Зачем JSON нужен в 1С

Основной сценарий — интеграция с внешними системами через HTTP. Типовая схема выглядит так: 1С отправляет HTTP-запрос на сервер внешнего сервиса, тот отвечает строкой в формате JSON, 1С разбирает её и создаёт документы, элементы справочников или записи регистров. В обратную сторону 1С формирует JSON из своих данных и отправляет его наружу.

Конкретные примеры, где применяется JSON в экосистеме 1С:

  • обмен заказами и каталогом товаров с интернет-магазином;
  • получение курсов валют, статусов доставки, остатков поставщика;
  • взаимодействие с банковскими сервисами и онлайн-кассами;
  • публикация собственных HTTP-сервисов в 1С, к которым обращаются внешние приложения;
  • передача данных в мобильные приложения и личные кабинеты клиентов.

Альтернативой JSON служит XML — он тоже поддерживается платформой и применяется, например, в форматах CommerceML и EnterpriseData. Выбор формата обычно диктует внешняя система: если её API принимает JSON, использовать нужно JSON, даже если внутри 1С привычнее XML.

JSON и XML в 1С

JSON

Компактнее, быстрее читается, стандарт для веб-API. Нет встроенной проверки по схеме в типовых механизмах, структуру нужно контролировать кодом.

XML

Используется в форматах CommerceML и EnterpriseData, поддерживает пространства имён и схемы проверки. Более громоздкий, разбор сложнее.

Как прочитать JSON в 1С

Для чтения строки JSON применяется функция ПрочитатьJSON(). Она принимает объект ЧтениеJSON, которому предварительно передают строку с данными, и возвращает результат в виде структуры, соответствия или массива — в зависимости от параметров.

ЧтениеJSON = Новый ЧтениеJSON;

ЧтениеJSON.УстановитьСтроку(СтрокаJSON);

Данные = ПрочитатьJSON(ЧтениеJSON);

ЧтениеJSON.Закрыть();

// Обращение к полям

Артикул = Данные.Артикул;

Цена = Данные.Цена;

По умолчанию ПрочитатьJSON возвращает структуру. Если имена свойств в JSON содержат символы, недопустимые для идентификаторов 1С (пробелы, дефисы, кириллица в некоторых случаях), следует читать в соответствие — для этого вторым параметром передаётся значение Ложь:

Данные = ПрочитатьJSON(ЧтениеJSON, Ложь);

// Теперь обращение через квадратные скобки

Значение = Данные["customer-name"];

После разбора данные обычно переносятся в объекты конфигурации: создаётся документ «Заказ клиента», заполняется табличная часть товарами из массива JSON, записывается в базу. Важно проверять наличие ожидаемых полей перед обращением к ним — если внешний сервис не передал свойство, обращение к нему в структуре вызовет ошибку «Поле объекта не обнаружено».

Порядок чтения JSON в 1С
  1. 1
    Получите строку JSON: из HTTP-ответа, файла или текстового документа.
  2. 2
    Создайте объект ЧтениеJSON и передайте ему строку методом УстановитьСтроку().
  3. 3
    Вызовите ПрочитатьJSON(); при наличии «сложных» имён полей укажите второй параметр Ложь для чтения в соответствие.
  4. 4
    Проверьте наличие нужных полей через Свойство() для структуры или поиск по ключу для соответствия.
  5. 5
    Перенесите значения в объекты 1С с приведением типов (даты, числа, ссылки).
  6. 6
    Закройте объект чтения методом Закрыть().

Как записать JSON из 1С

Обратная операция выполняется функцией ЗаписатьJSON() совместно с объектом ЗаписьJSON. В простейшем случае в JSON можно выгрузить структуру или соответствие, заполненное нужными значениями:

Данные = Новый Структура;

Данные.Вставить("Артикул", "Т-1042");

Данные.Вставить("Цена", 450.5);

Данные.Вставить("Активен", Истина);

ЗаписьJSON = Новый ЗаписьJSON;

ЗаписьJSON.УстановитьСтроку();

ЗаписатьJSON(ЗаписьJSON, Данные);

СтрокаJSON = ЗаписьJSON.Закрыть();

Для более сложных случаев — вложенных объектов и массивов — структура собирается иерархически: в структуру вкладываются другие структуры и массивы, а ЗаписатьJSON() рекурсивно сериализует всё дерево. Либо используется низкоуровневый интерфейс ЗаписьJSON с методами ЗаписатьНачалоОбъекта(), ЗаписатьИмяСвойства(), ЗаписатьЗначение(), который даёт полный контроль над формируемым текстом.

Отдельное внимание — датам. В JSON нет типа «дата», поэтому даты передаются строками. По умолчанию платформа сериализует дату в формате ISO (например, 2026-03-15T10:30:00), но внешний сервис может ожидать другой вид. Формат задаётся параметрами записи через объект ПараметрыЗаписиJSON, а при чтении дату из строки часто приходится преобразовывать вручную.

Обмен через HTTP: полный цикл

На практике чтение и запись JSON почти всегда связаны с HTTP-запросами. Объект HTTPСоединение устанавливает связь с сервером, HTTPЗапрос формирует тело запроса (туда помещается строка JSON), а ответ сервера читается методом ПолучитьТелоКакСтроку() и передаётся в ПрочитатьJSON().

Типовой фрагмент отправки данных:

Соединение = Новый HTTPСоединение("api.example.com", 443,,,,, Новый ЗащищенноеСоединениеOpenSSL);

Запрос = Новый HTTPЗапрос("/v1/orders");

Запрос.Заголовки.Вставить("Content-Type", "application/json");

Запрос.УстановитьТелоИзСтроки(СтрокаJSON);

Ответ = Соединение.ОтправитьДляОбработки(Запрос);

Если Ответ.КодСостояния = 200 Тогда

Чтение = Новый ЧтениеJSON;

Чтение.УстановитьСтроку(Ответ.ПолучитьТелоКакСтроку());

Результат = ПрочитатьJSON(Чтение);

КонецЕсли;

Обязательно проверяйте код состояния ответа перед разбором тела: при ошибке сервис может вернуть HTML-страницу или JSON с описанием ошибки другой структуры. Попытка разобрать такой ответ как «успешный» приведёт либо к исключению, либо к тихой порче данных.

Типичные ошибки при работе с JSON в 1С

Большинство проблем при интеграциях сводится к нескольким повторяющимся сценариям. Их знание экономит часы отладки.

Типичные ошибки
01
Чтение в структуру JSON с полями вида «customer-name» или «1c_id» — обращение к такому полю невозможно или вызывает ошибку. Решение: читать в соответствие (второй параметр Ложь).
02
Разбор тела ответа без проверки кода состояния HTTP — исключение или порча данных при ошибке сервиса.
03
Обращение к полю структуры без проверки его наличия — ошибка «Поле объекта не обнаружено», если внешний сервис не передал свойство.
04
Неверная кодировка строки JSON — кириллица превращается в нечитаемые символы. Передавайте и читайте тело в UTF-8.
05
Передача дат в произвольном строковом формате — внешняя система не распознаёт значение. Согласуйте формат (обычно ISO 8601) с документацией API.
06
Попытка записать в JSON ссылку 1С «как есть» — внешняя система получает бессмысленное представление вместо идентификатора.

Ещё одна группа ошибок связана с числами: JSON не различает целые и дробные, а внешний сервис может передавать цены строками с точкой или запятой. Перед записью в реквизиты 1С приводите значения к нужному типу функциями Число(), Дата() и явно обрабатывайте ситуации, когда преобразование невозможно.

Как проверить, что обмен работает правильно

После настройки чтения или записи JSON результат нужно проверить на контрольных примерах. Для отладки удобно сохранять полученные строки JSON в текстовые файлы или журнал регистрации — тогда можно повторно разобрать тот же ответ без обращения к внешнему сервису.

Контрольные точки

Как проверить результат

Разбор JSON
Норма

ПрочитатьJSON() отрабатывает без исключений, все ожидаемые поля присутствуют

Тревожный признак

Исключение «Недопустимый символ» или отсутствуют поля — проверьте исходную строку и структуру ответа

Код состояния HTTP
Норма

200 или иной успешный код из документации API

Тревожный признак

4xx/5xx — ошибка запроса или сервера, тело разбирать как данные нельзя

Кириллица в данных
Норма

Русские наименования читаются корректно

Тревожный признак

Кракозябры — несовпадение кодировки, используйте UTF-8

Созданные объекты 1С
Норма

Документы и справочники заполнены, дубли не создаются при повторном обмене

Тревожный признак

Дубли или пустые поля — проверьте поиск по идентификатору и соответствие типов

Полезная практика — вести служебный регистр или журнал обменов, где фиксируются отправленные запросы, полученные ответы и результат обработки. Это позволяет быстро найти, на каком шаге произошёл сбой, и повторить загрузку конкретного пакета данных без полного перезапуска обмена.

Итог

Что важно запомнить

JSON — текстовый формат обмена данными, основной инструмент интеграции 1С с внешними сервисами. В платформе для него есть встроенные функции ПрочитатьJSON() и ЗаписатьJSON(). Ключевые правила: проверяйте код ответа HTTP, читайте поля со сложными именами в соответствие, контролируйте типы данных и кодировку, а отладку проводите на копии базы.

Частые вопросы о JSON в 1С

Чем JSON отличается от XML в контексте 1С?

Оба формата описывают структурированные данные, но JSON компактнее и проще разбирается, поэтому стал стандартом для веб-API. XML остаётся востребованным в типовых форматах обмена 1С (CommerceML, EnterpriseData) и там, где нужна строгая проверка по схеме. Выбор обычно определяется требованиями внешней системы, а не предпочтениями разработчика.

Можно ли работать с JSON в 1С без программирования?

Штатных пользовательских инструментов для произвольного разбора JSON в типовых конфигурациях, как правило, нет — обмены реализованы прикладным кодом под конкретные сервисы. Если нужна новая интеграция, потребуется доработка: внешняя обработка или расширение конфигурации с кодом чтения и записи JSON.

Как передать из 1С дату в JSON?

В JSON нет типа «дата», поэтому дата передаётся строкой. По умолчанию платформа сериализует её в формате ISO 8601, который понимают большинство сервисов. Если API требует другой вид, формат настраивается через ПараметрыЗаписиJSON либо дата преобразуется в строку вручную функцией Формат() с нужной строкой формата.

Почему ПрочитатьJSON() выдаёт ошибку «Поле объекта не обнаружено»?

Эта ошибка возникает при обращении к свойству структуры, которого нет в разобранном JSON: внешний сервис не передал поле или изменил его имя. Перед обращением проверяйте наличие свойства методом Свойство() для структуры, а для соответствия — поиском по ключу. Также убедитесь, что разбирается именно тот ответ, который ожидался.

Как отладить обмен, если внешний сервис недоступен?

Сохраните эталонные примеры JSON-ответов в текстовые файлы или макеты конфигурации и разбирайте их локально через ПрочитатьJSON() — это позволяет отладить всю логику обработки без обращения к серверу. Для проверки отправки данных можно использовать тестовые сервисы-приёмники запросов или собственный HTTP-сервис в тестовой базе.

Может ли 1С сама принимать JSON-запросы от внешних систем?

Да. Платформа позволяет публиковать HTTP-сервисы на веб-сервере: внешняя система отправляет запрос с JSON в теле, а код 1С разбирает его и выполняет нужные действия — создаёт документы, возвращает остатки, статусы заказов. Для публикации потребуется настроенный веб-сервер (IIS или Apache) и права на публикацию сервисов.