|
Правильно ли так выгружать при помощи XDTO | ☑ | ||
---|---|---|---|---|
0
Alex_MA
12.08.11
✎
10:11
|
Всем доброго дня коллеги!
Есть пакет XDTO. Выгружаю только номенклатуру. http://imagepost.ru/images/c/rd/crdymwiwtoajyjliwjnkltxiyaziji.png Свойства номенклатуры: http://gyazo.com/6464e7738b50570dc9e58fe087a8d283.png Список номенклатуры: http://gyazo.com/419c180930792146ae5f770e2015c09c.png Номенклатура: http://gyazo.com/41fca01d03849e9390bdcabcd71590cc.png Код выгрузки следующий: Процедура ВыполнитьВыгрузкуОбъектаКонфигурацииНажатие(Элемент) //Создать сериализатор XDTO для глобальной фабрики ТекСериализаторXDTO = Новый СериализаторXDTO(ФабрикаXDTO); //Создать объект записи XML и открыть файл ЗаписьXML = Новый ЗаписьXML(); ЗаписьXML.ОткрытьФайл("D:\RequestDocXDTO.xml"); //Создаем объект XDTO ЗаявкаНаРасходованиеСредств Запрос = Новый Запрос("ВЫБРАТЬ * ИЗ Справочник.Номенклатура"); Выборка = Запрос.Выполнить().Выбрать(); НоменклатураТип = ФабрикаXDTO.Тип("http://localhost/xdto/request/", "Номенклатура"); СписокНоменклатуры = ФабрикаXDTO.Тип("http://localhost/xdto/request/", "СписокНоменклатуры"); СписокНоменклатурыXDTO = ФабрикаXDTO.Создать(СписокНоменклатуры); Пока Выборка.Следующий() Цикл Если Выборка.Ссылка.ЭтоГруппа Тогда Продолжить; КонецЕсли; НоменклатураXDTO = ФабрикаXDTO.Создать(НоменклатураТип); ЗаполнитьЗначенияСвойств(НоменклатураXDTO, Выборка); СписокНоменклатурыXDTO.Номенклатура.Добавить(НоменклатураXDTO); КонецЦикла; ТекСериализаторXDTO.Фабрика.ЗаписатьXML(ЗаписьXML, СписокНоменклатурыXDTO); ЗаписьXML.Закрыть(); КонецПроцедуры В результате получился файл данных: http://gyazo.com/38981ceee318756154b205900fc14352.png Правильно ли сделана выгрузка данных ? |
|||
1
Alex_MA
12.08.11
✎
10:16
|
(0) + Правильно ли выгружать объекты в свойство, у которого фасеты заданы как "Минимальное количество" = 0, "Максимальное количество" = -1. Или есть еще варианты, если есть то какие ?
|
|||
2
Alex_MA
12.08.11
✎
11:00
|
апну
|
|||
3
Alex_MA
12.08.11
✎
11:57
|
подъем
|
|||
4
Alex_MA
12.08.11
✎
12:07
|
почему ошибка возникает при загрузке ?
D:\ShemaPoluch.xsd - xdto схема получателя Процедура ВыгрузкаНажатие(Элемент) ЗаписьXML = Новый ЗаписьXML; ЗаписьXML.ОткрытьФайл("D:\RequestDocXDTO.xml"); Пути = Новый Массив(); Пути.Добавить("D:\ShemaPoluch.xsd"); Фабрика = СоздатьФабрикуXDTO(Пути); ТипНоменклатура = Фабрика.Тип("http://v8.1c.ru/8.1/data/enterprise/current-config", "CatalogObject.Номенклатура"); ОбъектНоменклатура = Фабрика.Создать(ТипНоменклатура); НоменклатураОбъект = Номенклатура.ПолучитьОбъект(); ОбъектНоменклатура.НаименованиеПолное = НоменклатураОбъект.Наименование; Фабрика.ЗаписатьXML(ЗаписьXML, ОбъектНоменклатура); ЗаписьXML.Закрыть(); КонецПроцедуры Процедура ЗагрузкаНажатие(Элемент) ЧтениеXML = Новый ЧтениеXML; ЧтениеXML.ОткрытьФайл("D:\RequestDocXDTO.xml"); НоменклатураОбъект = СериализаторXDTO.ПрочитатьXML(ЧтениеXML); НоменклатураОбъект.ОбменДанными.Загрузка = Истина; НоменклатураОбъект.Записать(РежимЗаписиДокумента.Запись); ЧтениеXML.Закрыть(); КонецПроцедуры При загрузке ошибка: {Форма.Форма.Форма(181)}: Ошибка при вызове метода контекста (ПрочитатьXML) НоменклатураОбъект = СериализаторXDTO.ПрочитатьXML(ЧтениеXML); по причине: по причине: Ошибка преобразования данных XDTO: НачалоСвойства: {http://v8.1c.ru/8.1/data/enterprise/current-config}CatalogObject.Номенклатура Форма: Элемент Тип: {http://v8.1c.ru/8.1/data/enterprise/current-config}CatalogObject.Номенклатура по причине: Ошибка преобразования данных XDTO: НачалоСвойства: ПолноеНаименование Форма: Элемент Тип: {http://www.w3.org/2001/XMLSchema}string В чем проблема ? |
|||
5
Alex_MA
12.08.11
✎
14:21
|
апну
|
|||
6
DmitrO
12.08.11
✎
14:33
|
(4)посмотри в выходной файл, станет понятнее
|
|||
7
Vetal_978
12.08.11
✎
14:33
|
Ну видимо в XML'e в свойстве ПолноеНаименование не то, что XDTO ожидает увидеть. Проверьте что в XML.
|
|||
8
Alex_MA
12.08.11
✎
14:37
|
(6)тут вроде все Ок
<CatalogObject.Номенклатура xmlns="http://v8.1c.ru/8.1/data/enterprise/current-config" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <ПолноеНаименование>Автомобиль Chevrolet Niva 212300</ПолноеНаименование> </CatalogObject.Номенклатура> |
|||
9
DmitrO
12.08.11
✎
14:41
|
(8) это не ок! это полная туфта так-то, по причине того что нет остальных элементов.
И еще более удивительно, что при выгрузке устанавливался элемент "НаименованиеПолное", а в файле вдруг получился "ПолноеНаименование", по-моему кто-то нас обмануть пытается. :) |
|||
10
Alex_MA
12.08.11
✎
14:41
|
||||
11
Alex_MA
12.08.11
✎
14:45
|
(9)перечень свойств должен быть полный ???
вот тогда сделал такой файл xml: <CatalogObject.Номенклатура xmlns="http://v8.1c.ru/8.1/data/enterprise/current-config" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <IsFolder>false</IsFolder> <Ref>05fe3fd4-60fa-11e0-9ab1-002264a3800e</Ref> <DeletionMark>false</DeletionMark> <Parent>00000000-0000-0000-0000-000000000000</Parent> <Code>ГER0000000409</Code> <Description>Авт.выкл. ВА 47-29 50А</Description> </CatalogObject.Номенклатура> |
|||
12
Alex_MA
12.08.11
✎
14:45
|
(11)все равно ошибка получилась
|
|||
13
Alex_MA
12.08.11
✎
14:47
|
Нужно еще файл в (11) дописывать остальные реквизиты
http://gyazo.com/e775a01a4efd4c2ae3d3a73749c9c45f.png |
|||
14
DmitrO
12.08.11
✎
14:48
|
(12) ну разумеется, где в файле остальные элементы соответствующие реквизитам?
|
|||
15
DmitrO
12.08.11
✎
14:52
|
Там все строго. С учетом принадлежности реквизитов к группе/элементу справочника.
|
|||
16
Alex_MA
12.08.11
✎
14:54
|
(15)а, вот как
|
|||
17
Alex_MA
12.08.11
✎
14:58
|
странно, при записи XML состав объета XDTO:
http://gyazo.com/b3ea067e622570ab874fe1387476944d а в выходном файле структура как в (11), куда делись остальные элементы ? |
|||
18
DmitrO
12.08.11
✎
15:00
|
Те которые не устанавливались (Неопределено) не записываются в файл.
|
|||
19
Alex_MA
12.08.11
✎
15:00
|
странно, почему бы и не создать объект, если не все реквизиты у него заполнены, сделала бы программа сопоставления по тем полям которые можно сопоставить
|
|||
20
Alex_MA
12.08.11
✎
15:01
|
(18)т.е. тут надо принудительно что то писать, так ? или можно как то записать пустые ? Вроде есть свойство какое то (фасет), вроде "Возможно пустое"
|
|||
21
DmitrO
12.08.11
✎
15:02
|
Например, когда будешь передавать группу справочника, набор свойств у объекта XDTO будет такой же как и у элемента, но в файле должны оказаться только те элементы реквизитов, которые допустимы для группы.
|
|||
22
DmitrO
12.08.11
✎
15:03
|
(21)+ иначе сериализатор не загрузит группу справочника.
|
|||
23
Alex_MA
12.08.11
✎
15:05
|
как при записи в файл или заполнении для выгрузки указать, что данный элемент может быть пустым ?
Если пакет XDTO присутствует в конфигурации, то понятно, за это отвечает свойство "Возможно пустое", а если пакет XDTO создается на так: Пути = Новый Массив(); Пути.Добавить("D:\ShemaPol.xsd"); Фабрика = СоздатьФабрикуXDTO(Пути); |
|||
24
DmitrO
12.08.11
✎
15:18
|
ЗакупочнаяЦена. Тип у него наверняка Число. Что значит пустым? 0 - это тоже значение. Оно должно быть указано в файле.
|
|||
25
DmitrO
12.08.11
✎
15:23
|
Схема не полностью определяет логику сериализации/десериализации в XDTO. Она определяет только на столько, на сколько может это сделать.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |