XML Сериализация ссылочных типов
Приветствую, коллеги!
Пытаюсь сериализовать объект следующим кодом:
На выходе получается следующая строка:
Видно, что ссылки на другие элементы базы сериализуются в виде GUID (<HeadTask xsi:type="TaskRef.Задачи">93fa4177-f3fc-11ea-a1b2-5453ed2d91ea</HeadTask>).
Можно ли сделать так, чтобы если в сериализуемом объекте встречались ссылки, на другие элементы БД, то они тоже сериализовались полностью, а не в виде GUID?
Пытаюсь сериализовать объект следующим кодом:
Сериализатор = Новый Сериализатор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.ВнесениеРеквизитов>
Показать<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?
По теме из базы знаний
Ответы
В избранное
Подписаться на ответы
Сортировка:
Древо развёрнутое
Свернуть все
(4) Получаете от ссылки объект и сериализуете. В полной аналогии с вашим примером с объектом бизнес-процесса.
Автоматической "глубокой" сериализации в платформе нет. А задачу какую решаете? Если обмена, то может стоит воспользоваться механизмами КД (которая уже умеет делать "глубокую" сериализацию в свой формат)?
Автоматической "глубокой" сериализации в платформе нет. А задачу какую решаете? Если обмена, то может стоит воспользоваться механизмами КД (которая уже умеет делать "глубокую" сериализацию в свой формат)?
Вангую, что таким образом автоматически сериализуются только стандартные реквизиты объекта.
В данном случае Задача - это стандартный реквизит бизнес-процесса.
То есть это реквизит "платформенный", который можно нормально десериализовать в любой другой конфигурациии.
Реквизиты, добавляемые разработчиком в дереве конфигурации автоматически сериализуются по другим правилам.
Но, как уже сказано - вручную вы можете засериализовать все так, как вам будет удобнее. Вопрос только в том, что и десерализацию в приемнике вам тоже придется писать ручками.
В данном случае Задача - это стандартный реквизит бизнес-процесса.
То есть это реквизит "платформенный", который можно нормально десериализовать в любой другой конфигурациии.
Реквизиты, добавляемые разработчиком в дереве конфигурации автоматически сериализуются по другим правилам.
Но, как уже сказано - вручную вы можете засериализовать все так, как вам будет удобнее. Вопрос только в том, что и десерализацию в приемнике вам тоже придется писать ручками.
Вакансии
Аналитик 1С / Бизнес-аналитик
Нижний Новгород
зарплата от 100 000 руб. до 250 000 руб.
Временный (на проект)
Нижний Новгород
зарплата от 100 000 руб. до 250 000 руб.
Временный (на проект)