База знаний Одина — Одинэсника › Форумы › ODIN — Форум по 1С Предприятию › Как выгрузить справочник «Категории номенклатуры» с характеристиками в JSON в УН › Ответ в теме: Как выгрузить справочник «Категории номенклатуры» с характеристиками в JSON в УН
В конфигурации «Управление нашей фирмой» (УНФ) 3.0.12.211 для выгрузки справочника «Категории номенклатуры» со значениями характеристик в формате JSON потребуется написать собственный код на встроенном языке 1С, так как типовой функционал выгрузки в JSON для справочников с вложенными характеристиками отсутствует.
Общий подход следующий:
1. **Получить данные из справочника «Категории номенклатуры»**
Выполнить запрос или перебор элементов справочника, получить основные реквизиты категорий.
2. **Для каждой категории получить связанные характеристики**
В УНФ характеристики категорий хранятся в справочнике «Характеристики категорий номенклатуры» (или аналогичном). Нужно получить все характеристики, у которых владелец — текущая категория.
3. **Сформировать структуру данных для JSON**
Для каждой категории создать структуру с реквизитами категории и массивом характеристик, где каждая характеристика — это структура с нужными реквизитами (код, наименование и т.п.).
4. **Преобразовать структуру в JSON**
Использовать стандартный механизм 1С — объект JSON и метод ЗаписатьСтрокуJSON или ПреобразоватьВJSON.
—
### Пример кода выгрузки
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 |
Процедура ВыгрузитьКатегорииСХарактеристикамиВJSON() Результат = Новый Массив; // Получаем все категории номенклатуры Категории = Справочники.КатегорииНоменклатуры.Выбрать(); Пока Категории.Следующий() Цикл КатегорияСтруктура = Новый Структура; КатегорияСтруктура.Вставить("Ссылка", Категории.Ссылка); КатегорияСтруктура.Вставить("Код", Категории.Код); КатегорияСтруктура.Вставить("Наименование", Категории.Наименование); // Получаем характеристики для текущей категории Характеристики = Новый Массив; Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | Характеристики.Ссылка КАК Ссылка, | Характеристики.Код КАК Код, | Характеристики.Наименование КАК Наименование |ИЗ | Справочник.ХарактеристикиКатегорийНоменклатуры КАК Характеристики |ГДЕ | Характеристики.Владелец = &Категория"; Запрос.УстановитьПараметр("Категория", Категории.Ссылка); РезультатЗапроса = Запрос.Выполнить(); ВыборкаХар = РезультатЗапроса.Выбрать(); Пока ВыборкаХар.Следующий() Цикл ХарСтруктура = Новый Структура; ХарСтруктура.Вставить("Ссылка", ВыборкаХар.Ссылка); ХарСтруктура.Вставить("Код", ВыборкаХар.Код); ХарСтруктура.Вставить("Наименование", ВыборкаХар.Наименование); Характеристики.Добавить(ХарСтруктура); КонецЦикла; КатегорияСтруктура.Вставить("Характеристики", Характеристики); Результат.Добавить(КатегорияСтруктура); КонецЦикла; // Преобразуем в JSON JSONСтрока = ОбщегоНазначения.ПреобразоватьВJSON(Результат); // Записываем в файл ИмяФайла = КаталогВременныхФайлов() + "КатегорииНоменклатурыСХарактеристиками.json"; ЗаписьФайла = Новый Файл(ИмяФайла); ПотокЗаписи = ЗаписьФайла.ПолучитьПотокЗаписи(); ПотокЗаписи.ЗаписатьСтроку(JSONСтрока); ПотокЗаписи.Закрыть(); Сообщить("Выгрузка завершена. Файл: " + ИмяФайла); КонецПроцедуры |
—
### Важные моменты:
— В УНФ 3.0.12.211 справочник характеристик категорий может называться иначе, уточните точное имя в вашей базе.
— Если характеристик много, можно добавить фильтрацию или пагинацию.
— Для более сложных структур можно расширить структуру данных.
— Для удобства можно сделать обработку с выбором пути сохранения файла.
—
### Рекомендации
— Используйте встроенный механизм ОбщийМодуль.ОбщегоНазначения.ПреобразоватьВJSON для преобразования структур и массивов в JSON.
— Если требуется выгрузка с учетом вложенных характеристик номенклатуры, то алгоритм аналогичный, только меняется справочник и связи.
— Для отладки можно выводить промежуточные данные через Сообщить.
—
Рекомендую посмотреть здесь:
https://infostart.ru/public/1012589/ (пример обхода характеристик)
https://infostart.ru/public/137862/ (работа с табличными документами и JSON)
https://infostart.ru/public/1839811/ (работа со справочниками в УНФ)