Имя: Пароль:
1C
 
Подскажите по сериализации в XML
0 repin_mike
 
13.12.18
11:53
В базе№1 я записываю в XML определённый документ 1 штука, в базе№2 читаю XML и записываю его в базу.
Записываю в XML так:
Док = Документы.Дефект.НайтиПоНомеру("000000001");
Данные = Док.ПолучитьОбъект();
ЗаписьXML = Новый ЗаписьXML;
ЗаписьXML.УстановитьСтроку();
ЗаписьXML.ЗаписатьОбъявлениеXML();
ЗаписатьXML(ЗаписьXML, Данные);
Строка = ЗаписьXML.Закрыть();

В результате в строке у меня XMLка
<?xml version="1.0"?>
<DocumentObject.Дефект>
    <Ref>ff047e9b-feb1-11e8-ac9e-1c6f65d1d1b8</Ref>
    <DeletionMark>false</DeletionMark>
    <Date>2018-12-13T11:35:08</Date>
    <Number>000000001</Number>
    <Posted>true</Posted>
    <Реквизит1 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; xsi:type="CatalogRef.ОбъектыРемонта">cdee8020-aa60-11e7-80d2-001e67137431</Реквизит1>
</DocumentObject.Дефект>

Соответственно в базе№2 через ЧтениеXML получается объект и записывается.
Вопрос-проблема в том, что мне иногда нужно управлять процессом записи, ну например не передавать какой-либо реквизит, либо наоборот добавить реквизит, который нужен в база№2, но его нет в база№1. Либо вот у меня в приведённой XMLке видно, что Реквизит1 имеет тип СправочникСсылка.ОбъектыРемонта, а в целевой базе он называется СправочникСсылка.Объекты, соответственно при записи XML мне нужно как-то этим процессом управлять. Конечно можно через СтрЗаменить, но хочется понять как это делать правильно.
1 RomanYS
 
13.12.18
12:15
В КД2 это решено
2 RomanYS
 
13.12.18
12:17
(1) + имхо твои хотелки выходят за рамки понятия "сериализация"
3 palsergeich
 
13.12.18
12:17
КД2
Или отказаться от штатной сериализации и придумать свой велосипед.
4 Мыш
 
13.12.18
12:17
(0) > не передавать какой-либо реквизит, либо наоборот добавить реквизит

Поскольку составом данных объекта "ДокОбъект" управлять невозможно, то задача в такой постановке нерешаема.
Ошибка? Это не ошибка, это системная функция.