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

1. alext88 7 14.09.20 09:08 Сейчас в теме +1 $m
Приветствую, коллеги!
Пытаюсь сериализовать объект следующим кодом:
	Сериализатор = Новый Сериализатор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 71 14.09.20 10:11 Сейчас в теме
(1)Проверяете реквизиты у сериализуемого объекта, если есть ссылочный тип и заполнен, то серилиализуете и его.
Но так реально можно всю БД сериализовать.....
4. alext88 7 14.09.20 10:16 Сейчас в теме
(3) Там глубина не большая. Максимум 1 ссылка в сериализуемом объекте. Не могу найти пример, как сделать сериализацию ссылки...
5. nomad_irk 71 14.09.20 10:18 Сейчас в теме
(4)Вы же сами сделали сериализацию ссылки, делайте для любого значения ссылочного типа.
6. herfis 498 14.09.20 10:36 Сейчас в теме
(4) Получаете от ссылки объект и сериализуете. В полной аналогии с вашим примером с объектом бизнес-процесса.
Автоматической "глубокой" сериализации в платформе нет. А задачу какую решаете? Если обмена, то может стоит воспользоваться механизмами КД (которая уже умеет делать "глубокую" сериализацию в свой формат)?
8. Drivingblind 227 14.09.20 10:43 Сейчас в теме
(1) Как вариант, можно посмотреть обработку "Выгрузка и загрузка данных XML", там реализованы эти механизмы
2. oleg-x 26 14.09.20 09:58 Сейчас в теме
А в той ссылке, тоже ссылки, их тоже сериализовать?
Так можно и до бесконечности ждать формирования файла.
7. FatPanzer 14.09.20 10:42 Сейчас в теме
Вангую, что таким образом автоматически сериализуются только стандартные реквизиты объекта.
В данном случае Задача - это стандартный реквизит бизнес-процесса.
То есть это реквизит "платформенный", который можно нормально десериализовать в любой другой конфигурациии.
Реквизиты, добавляемые разработчиком в дереве конфигурации автоматически сериализуются по другим правилам.

Но, как уже сказано - вручную вы можете засериализовать все так, как вам будет удобнее. Вопрос только в том, что и десерализацию в приемнике вам тоже придется писать ручками.
9. serovmsk 2 18.09.22 22:41 Сейчас в теме
Оставьте свое сообщение
Вакансии
1С аналитик
Москва
зарплата от 210 000 руб.
Полный день

Руководитель направления 1С
Москва
зарплата от 350 000 руб.
Полный день

1С Программист
Москва
зарплата от 180 000 руб.
Полный день

Программист 1С
Москва
зарплата от 180 000 руб. до 220 000 руб.
Полный день

Аналитик 1С / Бизнес-аналитик
Нижний Новгород
зарплата от 100 000 руб. до 250 000 руб.
Временный (на проект)