Сериализатор XDTO #578965


#0 by 80ksa
Есть простой код Валюта - реквизит формы - СправочникСсылка.Валюты После этого кода создается XML файл, в котором записана выбранная валюта со всеми реквизитами. Если нужно создать свою систему, где например, валюта сериализуется в XML не по всем реквизитам, а только по некоторым, значит логично нужно создать свой пакетXDTO, на основании него создать ФабрикуXDTO и сформировать XML, как и выше, а именно, указать Сериализатору ВалютуОбъект, которую он по правилам, имеющимся в фабрике обработает. написал код но в итоге выдает ошибку {Форма.Форма.Форма}: Ошибка при вызове метода контекста (ЗаписатьXML)    Сериализатор.ЗаписатьXML(Запись, ВалютаОбъект); по причине: Несоответствие типов (параметр номер '2') (Ошибка отображения типов) Как будто бы требует, что  бы тип был не СправочникОбъект, а объектXDTO кто пробовал создавать свои пакетыXDTO ,а ФабрикуXDTO программно. КАК потом происходит сериализация: способом указанным выше или заполняется каждый реквизит в отдельности?
#1 by Amiralnar
Вроде в демо конфигурации по веб сервисам - происходит заполнение каждого реквизита. Только сперва создается объект вашего типа, и на него ЗаполнитьЗначенияСвойств. Вроде так.
#2 by 80ksa
Благодарю, этот способ мне известен. Буду хитрить дальше, попробую свою фабрику создать на основе схемы XML (*.xsd)
#3 by 80ksa
Итак, воспользовавшись , имеем: А именно, записались реквизиты только те, которые соответствуют моему пакету, в нем определено два реквизита Код и Наименование у типа объекта. Но теперь не читается файл с данными, обратно не сериализует. ПРИЧИНА: Ошибка отображения типов: Отсутствует отображение для типа '{' ДЕЙСТВИТЕЛЬНО, для типа объекта Валюта в пакете Базовый тип не указан. Если его указать как CatalogObject.Валюты ИЗ , то при проверке пакета будет ошибка: Базовый тип отсутствует CatalogObject.Валюты  или не определен; Если это пространство имен добавить в пакете как Директивы импорта, тогда проверка пакета удачна, но при выполнении кода ошибка даже на этапе создания фабрики Фабрика = Новый ФабрикаXDTO(НаборСхемХМЛ) --- Импортируемый пакет типов '' не определен. Ну что всех запутал, я сам запутался, подскажите еще мысли.
#4 by Amiralnar
А сериализатор у тебя на основании какой фабрики? Должен быть твой пакет XDTO, как понимаю. И прочитаешь ты РОВНО то и такого типа, что ты удачно записал в первом примере. А потом, как я понимаю, ты создаешь валюту метедом "Справочники.Валюты.СоздатьЭлемент", и в нем заполняешь свойства из прочитанного объекта методом "ЗаполнитьЗначенияСвойств" Демонстрационная конфигурация "Web-сервисы" иллюстрирует использование следующих механизмов: определение схемы данных; получение описания Web-сервиса; динамическое создание прокси Web-сервиса; статическое создание прокси Web-сервиса на основе WS-ссылки; вызов операции Web-сервиса; работу с объектами передачи данных (XDTO).
#5 by 80ksa
благодарю за советы, частично ими воспользовавшись имеем схему обмена для разнородных конфигураций через XDTO: в документе расходная накладная: После нажатия кнопки имеем файл xml (фрагмент) <Документ xmlns="http://www.sample-package.org" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> в документе приходная накладная: Где -это пакет XDTO, созданный в ветке конфигурации ОБЩИЕ, и который присутствует в конфигурации источнике и конфигурации приемнике, пакет самодостаточен, т.е. не ссылается другие пространства имен, типа
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С