|
Обмен через XDTO с мобильным приложением | ☑ | ||
---|---|---|---|---|
0
Timekiller
13.07.15
✎
07:11
|
Переношу подчиненный номенклатуре справочник (серии, хар-ки, ед изм), применяю следующий метод, для формирования xml файла:
ФабрикаXDTO.ЗаписатьXML(ЗаписьХМЛ, Спр);
Получается результат: ...
А нужен вот такой: ...
Вид XDTO: http://joxi.ru/Dr8NopRfq36526 Как добиться нужного результата? |
|||
1
Timekiller
13.07.15
✎
07:13
|
Разница лишь в:
<Owner xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; xsi:type="CatalogRef.Номенклатура"> |
|||
2
Cube
13.07.15
✎
07:16
|
ФабрикаXDTO.ЗаписатьXML(ЗаписьХМЛ, Спр, , , , НазначениеТипаXML.Явное); ?
|
|||
3
Timekiller
13.07.15
✎
07:22
|
(2) Это пробовал, не то получается:
<CatalogObject.СерииНоменклатуры>
Меняется на: <CatalogObject.СерииНоменклатуры xsi:type="CatalogObject.СерииНоменклатуры">
А меня интересует реквизит объекта СерииНоменклатуры Owner |
|||
4
Cube
13.07.15
✎
07:44
|
Может, косяк в релизе?
|
|||
5
Широкий
13.07.15
✎
09:08
|
Штатная сериализация на планшетах работает как бы очень долго.
Советую подумать над своей структурой обмена |
|||
6
Timekiller
13.07.15
✎
19:43
|
(5) Подскажи, что мне еще придумать, кроме штатной сериализации? Конвертация мне не доступна. Я думал прочитатьXML - максимально оптимально.
И какой вариант у меня с Owner'ом? Кроме СтрЗаменить() |
|||
7
DitriX
13.07.15
✎
22:58
|
Есть куча вариантов :)
Начиная от простого дум парсера, и удаления не нужной инфы, заканчивая простым xsl преобразованием, проходя мимо создания своих xdto, либо записью данных через запись плана обмена (но тут тоже надо бы править xml, если струтукура данных отличается). А конкрентно вашу проблему, как я понимаю - можно решить просо добавив новый тип объекта "CatalogRef.Номенклатура" и указав в овнерах его, так как он у вас сюда не импортирван, то естественно - 1С считает, что этот тип не определен в пакете и указывает его явно. Кроме этого - вы можете указать вместо типа у овнера "CatalogRef.Номенклатура" - просто тип UID, и все, суть от этого не меняется, ибо вам по сути именно он и нужен. |
|||
8
Timekiller
14.07.15
✎
17:03
|
(7) Воспользовался преобразованием XSL, все получилось, работает, вот код:
ОписаниеХСЛ = "<xsl:stylesheet version='1.0' xmlns:xsl='http://www.w3.org/1999/XSL/Transform' xmlns:v8msg='http://v8.1c.ru/messages'>
Данный код работает после ИзначальныйХМЛ = ЗаписьХМЛ.Закрыть(); P.S. У кого-нибудь есть мысли по более оптимальному решению? Меня в целом все устраивает)) |
|||
9
Serginio1
14.07.15
✎
17:29
|
(0) У тебя в приемнике составной тип, а в отправителе тип Номенклатура
|
|||
10
Serginio1
14.07.15
✎
17:31
|
Тип=СериализаторXDTO.XMLТипЗнч(ТекОбъект.Owner);
Объект.Owner=Фабрика.Создать(Фабрика.Тип(Тип.URIПространстваИмен, Тип.ИмяТипа),XMLСтрока(ТекОбъект.Owner)); |
|||
11
Timekiller
14.07.15
✎
17:45
|
(9) В целом да, т.к. владельцы - это всегда список
(10) Попробую |
|||
12
DitriX
14.07.15
✎
20:13
|
(11) смысл? преобразования - очень быстрые и гибкие, я вообще не создаю пакеты xdto, а тупо сериализирую как есть, а потом режу лишнее - выходит гибко и быстро.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |