Имя: Пароль:
1C
 
Сериализация по собственному пакету XDTO
,
0 Zixxx
 
12.11.14
11:39
Можно ли как-то сериализовать объекты по собственному пакету XDTO, например при записи объекта принубильно указать Имя и URI.

Пробовал создавать фабрику из собственного пакета, далее на основании фабрики создавать сериализатор либо просто делать через собственную фабрику...

Сериализатор.ЗаписатьXML(ЗаписьXML, Номенклатура, "CatalogObject.Алт_Номенклатура", "http://www.sc/integrator/current-config";)

Но всегда ругается что Номенклатура объект не соответствует типу. Видимо потому что тип у объекта номенклатуры всегда определяется из URI http://v8.1c.ru/8.1/data/enterprise/current-config

Через ЗаполнитьЗначенияСвойств() делать не хочется, это уже будет не сериализация.

Есть у кого какие мысли или решения?
1 Zixxx
 
12.11.14
20:28
ап
2 tridog
 
12.11.14
20:37
(0) Это не так работает.

а = ФабрикаXDTO.Создать(ФабрикаXDTO.Тип("URI", "Type"));

и потом можешь работать с объектом а - заполнять значения свойств и т.д.

Автоматический марщалинг (СериализаторXTO.Записать...) работает только для типов 1Совских схем.
3 Zixxx
 
12.11.14
20:43
(2) Это понятно, но не то что требуется, нужно не заполнение а сериализация.
Если после сериализации по данным можно составить схему и импортировать ее в пакет, почему в дальнейшем нельзя указать через какой именно тип я хочу делать сериализацию
4 tridog
 
12.11.14
20:47
(3) Просто схемы недостаточно для автоматического маршалинга. Вдруг у тебя в твоей схеме даже свойства Parent нету, куда в таком случае сериализатор должен владельца записывать?
5 Zixxx
 
12.11.14
20:50
(4) Пусть будет тоже самое есть обратиться к несуществующему ключу структуры
6 tridog
 
12.11.14
21:41
(5) Т.е. ты хочешь сериализацию в свою схему, но только при условии, что своя схема полностью идентична схеме из поставки платформы?
7 Zixxx
 
13.11.14
12:54
(6) Дело в том что схема поставки не идентична объекту из поставки
8 Гёдза
 
13.11.14
12:58
(5) Мы обсуждаем "пусть будет" или "как есть"?
9 Zixxx
 
13.11.14
13:06
(8) Видно же что обсуждаем абсолютно все, сделать нужно как написал в (0)
10 Zixxx
 
13.11.14
13:09
(8) Если есть решение пиши как сделать, если нет то обсуждай, только ерунду не пиши
11 tridog
 
13.11.14
13:22
(7) Что значит не идентична? Тогда как по твоему сериализатор догадается, в какие поля чего пихать?
12 Zixxx
 
13.11.14
13:25
(11) А какое он поле поместить в IsFolder?
13 DmitrO
 
13.11.14
13:35
(0)Обратись к разработчикам платформы с требованием добавить в объекты события: ПриXDTOСериализации(ОбъектXDTO), ПриXDTOДесериализации(ОбъектXDTO).

Скажи мол, так и так или сделаете или я ухожу и всем рассказываю что вы не сделали. :)
14 Zixxx
 
13.11.14
13:36
(13) :)))
15 tridog
 
13.11.14
13:40
(12) ЭтоГруппа в IsFolder. Платформа об этом знает, потому что где-то у ней внутри явно прописано, как сериализовывать объекты встроенного языка в объекты XDTO по платформенным схемам.

А с твоей схемой как она об этом догадается?
16 Serginio1
 
13.11.14
13:41
(0) Замени в сериализовавнном тексте пространство имен. И будет тебе счастье
17 DmitrO
 
13.11.14
13:44
Ну еще можно предложить использовать XLT преобразование, но по сути своей, и по реализации все равно будет фигня какая-то. )
18 Serginio1
 
13.11.14
14:12
(17) По сути это КД нужно писать. Кстати вроде как в КД 3 они по такому пути и пошли
http://forum.infostart.ru/forum85/topic119294/

Давно пора.
v8: XSD схема программно с нуля.
19 Zixxx
 
13.11.14
15:19
(15) Я же уже написал как, IsFolder будет в пакете, если не будет то не надо
20 tridog
 
13.11.14
16:00
(19) Что значит не надо? Смысл сериализации в том, что после десериализации будет получен эквивалентный объект. Если часть полей включать в серилизацию, а часть не включать - это не сериализация, а проституция какая-то :)

Кажется в ходе этого обсуждения я примерно понял, чего тебе надо, но СериализаторXDTO не предназначен для такого. Если понял правильно - то проще всего делать сериализацию через штатную схему current-config, а потом в полученном xml менять uri. Чтобы менять нужно было в одном месте - перед записью самих объектов запиши "корневой" элемент, для которого установи для current-config префикс. Тогда в xml явное указание uri будет только в одной сторке - ее и поменяешь)
21 Zixxx
 
13.11.14
16:11
(20) Ага, думал может есть механизм какой-то
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший