Сериализация по собственному пакету XDTO #725635


#0 by Zixxx
Можно ли как-то сериализовать объекты по собственному пакету XDTO, например при записи объекта принубильно указать Имя и URI. Пробовал создавать фабрику из собственного пакета, далее на основании фабрики создавать сериализатор либо просто делать через собственную фабрику... Сериализатор.ЗаписатьXML(ЗаписьXML, Номенклатура, "CatalogObject.Алт_Номенклатура", ";) Но всегда ругается что Номенклатура объект не соответствует типу. Видимо потому что тип у объекта номенклатуры всегда определяется из URI Через ЗаполнитьЗначенияСвойств делать не хочется, это уже будет не сериализация. Есть у кого какие мысли или решения?
#1 by Zixxx
ап
#2 by tridog
Это не так работает. и потом можешь работать с объектом а - заполнять значения свойств и т.д. Автоматический марщалинг (СериализаторXTO.Записать...) работает только для типов 1Совских схем.
#3 by Zixxx
Это понятно, но не то что требуется, нужно не заполнение а сериализация. Если после сериализации по данным можно составить схему и импортировать ее в пакет, почему в дальнейшем нельзя указать через какой именно тип я хочу делать сериализацию
#4 by tridog
Просто схемы недостаточно для автоматического маршалинга. Вдруг у тебя в твоей схеме даже свойства Parent нету, куда в таком случае сериализатор должен владельца записывать?
#5 by Zixxx
Пусть будет тоже самое есть обратиться к несуществующему ключу структуры
#6 by tridog
Т.е. ты хочешь сериализацию в свою схему, но только при условии, что своя схема полностью идентична схеме из поставки платформы?
#7 by Zixxx
Дело в том что схема поставки не идентична объекту из поставки
#8 by Гёдза
Мы обсуждаем "пусть будет" или "как есть"?
#9 by Zixxx
Видно же что обсуждаем абсолютно все, сделать нужно как написал в
#10 by Zixxx
Если есть решение пиши как сделать, если нет то обсуждай, только ерунду не пиши
#11 by tridog
Что значит не идентична? Тогда как по твоему сериализатор догадается, в какие поля чего пихать?
#12 by Zixxx
А какое он поле поместить в IsFolder?
#13 by DmitrO
Обратись к разработчикам платформы с требованием добавить в объекты события: ПриXDTOСериализации(ОбъектXDTO), ПриXDTOДесериализации(ОбъектXDTO). Скажи мол, так и так или сделаете или я ухожу и всем рассказываю что вы не сделали. :)
#14 by Zixxx
:)))
#15 by tridog
ЭтоГруппа в IsFolder. Платформа об этом знает, потому что где-то у ней внутри явно прописано, как сериализовывать объекты встроенного языка в объекты XDTO по платформенным схемам. А с твоей схемой как она об этом догадается?
#16 by Serginio1
Замени в сериализовавнном тексте пространство имен. И будет тебе счастье
#17 by DmitrO
Ну еще можно предложить использовать XLT преобразование, но по сути своей, и по реализации все равно будет фигня какая-то. )
#18 by Serginio1
По сути это КД нужно писать. Кстати вроде как в КД 3 они по такому пути и пошли Давно пора.
#19 by Zixxx
Я же уже написал как, IsFolder будет в пакете, если не будет то не надо
#20 by tridog
Что значит не надо? Смысл сериализации в том, что после десериализации будет получен эквивалентный объект. Если часть полей включать в серилизацию, а часть не включать - это не сериализация, а проституция какая-то :) Кажется в ходе этого обсуждения я примерно понял, чего тебе надо, но СериализаторXDTO не предназначен для такого. Если понял правильно - то проще всего делать сериализацию через штатную схему current-config, а потом в полученном xml менять uri. Чтобы менять нужно было в одном месте - перед записью самих объектов запиши "корневой" элемент, для которого установи для current-config префикс. Тогда в xml явное указание uri будет только в одной сторке - ее и поменяешь)
#21 by Zixxx
Ага, думал может есть механизм какой-то
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям

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