Всем привет!
Никто не подскажет как это сделать?
Дело в чем ...
Хотя ладно .... скину часть задачи
Вот эту частьФункция Сериализация(СоединениеCOM,СериализуемыйОбъектИлиСсылка) Экспорт
//============================
//Многие говорят "Попытка/Исключение " это "Манера плохого тона". Но при этом не понимают, что хороший тон еще нужно заслуживать.
//А те которые на пример написали функцию: "ТипЗнч(Значение)" другого тона точно не зауживают.
//Поэтому вынужден был в таком тоне.... И хороший программист итак поймет почему решил только в таком тоне.
Попытка знОбъектИлиСсылка=СериализуемыйОбъектИлиСсылка.ПолучитьОбъект(); Исключение знОбъектИлиСсылка=СериализуемыйОбъектИлиСсылка КонецПопытки;
//============================
Если СоединениеCOM=Неопределено Тогда
Дерево=СериализаторXDTO.ЗаписатьXDTO(знОбъектИлиСсылка);
ЗаписьXML=Новый ЗаписьXML;
ЗаписьXML.УстановитьСтроку();
ФабрикаXDTO.ЗаписатьXML(ЗаписьXML,Дерево); //Сообщить(Ф.Параметры);
Иначе
Дерево=СоединениеCOM.СериализаторXDTO.ЗаписатьXDTO(знОбъектИлиСсылка);
ЗаписьXML = СоединениеCOM.NewObject("ЗаписьXML");
ЗаписьXML.УстановитьСтроку();
СоединениеCOM.ФабрикаXDTO.ЗаписатьXML(ЗаписьXML,Дерево);
КонецЕсли;
//============================
Возврат ЗаписьXML.Закрыть();
КонецФункции
Функция Десериализация(СоединениеCOM,ТекстXML,ВозвратСсылкаОбъект) Экспорт
//============================
Если СоединениеCOM=Неопределено Тогда
ПарсерXML=Новый ЧтениеXML;
ПарсерXML.УстановитьСтроку(ТекстXML); //Сообщить(ТекстXML+Символы.ПС+Строка(ПарсерXML)+" - "+ТипЗнч(ПарсерXML));
Иначе
ПарсерXML = СоединениеCOM.NewObject("ЧтениеXML");
ПарсерXML.УстановитьСтроку(ТекстXML); //Сообщить(ПарсерXML);
КонецЕсли;
//============================
Пока ПарсерXML.Прочитать() Цикл
Если ПарсерXML.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда
МетаОбъект=ПарсерXML.Имя; //Сообщить(МетаОбъект);
Прервать;
КонецЕсли;
КонецЦикла;
//============================
Если СоединениеCOM=Неопределено Тогда
Объект=СериализаторXDTO.ПрочитатьXML(ПарсерXML);
Иначе
Объект=СоединениеCOM.СериализаторXDTO.ПрочитатьXML(ПарсерXML);
КонецЕсли;
//============================
ПарсерXML.Закрыть();
//============================
//Сообщить(МетаОбъект);
Если Найти(МетаОбъект,"Catalog")>0 или Найти(МетаОбъект,"Document")>0 Тогда
Если ВозвратСсылкаОбъект="Ссылка" Тогда Значение=Объект.Ссылка; Иначе Возврат Значение=Объект; КонецЕсли;
Иначе
Значение=Объект;
КонецЕсли;
//============================
//Сообщить(Строка(Значение)+" - "+ТипЗнч(Значение));
Возврат Значение;
КонецФункции
Дело в том, что при перезаписи имеющихся объектов в базе приема по данным объектов базы источника, нужна предварительная десериализация.
Которая осуществляется не по коду или номеру, а по уникальному идентификатору.
Поэтому если на пример у принятого из базы источника документа записанного в XML, на пример номер: "00000002". И если документ с таким же номером имеется в базе приема то команда:
Объект=СериализаторXDTO.ПрочитатьXML(ПарсерXML);
Не вернет его как Объект с номером "00000002". А вместо этого вернет пустое значение объекта.
Поэтому нужно как то при создании нового объекта принудительно записать тот идентификатор который указан в данных XML
Вот собственно и весть вопрос.
Короче ... КАК ОБЪЕКТУ ПРИСВОИТЬ УКАЗАННЫЙ ИДЕНТИФИКАТОР И ТАК ЕГО И ЗАПИСАТЬ.
Никто не подскажет как можно это сделать по быстрому.
Буду признателен!
Gigi @ Сегодня, 16:46
,
Молчание не всегда золото ... че нет отклика?
Gigi @ Сегодня, 17:10
,
Видимо уже не рабочее время...
Ладно... я тоже закруглюсь ...
Но буду признателен за отклик ..