Как выгрузить справочник с реквизитами в JSON используя 1С?

База знаний Одина — Одинэсника Форумы ODIN — Форум по 1С Предприятию Как выгрузить справочник с реквизитами в JSON используя 1С?

Просмотр 1 ветки ответов
  • Автор
    Сообщения
    • #34487
      Телеграм группа https://t.me/odineskiOdineski
      Участник

        выгрузка справочника со всеми свойствами в json

      • #34488
        bot_avaOdin — Одинэсник
        Участник

          Николай, для выгрузки справочника со всеми свойствами в JSON в 1С:Предприятии можно использовать встроенные механизмы сериализации XDTO с записью в JSON. Вот пример процедуры, которая выгружает все элементы справочника с их реквизитами в JSON-файл:

          &НаСервереБезКонтекста
          Процедура ВыгрузитьСправочникВJSON(ИмяСправочника, ИмяФайла)
          	
          	// Получаем справочник по имени
          	Справочник = Справочники[ИмяСправочника];
          	
          	// Создаем объект записи JSON
          	Запись = Новый ЗаписьJSON;
          	ПараметрыЗаписиJSON = Новый ПараметрыЗаписиJSON(ПереносСтрокJSON.Авто, Символы.Таб);
          	Запись.ОткрытьФайл(ИмяФайла,,, ПараметрыЗаписиJSON);
          	
          	// Начинаем запись корневого объекта
          	Запись.ЗаписатьНачалоОбъекта();
          	
          	// Получаем выборку по справочнику
          	Выборка = Справочник.Выбрать();
          	
          	Пока Выборка.Следующий() Цикл
          		// Получаем объект элемента справочника
          		Объект = Выборка.ПолучитьОбъект();
          		
          		// Записываем элемент справочника с указанием типа (для корректной десериализации)
          		СериализаторXDTO.ЗаписатьJSON(Запись, Объект, НазначениеТипаXML.Явное);
          		
          		// Если нужно, можно добавить разделитель между элементами (например, запятую), 
          		// но в JSON это нужно делать аккуратно, поэтому лучше формировать массив (см. ниже)
          	КонецЦикла;
          	
          	// Завершаем корневой объект
          	Запись.ЗаписатьКонецОбъекта();
          	
          	// Закрываем файл
          	Запись.Закрыть();
          	
          	Сообщить("Выгрузка справочника " + ИмяСправочника + " в JSON завершена.");
          	
          КонецПроцедуры
          

          Однако такой подход создаст JSON с набором объектов без массива, что не всегда удобно. Лучше формировать JSON-массив, где каждый элемент — это объект справочника. Вот пример с формированием массива:

          &НаСервереБезКонтекста
          Процедура ВыгрузитьСправочникВJSON_Массив(ИмяСправочника, ИмяФайла)
          	
          	Справочник = Справочники[ИмяСправочника];
          	
          	Запись = Новый ЗаписьJSON;
          	ПараметрыЗаписиJSON = Новый ПараметрыЗаписиJSON(ПереносСтрокJSON.Авто, Символы.Таб);
          	Запись.ОткрытьФайл(ИмяФайла,,, ПараметрыЗаписиJSON);
          	
          	// Записываем начало массива
          	Запись.ЗаписатьНачалоМассива();
          	
          	Выборка = Справочник.Выбрать();
          	
          	Пока Выборка.Следующий() Цикл
          		Объект = Выборка.ПолучитьОбъект();
          		// Записываем объект с явным указанием типа
          		СериализаторXDTO.ЗаписатьJSON(Запись, Объект, НазначениеТипаXML.Явное);
          	КонецЦикла;
          	
          	// Записываем конец массива
          	Запись.ЗаписатьКонецМассива();
          	
          	Запись.Закрыть();
          	
          	Сообщить("Выгрузка справочника " + ИмяСправочника + " в JSON завершена.");
          	
          КонецПроцедуры
          

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

          Если нужно выгрузить конкретный справочник, например «Сотрудники», вызов будет таким:

          ВыгрузитьСправочникВJSON_Массив("Сотрудники", "C:tempSotrudniki.json");
          

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

          Рекомендую посмотреть здесь: https://infostart.ru/public/1153191/ — там подробно описаны техники сериализации и примеры работы с JSON в 1С.

          Если нужна помощь с конкретным кодом или форматом — обращайтесь!

      Просмотр 1 ветки ответов
      • Для ответа в этой теме необходимо авторизоваться.
      База знаний 1С