JSON Workbench для 1С: строгая проверка JSON, дерево, поиск и генерация кода

17.09.26

Разработка - Инструментарий разработчика

Инструмент программиста 1С для разбора и исследования JSON: строгая проверка синтаксиса, Pretty Print и Minify, дерево объектов и массивов, поиск по ключам и значениям, пути к узлам, JSON-фрагменты и готовые примеры обращения из кода 1С. JSON можно вставить текстом или открыть из файла через штатную клиент-серверную передачу во временное хранилище.

Файлы

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование Скачано Купить файл
JSON Workbench для 1С, версия 1.0
.zip 13,44Kb ver:1.0
1 2 500 руб. Купить

Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний

Оформите подписку на компанию для решения рабочих задач

Оформить подписку и скачать решение со скидкой

Вы можете заказать платную доработку или адаптацию этой разработки под вашу конфигурацию на «Бирже заказов».

  • 0% комиссии — оплата напрямую исполнителю;
  • Исполнители любого масштаба — от отдельных специалистов до команд под проект;
  • Прямой обмен контактами между заказчиком и исполнителем;
  • Безопасная сделка — при необходимости;
  • Рейтинги, кейсы и прозрачная система откликов.

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

JSON Workbench собирает эти операции в одной внешней обработке: исходный текст можно вставить или открыть из файла, разобрать в дерево, найти нужный узел, посмотреть его путь, тип и значение, получить отдельный JSON-фрагмент и пример кода 1С.

Дерево JSON и пример кода 1С Основной рабочий экран: дерево JSON, выбранный массив, путь к узлу и автоматически сформированный код 1С.

Что умеет обработка

  • проверять синтаксис JSON до передачи текста штатному парсеру;
  • строить дерево объектов и массивов;
  • показывать для выбранного узла путь, тип, значение и число дочерних элементов;
  • искать по именам ключей и скалярным значениям;
  • форматировать JSON и минифицировать его;
  • показывать и копировать JSON-фрагмент выбранного узла;
  • генерировать пример обращения к узлу из кода 1С, а для массива — заготовку цикла;
  • открывать .json через штатную клиент-серверную передачу файла во временное хранилище;
  • разворачивать и сворачивать всё дерево или только уровень выбранного узла.

Строгая проверка перед штатным разбором

Основной разбор начинается не с построения дерева, а с отдельной синтаксической проверки. После неё текст передаётся обычному ЧтениеJSON. В результате дальнейшая логика работает уже с обычными значениями 1С — Соответствие, Массив, строками, числами, булевыми значениями и Null.

&НаСервере
Функция ПрочитатьJSONИзТекста(Знач Текст)
    ПроверитьСтрогийJSON(Текст);

    Чтение = Новый ЧтениеJSON;
    Чтение.УстановитьСтроку(Текст);
    Результат = ПрочитатьJSON(Чтение, Истина);
    Чтение.Закрыть();

    Возврат Результат;
КонецФункции

&НаСервере
Процедура ПроверитьСтрогийJSON(Знач Текст)
    Позиция = 1;
    ПропуститьПробелыJSON(Текст, Позиция);

    Если Позиция > СтрДлина(Текст) Тогда
        ВызватьИсключение "Пустая строка не является JSON.";
    КонецЕсли;

    РазобратьСтрогоеЗначениеJSON(Текст, Позиция, 0);
    ПропуститьПробелыJSON(Текст, Позиция);

    Если Позиция <= СтрДлина(Текст) Тогда
        ВызватьИсключение
            "После JSON-значения найден лишний символ в позиции "
            + Строка(Позиция) + ".";
    КонецЕсли;
КонецПроцедуры

Проверяющая часть идёт по тексту позиционно. Для объекта она контролирует кавычки имени свойства, двоеточие, обязательную запятую между свойствами и отсутствие «висящей» запятой перед закрывающей скобкой. Для массива действует та же идея: после значения допустимы только запятая или ]. Строки, числа и литералы true/false/null разбираются отдельными процедурами.

Разделитель = Сред(Текст, Позиция, 1);
Если Разделитель = "}" Тогда
    Позиция = Позиция + 1;
    Возврат;
ИначеЕсли Разделитель = "," Тогда
    Позиция = Позиция + 1;
    ПропуститьПробелыJSON(Текст, Позиция);
    Если Позиция > СтрДлина(Текст)
        Или Сред(Текст, Позиция, 1) = "}" Тогда
        ВызватьИсключение
            "После запятой в объекте ожидалось следующее свойство.";
    КонецЕсли;
Иначе
    ВызватьИсключение
        "Между свойствами JSON-объекта требуется запятая в позиции "
        + Строка(Позиция) + ".";
КонецЕсли;

Из JSON-значения строим дерево

После чтения JSON корневой объект превращается в дерево значений формы. Объект JSON приходит как Соответствие, массив — как Массив. Для каждого дочернего значения сразу рассчитываются путь и выражение доступа из кода 1С.

&НаСервере
Процедура ЗаполнитьДочерниеУзлы(Родитель, Значение,
        ПутьРодителя, КодРодителя, Глубина)

    Если ТипЗнч(Значение) = Тип("Соответствие") Тогда
        Для Каждого Элемент Из Значение Цикл
            ИмяКлюча = Строка(Элемент.Ключ);
            НовыйПуть = ДобавитьКлючКПути(ПутьРодителя, ИмяКлюча);
            НовыйКод = КодРодителя
                + ".Получить(" + СтрокаДляКода(ИмяКлюча) + ")";

            СтрокаДерева = Родитель.ПолучитьЭлементы().Добавить();
            ЗаполнитьСтрокуДерева(СтрокаДерева, ИмяКлюча,
                Элемент.Значение, НовыйПуть, НовыйКод);

            ЗаполнитьДочерниеУзлы(СтрокаДерева, Элемент.Значение,
                НовыйПуть, НовыйКод, Глубина + 1);
        КонецЦикла;

    ИначеЕсли ТипЗнч(Значение) = Тип("Массив") Тогда
        Для Индекс = 0 По Значение.Количество() - 1 Цикл
            НовыйПуть = ПутьРодителя + "[" + Строка(Индекс) + "]";
            НовыйКод = КодРодителя + "[" + Строка(Индекс) + "]";
            // Добавление строки дерева выполняется так же.
        КонецЦикла;
    КонецЕсли;
КонецПроцедуры

Например, для суммы первого заказа путь будет orders[0].sum. Если имя свойства неудобно для точечной записи — содержит пробел, квадратную скобку или начинается с цифры — путь строится в скобочной форме с ключом в кавычках.

Карточка выбранного узла

При построении дерева в строке сохраняются не только отображаемые имя и тип, но и готовый Pretty JSON выбранного значения и пример кода. Поэтому переключение между вкладками «Значение», «JSON-фрагмент» и «Код 1С» не требует повторно разбирать исходный текст.

СтрокаДерева.ИмяУзла = Имя;
СтрокаДерева.ТипУзла = ИмяТипаJSON(Значение);
СтрокаДерева.ЗначениеУзла = ПредставлениеJSONЗначения(Значение);
СтрокаДерева.ПутьУзла = Путь;
СтрокаДерева.КодУзла = Код;
СтрокаДерева.JSONФрагмент = ЗаписатьJSONВТекст(Значение, Истина);
СтрокаДерева.КодПримера = СформироватьПримерКода1С(Значение, Код);

Генерация обращения из кода 1С

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

Данные = ПрочитатьJSON(ЧтениеJSON, Истина);
МассивДанных = Данные.Получить("orders");

Для Каждого ЭлементМассива Из МассивДанных Цикл
    Значение1 = ЭлементМассива.Получить("items"); // items
    Значение2 = ЭлементМассива.Получить("sum");   // sum
    Значение3 = ЭлементМассива.Получить("date");  // date
    Значение4 = ЭлементМассива.Получить("number"); // number
КонецЦикла;

Это именно заготовка: имена переменных программист подбирает под свою задачу. Ценность генератора в том, что путь уже найден по реальной структуре JSON, включая индексы массивов и произвольные имена ключей.

Открытие JSON-файла в клиент-серверном варианте

Локальный путь пользователя на сервер не передаётся. На клиенте файл помещается на сервер асинхронно, после чего сервер получает только адрес временного хранилища. Далее двоичные данные читаются как UTF-8, при необходимости снимается BOM, и полученный текст передаётся тому же разбору, что используется для вставленного JSON.

&НаКлиенте
Асинх Процедура ОткрытьJSONОбработка(Команда)
    ПараметрыДиалога = Новый ПараметрыДиалогаПомещенияФайлов(
        "Выберите JSON-файл", Ложь,
        "JSON (*.json)|*.json|Все файлы (*.*)|*.*", 0);

    ОписаниеФайла = Ждать ПоместитьФайлНаСерверАсинх(
        ,,, ПараметрыДиалога, ЭтаФорма.УникальныйИдентификатор);

    Если ОписаниеФайла = Неопределено Тогда
        Возврат;
    КонецЕсли;

    ЗагрузитьJSONИзВременногоХранилища(ОписаниеФайла.Адрес);
КонецПроцедуры

&НаСервере
Процедура ЗагрузитьJSONИзВременногоХранилища(АдресФайла)
    ДвоичныеДанныеФайла = ПолучитьИзВременногоХранилища(АдресФайла);
    УдалитьИзВременногоХранилища(АдресФайла);

    ТекстФайла = ПолучитьСтрокуИзДвоичныхДанных(
        ДвоичныеДанныеФайла, КодировкаТекста.UTF8);

    Если Не ПустаяСтрока(ТекстФайла)
        И Лев(ТекстФайла, 1) = Символ(65279) Тогда
        ТекстФайла = Сред(ТекстФайла, 2);
    КонецЕсли;

    ТекстJSON = ТекстФайла;
    РазобратьНаСервере();
КонецПроцедуры

Pretty Print и Minify штатной записью JSON

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

Функция ЗаписатьJSONВТекст(Знач Значение, Знач Красиво)
    Запись = Новый ЗаписьJSON;

    Если Красиво Тогда
        ПараметрыЗаписи = Новый ПараметрыЗаписиJSON(
            ПереносСтрокJSON.Авто, Символы.Таб, Истина);
    Иначе
        ПараметрыЗаписи = Новый ПараметрыЗаписиJSON(
            ПереносСтрокJSON.Нет);
    КонецЕсли;

    Запись.УстановитьСтроку(ПараметрыЗаписи);
    ЗаписатьJSON(Запись, Значение);
    Возврат Запись.Закрыть();
КонецФункции
JSON после форматирования JSON после форматирования: Pretty Print выполняется штатной записью JSON платформы.

Поиск по ключам и значениям

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

&НаСервере
Процедура НайтиВДереве(Строки, Знач Искомое)
    Для Каждого СтрокаДерева Из Строки Цикл
        ТекстПроверки = ВРег(
            СтрокаДерева.ИмяУзла + " " + СтрокаДерева.ЗначениеУзла);

        Если СтрНайти(ТекстПроверки, Искомое) > 0 Тогда
            НоваяСтрока = РезультатыПоиска.Добавить();
            НоваяСтрока.Путь = СтрокаДерева.ПутьУзла;
            НоваяСтрока.Тип = СтрокаДерева.ТипУзла;
            НоваяСтрока.Значение = СтрокаДерева.ЗначениеУзла;
        КонецЕсли;

        НайтиВДереве(СтрокаДерева.ПолучитьЭлементы(), Искомое);
    КонецЦикла;
КонецПроцедуры
Результаты поиска по JSON Поиск по ключам и значениям возвращает путь, тип и представление найденного узла.

Рабочий сценарий

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

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

Состав поставки

В поставку входит готовая внешняя обработка JSONWorkbench.epf с открытым кодом. Для работы обработки не требуются внешние сервисы или дополнительные компоненты.

Проверено на следующих конфигурациях и релизах:

  • Управление нашей фирмой, редакция 3.0, релизы 3.0.14.143

Вступайте в нашу телеграмм-группу Инфостарт

JSON ЧтениеJSON ЗаписьJSON API REST отладка инструментарий разработчика дерево JSON форматирование JSON

См. также

Инструментарий разработчика Чистка данных Свертка базы Инструменты администратора БД Системный администратор Разработчик Руководитель проекта 1С:Предприятие 8 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 Россия Платные (руб)

Инструмент представляет собой обработку для проведения свёртки или обрезки баз данных. Работает на ЛЮБЫХ конфигурациях (УТ, БП, ERP, УНФ, КА и т.д.). Поддерживаются серверные и файловые базы, управляемые и обычные формы, интерфейс 8.5. Может выполнять свертку одновременно в несколько потоков, а также без непосредственного участия пользователя. Решение в Реестре отечественного ПО.

24900 руб.

20.08.2024    79570    405    171    

341

Инструментарий разработчика Роли и права Запросы СКД Разработчик Руководитель проекта 1С:Предприятие 8 Платные (руб)

Инструменты для разработчиков 1С 8.3 и 8.5: Infostart Toolkit. Автоматизация и ускорение разработки на управляемых формах. Легкость работы с 1С.

16500 руб.

02.09.2020    277965    1564    423    

1205

Разработка Инструментарий разработчика Групповая разработка (Git, хранилище) Разработчик Платные (руб)

Практический курс по работе с AI-агентами для разработчиков 1С уровня middle и senior, а также тимлидов команд: от постановки задач и передачи контекста до создания расширений, интеграций, MCP-инструментов, тестов и проверки готового решения.

50000 руб.

10.09.2026    2242    17    0    

12

Пакетная печать Печатные формы Инструментарий разработчика Разработчик 1С:Предприятие 8 Платные (руб)

Расширение для создания и редактирования печатных форм в системе 1С:Предприятие 8.3. Благодаря конструктору можно значительно снизить затраты времени на разработку печатных форм, повысить качество и прозрачность разработки, а также навести порядок в многообразии корпоративных печатных форм. Обновление версии от 21.04.26

22570 руб.

06.10.2023    42464    117    54    

131

Инструментарий разработчика Разработка Администрирование веб-серверов Системный администратор Разработчик Аналитик Руководитель проекта 1С 8.3 Платные (руб)

Analyzer 1C сводит выгрузку 1С — основную конфигурацию и все расширения — в единый граф знаний. Любой запрос по связям за доли секунды, с пометками «Доб.» / «Заимств.» / «Переопределено». Новое в 2.0 — обновление поставки: сравнение и объединение версий деревом «как в Конфигураторе» с выгрузкой плана решений; поиск конфликтов из-за перехватов расширений и висячих ссылок; загрузка из бинарных .cf/.cfe; циклические зависимости. Плюс анализ влияния, запросы BSL, роли и RLS, граф вызовов. Минута на развёртывание через Docker без необходимости подключения к Интернет. Любая 1С:Предприятие 8.3+.

14000 руб.

17.04.2026    12964    50    62    

60

Инструментарий разработчика Нейросети Платные (руб)

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

15250 руб.

25.08.2025    70736    140    41    

148

Инструменты администратора БД Инструментарий разработчика Роли и права Разработчик 1С:Предприятие 8 1C:Бухгалтерия Россия Платные (руб)

Расширение позволяет без изменения кода конфигурации выполнять проверки при вводе данных, скрывать от пользователя недоступные ему данные, выполнять код в обработчиках. Не изменяет данные конфигурации, легко устанавливается практически на любую конфигурацию на управляемых формах.

17000 руб.

10.11.2023    27811    101    46    

107

Мастера заполнения Поиск данных Инструментарий разработчика Подбор и обработка объектов 1С 8.3 1С 8.5 Платные (руб)

Infostart MagicInput улучшает подбор в полях ввода 1С: ищет по любой части названия и по нескольким ключевым фрагментам, распознаёт ввод в другой раскладке и показывает иконки/статусы объектов прямо в списке. Поддерживает вставку навигационной ссылки/представления документа для автоподбора; для разработчиков доступны поиск по GUID и полному имени предопределённого. Работает в управляемых формах и подключается в большинстве конфигураций 1С 8.3/8.5. Работает на возможностях платформы, внешние компоненты не используются.

6000 руб.

25.02.2026    6067    21    1    

21
Для отправки сообщения требуется регистрация/авторизация