|
Как упаковать весь объект (справочник) в JSON? | ☑ | ||
|---|---|---|---|---|
|
0
1сПупс
24.02.26
✎
13:34
|
Коллеги, доброго дня!
Есть элемент справочника ФизическиеЛица который нужно весь (со всеми реквизитами упаковать в JSON) Нашел метод глобального контекста ЗаписатьJSON: Выборка = ПланыОбмена.ВыбратьИзменения(Узел, Узел.НомерОтправленного); Пока Выборка.Следующий() Цикл Источник = Выборка.Получить(); //Спр ФизЛица ЗаписьJSON = Новый ЗаписьJSON; ЗаписьJSON.УстановитьСтроку(); ЗаписатьJSON(ЗаписьJSON,Источник); //ошибка: обнаружены несовместимые типы СтрокаJSON=ЗаписьJSON.Закрыть(); КонецЦикла; Читаю СП, понимаю что передаю пустые ссылки (Родитель) и мне нужно преобразовывать это. Куда копать?
|
|||
|
1
craxx
24.02.26
✎
13:41
|
(0) ну сначала в структуру потом структуру в json.
Алгоритм предлагаю самому написать. |
|||
|
2
ass1c
24.02.26
✎
13:52
|
Вроде бы все уже давно придумали.
https://wonderland.v8.1c.ru/blog/serializatsiya-prikladnykh-tipov-1s-predpriyatiya-v-json/?sphrase_id=10255057
|
|||
|
3
p-soft
24.02.26
✎
13:47
|
(0) ссылочные типы нельзя, преобразовывать надо. например, через XMLСтрока(). выгружаем уид справочника/документа или код перечисления, а получатель уже сам определяет алгоритм поиска.
если весь объект, то формируем пакет из его атрибутов. такой способ позволяет не привязываться к конкретным метаданным |
|||
|
4
Маленький Вопросик
24.02.26
✎
13:56
|
сериализатор шляпа... тянет не значения, гуиды.... у меня есть где-то обработки под твою задачу (0) - найду выложу где надо....
|
|||
|
5
1сПупс
24.02.26
✎
14:32
|
(2) теперь кажется понял, у меня на входе метода была ссылка справочника, и СериализаторXDTO.ЗаписатьJSON выводило JSON только с гуидом, когда передал тип Объект, вернулся JSON со всеми реквизитами, благодарю!
СериализаторXDTO.ЗаписатьJSON(ЗаписьJSON,Источник.ПолучитьОбъект(),НазначениеТипаXML.Явное); |
|||
|
6
ass1c
24.02.26
✎
14:40
|
(5) +. Да, иногда такие нюансы можно упустить и потратить из-за того кучу времени.
|
|||
|
7
craxx
24.02.26
✎
14:41
|
(5) так ссылочные реквизиты он тебе ГУИДами сериализует.
Надо таки в структуру. Или хотя бы цель сериализации напиши |
|||
|
8
Маленький Вопросик
24.02.26
✎
15:04
|
(7) обмен пишет... с
|
|||
|
9
Stepashkin
24.02.26
✎
15:09
|
(2) 👍
|
|||
|
10
ProxyInspector
24.02.26
✎
15:14
|
У меня есть сериализатор любого объекта 1с типа ДокументСсылка, СправочникСсылка, ДокументОбъект, СправочникОбъект, Массив, Структура, Соответствие, Дата, ТаблизаЗначений, Перечисление, ХранилищеЗначения.
Там примерно 500 строк кода. Как это описать я не знаю. |
|||
|
11
ProxyInspector
24.02.26
✎
15:16
|
Примерно так :)
Функция СформироватьСтрокаJSON(Элемент, ПараметрыОбработки = Неопределено) Экспорт ЕСЛИ ПараметрыОбработки = Неопределено ТОГДА ПараметрыОбработки = Новый Соответствие; КОНЕЦЕСЛИ; ЗаписьJSON = Новый ЗаписьJSON; ПараметрыJSON = Новый ПараметрыЗаписиJSON(ПереносСтрокJSON.Авто, " ", Истина); ЗаписьJSON.УстановитьСтроку(ПараметрыJSON); ЗаписьJSON.ПроверятьСтруктуру = Истина; ЗначениеJSON(ЗаписьJSON,Элемент, ПараметрыОбработки); СтрокаJSON = ЗаписьJSON.Закрыть(); Возврат СтрокаJSON; КонецФункции |
|||
|
12
ProxyInspector
24.02.26
✎
15:17
|
Осталось только функция ЗначениеJSON()
на 500 строк кода |
|||
|
13
ProxyInspector
24.02.26
✎
15:20
|
Самое интересное это не Сериализатор в JSON, а Десериализатор из JSON.
|
|||
|
14
ProxyInspector
24.02.26
✎
15:25
|
Процедура ЗначениеJSON(ЗаписьJSON, ТекДанные, ПараметрыОбработки = Неопределено) Экспорт
Значение = ТекДанные; ... ИначеЕсли Справочники.ТипВсеСсылки().СодержитТип(ТипЗначения) Тогда ЗаписьJSON.ЗаписатьНачалоОбъекта(); МД = Значение.Метаданные(); ИмяСправочника = МД.Имя; ЗаписьJSON.ЗаписатьИмяСвойства("Тип"); ЗаписьJSON.ЗаписатьЗначение("СправочникСсылка."+ИмяСправочника ); ЗаписьJSON.ЗаписатьИмяСвойства("GUID"); ЗаписьJSON.ЗаписатьЗначение(Строка(Значение.УникальныйИдентификатор()) ); ЭтоГруппа = Значение.ЭтоГруппа; ЗаписьJSON.ЗаписатьИмяСвойства("ЭтоГруппа"); ЗаписьJSON.ЗаписатьЗначение(ЭтоГруппа ); ЗаписьJSON.ЗаписатьИмяСвойства("Код"); ЗаписьJSON.ЗаписатьЗначение(Значение.Код ); ЗаписьJSON.ЗаписатьИмяСвойства("Наименование"); ЗаписьJSON.ЗаписатьЗначение(Строка(Значение.Наименование) ); ЗаписьJSON.ЗаписатьИмяСвойства("Представление"); ЗаписьJSON.ЗаписатьЗначение(СокрЛП(Значение) ); ТекИмяРеквизита = "Владелец"; ТекЗначениеРеквизита = Значение[ТекИмяРеквизита]; ЗаписьJSON.ЗаписатьИмяСвойства(ТекИмяРеквизита); ЗначениеJSON(ЗаписьJSON, ТекЗначениеРеквизита, ПараметрыОбработки); ... КонецПроцедуры Где то так |
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |