|
Ошибка преобразования данных XDTO ₽ |
☑ | ||
|---|---|---|---|---|
|
0
Nesh
11.08.10
✎
16:40
|
Ошибка при вызове метода контекста (Прочитать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.ПрочитатьXML(ЧтениеXML); в чем может быть проблема. |
|||
|
1
Nesh
11.08.10
✎
16:41
|
код выгрузки
ЗаписьXML = Новый ЗаписьXML; //ЗаписьXML.УстановитьСтроку(); ЗаписьXML.ОткрытьФайл(ИмяФайла); Запись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.ДоговорыКонтрагентов"); // ДоговорОбъект = Фабрика.Создать(ТипДоговор); КонтрагентОбъект = Фабрика.Создать(ТипКонтрагент); ЗаписьXML.ЗаписатьНачалоЭлемента("data"); ЗаписьXML.ЗаписатьСоответствиеПространстваИмен("", "http://v8.1c.ru/8.1/data/enterprise/current-config"); ЗаписьXML.ЗаписатьСоответствиеПространстваИмен("xsd", "http://www.w3.org/2001/XMLSchema"); Контрагенты = Справочники.Контрагенты.Выбрать(Группа); Пока Контрагенты.Следующий() Цикл КонтрагентОбъект.Ref = Контрагенты.Ссылка.УникальныйИдентификатор(); КонтрагентОбъект.IsFolder = Контрагенты.ЭтоГруппа; КонтрагентОбъект.ИНН = Контрагенты.ИНН; КонтрагентОбъект.КодПоЕДРПОУ = Контрагенты.КодПоЕДРПОУ; Фабрика.ЗаписатьXML(ЗаписьXML, КонтрагентОбъект); КонецЦикла; ЗаписьXML.ЗаписатьКонецЭлемента(); Текст = ЗаписьXML.Закрыть(); |
|||
|
2
Nesh
11.08.10
✎
16:42
|
код загрузки
ЧтениеXML = Новый ЧтениеXML; //прочитаем начало корневого элемента ЧтениеXML.ОткрытьФайл(ИмяФайла); ЧтениеXML.Прочитать(); //читаем содержимое пока текущим не станет конец корневого элемента, т.к. мы писали туда только целые элементы справочника, //а сериализатор читает каждый из их полностью, то мы упремся именно в конец корневого Пока ЧтениеXML.Прочитать()Цикл Если ЧтениеXML.ТипУзла=ТипУзлаXML.НачалоЭлемента Тогда Если ЧтениеXML.Имя = "data" Тогда Продолжить; КонецЕсли; Объект = СериализаторXDTO.ПрочитатьXML(ЧтениеXML); //покажем что прочитали, осталось только записать объект Сообщить(""+ТипЗнч(Объект)+" - "+Объект); КонецЕсли; КонецЦикла; ЧтениеXML.Закрыть(); |
|||
|
3
selenat
11.08.10
✎
16:45
|
А зачем XDTO? Я конечно каюсь, что не разобрался в свое время что это за зверь и зачем он нужен, но мне лично без него проще...
|
|||
|
4
Nesh
11.08.10
✎
16:47
|
ну такая задача стоит.через XDTO
|
|||
|
5
selenat
11.08.10
✎
16:49
|
(4) ну раз задача стоит так, пробивайся. А тут было подумал выложить простой код без XDTO...
|
|||
|
6
Sonny
11.08.10
✎
16:52
|
Все реквизиты справочника контрагентов попробуй записать. Абсолютно все без исключения.
|
|||
|
7
DmitrO
11.08.10
✎
17:01
|
(0)(6) вот какраз, чаще всего, суть ошибки в этом и есть, тока наоборот:
В XML элементе представляющем экземпляр группы контрагентов должны быть только реквизиты которые определены для группы, и в xml элементе представляющем элемент справочника должны быть только реквизиты определенные для элемента. |
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |