База знаний Одина — Одинэсника › Форумы › ODIN — Форум по 1С Предприятию › Как выгрузить объект 1С со всеми реквизитами в JSON?
- В этой теме 1 ответ, 2 участника, последнее обновление 3 недели назад сделано
Odin — Одинэсник.
-
АвторСообщения
-
-
26 января 2026 в 15:45 #35579
выгрузить объект со всеми реквизитами в json
-
26 января 2026 в 15:45 #35580
Николай, чтобы выгрузить объект 1С со всеми реквизитами в JSON, нужно пройтись по всем реквизитам объекта и сформировать структуру, которую потом сериализовать в JSON. Вот пример кода на 1С, который выгружает объект (например, элемент справочника или документ) в JSON с использованием стандартных средств платформы 1С:
1С (Код)12345678910111213141516171819202122232425262728293031323334353637383940414243Функция ВыгрузитьОбъектВJSON(ОбъектСсылка) Экспорт// Получаем объект по ссылкеОбъект = ОбъектСсылка.ПолучитьОбъект();// Создаем структуру для хранения данныхДанные = Новый Структура;// Получаем метаданные объектаМетаданныеОбъекта = ОбъектСсылка.Метаданные();// Перебираем реквизиты объектаДля Каждого Реквизит Из МетаданныеОбъекта.Реквизиты ЦиклИмяРеквизита = Реквизит.Имя;ЗначениеРеквизита = Объект[ИмяРеквизита];// Если реквизит - это ссылка на другой объект, можно выгрузить его код или строковое представлениеЕсли ТипЗнч(ЗначениеРеквизита) = Тип("СправочникСсылка") Или ТипЗнч(ЗначениеРеквизита) = Тип("ДокументСсылка") ТогдаЕсли ЗначениеРеквизита = Неопределено ТогдаДанные.Вставить(ИмяРеквизита, Неопределено);Иначе// Можно выгрузить ссылку в виде строкиДанные.Вставить(ИмяРеквизита, ЗначениеРеквизита.Представление());КонецЕсли;ИначеЕсли ТипЗнч(ЗначениеРеквизита) = Тип("Дата") Тогда// Форматируем дату в ISO 8601Если ЗначениеРеквизита = Неопределено ТогдаДанные.Вставить(ИмяРеквизита, Неопределено);ИначеДанные.Вставить(ИмяРеквизита, Формат(ЗначениеРеквизита, "ДФ=yyyy-MM-ddTHH:mm:ss"));КонецЕсли;Иначе// Для остальных типов просто вставляем значениеДанные.Вставить(ИмяРеквизита, ЗначениеРеквизита);КонецЕсли;КонецЦикла;// Создаем объект записи JSONЗаписьJSON = Новый ЗаписьJSON;// Записываем структуру в строкуСтрокаJSON = ЗаписьJSON.ЗаписатьСтрокуJSON(Данные);Возврат СтрокаJSON;КонецФункцииПример использования:
1С (Код)12345СсылкаНаОбъект = Справочники.Номенклатура.НайтиПоКоду("0000001");Если СсылкаНаОбъект <> Неопределено ТогдаJSONСтрока = ВыгрузитьОбъектВJSON(СсылкаНаОбъект);Сообщить(JSONСтрока);КонецЕсли;Объяснение:
— Получаем объект по ссылке.
— Перебираем все реквизиты метаданных объекта.
— Для каждого реквизита получаем значение.
— Если реквизит — это ссылка на другой объект, выгружаем его строковое представление (можно заменить на код или другую информацию).
— Для дат форматируем в ISO 8601.
— Для остальных типов просто вставляем значение.
— Используем стандартный объект ЗаписьJSON для сериализации структуры в JSON.Если нужно выгружать вложенные объекты (например, табличные части или реквизиты-ссылки с детализацией), то нужно рекурсивно вызывать такую же функцию для вложенных объектов.
Если у вас 1С версии 8.3.10 и выше, то можно использовать встроенный метод
Объект.ЗаписатьJSON(), но он не всегда удобен для кастомизации.Если нужна помощь с выгрузкой табличных частей или более сложных структур — могу помочь с кодом.
-
-
АвторСообщения
- Для ответа в этой теме необходимо авторизоваться.