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

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

JSON в 1С:Предприятие: что это и как с ним работать

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

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

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

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

Что такое JSON и как выглядят данные в этом формате

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

Пример JSON-фрагмента, который мог бы вернуть внешний сервис при запросе данных о заказе:

{"НомерЗаказа": "A-1024", "Сумма": 15750.5, "Оплачен": true, "Товары": [{"Код": "Т-100", "Количество": 2}]}

Такой текст легко читается и человеком, и программой. Именно поэтому JSON вытеснил более громоздкий XML в большинстве веб-интеграций: меньше служебных символов, проще разбор, компактнее передача по сети.

Какие средства работы с JSON есть в платформе 1С

Платформа предлагает два подхода к работе с JSON, и выбор между ними зависит от задачи.

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

Дополнительно существуют объекты ЧтениеДанныхJSON и ЗаписьДанныхJSON для работы с прикладными типами (например, ссылками и датами через формат сериализации), но в типовых интеграциях с внешними API они используются редко, так как внешние системы не знают про типы 1С.

Сравнение вариантов

ЧтениеJSON / ЗаписьJSON

Потоковая обработка, подходит для больших файлов и нестандартных структур. Требует больше кода и аккуратности.

ПрочитатьJSON / ЗаписатьJSON

Преобразуют документ целиком в Соответствие или Структуру за один вызов. Оптимально для типовых API-ответов небольшого и среднего размера.

Сторонние парсеры и компоненты

Оправданы только при специфических требованиях; в большинстве случаев избыточны, так как штатных средств достаточно.

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

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

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

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

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

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

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

Сумма = Данные.Сумма;

Для Каждого СтрокаТовара Из Данные.Товары Цикл

// обработка строки

КонецЦикла;

Важный нюанс: если выбрать Соответствие, обращаться к полям нужно через квадратные скобки — Данные["Сумма"], а имена ключей могут быть любыми, включая те, что недопустимы для свойств структуры (с пробелами, дефисами, цифрой в начале). Внешние API часто используют ключи вроде "order-id", поэтому Соответствие — более безопасный выбор по умолчанию.

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

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

Для формирования JSON используется объект ЗаписьJSON в паре с функцией ЗаписатьJSON(). Функция умеет сериализовать структуры, соответствия, массивы, таблицы значений и примитивные типы.

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

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

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

Данные.Вставить("НомерЗаказа", "A-1024");

Данные.Вставить("Сумма", 15750.5);

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

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

На выходе получится строка, которую можно отправить в тело HTTP-запроса к внешнему сервису. Даты требуют отдельного внимания: у JSON нет собственного типа «дата», поэтому дату нужно заранее преобразовать в строку в формате, который ожидает принимающая сторона (чаще всего ISO 8601, например 2026-05-17T10:30:00).

Типичные сценарии использования JSON в 1С

Интеграция с сайтом или интернет-магазином

1С получает заказы с сайта: регламентное задание периодически обращается к API магазина, читает JSON со списком новых заказов и создаёт документы «Заказ покупателя». В обратную сторону 1С отдаёт остатки и цены, формируя JSON и передавая его на сайт.

Обмен с банками и государственными сервисами

Многие банковские API, сервисы проверки контрагентов, системы маркировки и электронного документооборота работают именно через JSON поверх HTTPS. Здесь важна корректная обработка ошибок: сервис может вернуть JSON с описанием ошибки вместо ожидаемых данных, и код должен различать эти ситуации.

Публикация собственных HTTP-сервисов

1С может сама выступать сервером: через объект метаданных «HTTP-сервис» конфигурация принимает запросы от внешних систем и отвечает им JSON-документами. Это стандартный способ дать мобильному приложению или партнёрской системе доступ к данным учёта.

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

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

Первая группа ошибок связана с типами данных. Число в JSON может прийти строкой ("Сумма": "15750.5"), и попытка сложить его с числом даст ошибку или неожиданный результат. Даты приходят строками, логические значения иногда передаются как "true" в кавычках. Всегда проверяйте фактический тип значения перед использованием.

Вторая группа — обращение к несуществующим ключам. Если внешний сервис не вернул поле, обращение Данные.Сумма к структуре вызовет исключение. Используйте проверку Данные.Свойство("Сумма", ЗначениеСуммы) для структур или Данные.Получить("Сумма") для соответствий.

Третья группа — кодировка и формат текста. JSON должен обрабатываться в UTF-8; если текст получен из файла в другой кодировке, кириллица превратится в нечитаемые символы ещё до разбора. При чтении из файла явно указывайте кодировку в методе ОткрытьФайл().

Типичные ошибки
01
Обращение к полю без проверки его наличия — исключение при любом изменении ответа API.
02
Сравнение строкового представления числа с числом — условие никогда не срабатывает, ошибка обнаруживается поздно.
03
Разбор JSON без обработки исключений — один «битый» ответ останавливает регламентное задание целиком.
04
Запись даты без явного формата — принимающая система не распознаёт значение.

Как проверить корректность обмена

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

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

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

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

Разбор тестового JSON
Норма

Все ожидаемые поля доступны, типы значений соответствуют ожиданиям

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

Исключение при обращении к полю или значение неожиданного типа

Сформированный JSON
Норма

Текст валиден, повторное чтение через ПрочитатьJSON проходит без ошибок

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

Ошибка разбора, потерянные или искажённые значения

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

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

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

Кракозябры — признак неверной кодировки при чтении или записи текста

Итог

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

JSON — основной формат интеграции 1С с внешними системами. Платформа 8.3 читает и пишет JSON штатными средствами: ЧтениеJSON/ЗаписьJSON и ПрочитатьJSON/ЗаписатьJSON. Ключевые правила: проверяйте наличие полей и типы значений, оборачивайте разбор в Попытку/Исключение, согласуйте формат дат и кодировку с принимающей стороной.

Частые вопросы

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

Оба формата поддерживаются платформой. JSON компактнее и проще в разборе, поэтому доминирует в веб-API. XML остаётся стандартом в регламентированном обмене: электронные документы, отчётность, форматы ФНС и банковские выписки. Выбор обычно определяется требованиями внешней системы, а не предпочтениями разработчика.

Как прочитать JSON, если имена ключей содержат дефисы или пробелы?

Используйте чтение в Соответствие (второй параметр ПрочитатьJSON — Ложь или не указан) и обращайтесь к значениям через квадратные скобки: Данные["order-id"]. Структура такие имена ключей не поддерживает.

Можно ли передать в JSON ссылку на объект 1С?

Напрямую — нет, внешняя система не поймёт внутренний формат ссылки. Передавайте строковое представление уникального идентификатора (Строка(Ссылка.УникальныйИдентификатор())) или код/номер объекта, а при обратном приёме находите объект по этому идентификатору.

Что делать, если ПрочитатьJSON выдаёт ошибку?

Сначала сохраните исходный текст и проверьте его валидатором: часто ответ содержит HTML-страницу ошибки вместо JSON, лишние символы в начале или обрезанное тело. Также проверьте кодировку текста. Разбор оборачивайте в Попытка/Исключение с записью текста ошибки и исходного ответа в журнал.

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

У JSON нет типа «дата», поэтому дату преобразуют в строку. Чаще всего используют формат ISO 8601: Формат(Дата, "ДФ=гггг-ММ-ддTЧЧ:мм:сс"). Конкретный формат уточняйте в документации принимающего API — некоторые сервисы ждут Unix-время числом или собственный шаблон.

Подходит ли JSON для обмена большими объёмами данных?

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