XML Сериализация ссылочных типов

1. alext88 5 14.09.20 09:08 Сейчас в теме
Приветствую, коллеги!
Пытаюсь сериализовать объект следующим кодом:
	Сериализатор = Новый СериализаторXDTO(ФабрикаXDTO);
	ЗаписьXML = Новый ЗаписьXML();
	ЗаписьXML.УстановитьСтроку();
	Сериализатор.ЗаписатьXML(ЗаписьXML, Ссылка.ПолучитьОбъект());	
	ПередаваемоеЗначение=ЗаписьXML.Закрыть();


На выходе получается следующая строка:
<BusinessProcessObject.ВнесениеРеквизитов xmlns="http://v8.1c.ru/8.1/data/enterprise/current-config" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Ref>93fa4178-f3fc-11ea-a1b2-5453ed2d91ea</Ref>
<DeletionMark>false</DeletionMark>
<Date>2020-09-11T12:01:13</Date>
<Number>000000015</Number>
<Completed>false</Completed>
<HeadTask xsi:type="TaskRef.Задачи">93fa4177-f3fc-11ea-a1b2-5453ed2d91ea</HeadTask>
<Started>true</Started>
<ШаблонПроцесса>false</ШаблонПроцесса>
<Наименование/>
<ПолноеНаименование/>
<ОРГН/>
<ИНН/>
<КПП/>
<ЮридическийАдрес/>
<ПочтовыйАдрес/>
<ФактическийАдрес/>
<ТелефонФакс/>
<Email/>
</BusinessProcessObject.ВнесениеРеквизитов>
Показать


Видно, что ссылки на другие элементы базы сериализуются в виде GUID (<HeadTask xsi:type="TaskRef.Задачи">93fa4177-f3fc-11ea-a1b2-5453ed2d91ea</HeadTask>).
Можно ли сделать так, чтобы если в сериализуемом объекте встречались ссылки, на другие элементы БД, то они тоже сериализовались полностью, а не в виде GUID?
Ответы
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
3. nomad_irk 48 14.09.20 10:11 Сейчас в теме
(1)Проверяете реквизиты у сериализуемого объекта, если есть ссылочный тип и заполнен, то серилиализуете и его.
Но так реально можно всю БД сериализовать.....
4. alext88 5 14.09.20 10:16 Сейчас в теме
(3) Там глубина не большая. Максимум 1 ссылка в сериализуемом объекте. Не могу найти пример, как сделать сериализацию ссылки...
5. nomad_irk 48 14.09.20 10:18 Сейчас в теме
(4)Вы же сами сделали сериализацию ссылки, делайте для любого значения ссылочного типа.
6. herfis 372 14.09.20 10:36 Сейчас в теме
(4) Получаете от ссылки объект и сериализуете. В полной аналогии с вашим примером с объектом бизнес-процесса.
Автоматической "глубокой" сериализации в платформе нет. А задачу какую решаете? Если обмена, то может стоит воспользоваться механизмами КД (которая уже умеет делать "глубокую" сериализацию в свой формат)?
8. Drivingblind 130 14.09.20 10:43 Сейчас в теме
(1) Как вариант, можно посмотреть обработку "Выгрузка и загрузка данных XML", там реализованы эти механизмы
2. oleg-x 15 14.09.20 09:58 Сейчас в теме
А в той ссылке, тоже ссылки, их тоже сериализовать?
Так можно и до бесконечности ждать формирования файла.
7. FatPanzer_Job 5 14.09.20 10:42 Сейчас в теме
Вангую, что таким образом автоматически сериализуются только стандартные реквизиты объекта.
В данном случае Задача - это стандартный реквизит бизнес-процесса.
То есть это реквизит "платформенный", который можно нормально десериализовать в любой другой конфигурациии.
Реквизиты, добавляемые разработчиком в дереве конфигурации автоматически сериализуются по другим правилам.

Но, как уже сказано - вручную вы можете засериализовать все так, как вам будет удобнее. Вопрос только в том, что и десерализацию в приемнике вам тоже придется писать ручками.
Оставьте свое сообщение
Вопросы с вознаграждением