|
Ошибка преобразования данных XML | ☑ | ||
---|---|---|---|---|
0
Staffa
17.01.13
✎
10:19
|
Коллеги, есть XML файл, в котором содержится один документ.
При попытке из него восстановить объект БД, вылетает сабжевая ошибка. Восстанавливаю таким кодом: Чтение = Новый ЧтениеXML(); Чтение.УстановитьСтроку(ТекстXML); Объект = ПрочитатьXML(Чтение, Тип(ПолучитьXMLТип(Чтение).ИмяТипа)); Рушится на ПрочитатьXML. Ошибку выдает где-то в середине файла, причем посередине тега... о_О Что на данный момент испробовано: 1. Сравнил структуру файла с текстом XML сериализованного документа этого же типа - все одинаковое, порядок, наличие и т.п. реквизитов; 2. Пробовал прочитать с явным указанием типа - неработает; 3. Проверил пореквизитно типы - все совпадает. Куда еще посмотреть? Хелп ми, плз! |
|||
1
Staffa
17.01.13
✎
10:29
|
хм... сериализованный документ этого типа (начисление ЗП сотрудникам организации) обратному восстановлению не поддается...
Такое бывает? |
|||
2
Maxus43
17.01.13
✎
10:39
|
заново запиши его в xml, или повторяется каждый раз?
|
|||
3
Maxus43
17.01.13
✎
10:39
|
клиент-сервер? платформа какая?
|
|||
4
Serginio1
17.01.13
✎
10:42
|
Попробуй выгружать через фабрику загружаемой конфигурации и объектыXDTO. Только для этого типа документа.
|
|||
5
Staffa
17.01.13
✎
10:45
|
(2) я этот документ уже руками переписывал ))
(3) клиент-сервер, 8.2.14.519 (4) спасибо, попробую |
|||
6
Serginio1
17.01.13
✎
10:52
|
Я делаю так
ФабрикаДляКомплексной = СоздатьФабрикуXDTO("ПутьКСхеме.xsd"); ТипNull=ФабрикаДляКомплексной.Тип("http://www.w3.org/2001/XMLSchema","anySimpleType"); СсылкаNull=ФабрикаДляКомплексной.Создать(ТипNull); ПространствоИмен="http://v8.1c.ru/8.1/data/enterprise/current-config"; Имя="DocumentObject.ПлатежныйОрдерПоступлениеДенежныхСредств"; Объект = Фабрика.Создать(Фабрика.Тип(ПространствоИмен, Имя)); ТипРеал=ФабрикаXDTO.Тип(ПространствоИмен,Имя); ТекОбъект= СериализаторXDTO.ЗаписатьXDTO(Док); ЗаполнитьЗначенияСвойств(Объект,ТекОбъект,,"РасчетныйДокумент,ДокументОснование"); ПространствоИмен="http://v8.1c.ru/8.1/data/enterprise/current-config"; Имя="DocumentTabularSectionRow.ПлатежныйОрдерПоступлениеДенежныхСредств.РеквизитыКонтрагента"; ТипСтр = Фабрика.Тип(ПространствоИмен, Имя); Для каждого Текстр из ТекРеквизитыКонтрагента Цикл Стр=Фабрика.Создать(ТипСтр); ЗаполнитьЗначенияСвойств(Стр,ТекСтр); РеквизитыКонтрагента.Добавить(Стр); КонецЦикла; Фабрика.ЗаписатьXML(ЗаписьXML, Объект); ТипNULL нужен для реквизитов с множественным типом, у которых реквизит не установлен. ЗаполнитьЗначенияСвойств работает для реквизитов только с одним типом. Для них нужно отдельно прописывать Если Стр.Проект<>Неопределено Тогда Тип=СериализаторXDTO.XMLТипЗнч(Текстр.Проект); Стр.Проект=Фабрика.Создать(Фабрика.Тип(Тип.URIПространстваИмен, Тип.ИмяТипа),XMLСтрока(Текстр.Проект)); Иначе Стр.Проект=СсылкаNull КонецЕсли; |
|||
7
Serg_1960
17.01.13
✎
10:55
|
(0) "Ошибку выдает где-то в середине файла" - в тексте сообщения не "где-то по середине" надеюсь, а конкретная строка и позиция указаны. Есть такое дело?
|
|||
8
Staffa
17.01.13
✎
10:59
|
(7) естессно, я по этим координатам и смотрел, выдает ошибку на букве "р" в теге <Сотрудник>
Короче, проблема решилась перезагрузкой сеанса... Так и не понял что это было? Кэш? |
|||
9
Serginio1
17.01.13
✎
11:24
|
(8) Скорее всего.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |