|
XDTO таблица значений в XML и обратно в 1С | ☑ | ||
---|---|---|---|---|
0
AugustBlack
16.09.15
✎
13:54
|
Привет, осваиваю XDTO,возможно ли выгрузить таблицу значений в XML и загрузить обратно в 1с данным способом?
Я выгрузил таблицу значений в XML с помощью XDTO. Не получается загрузить обратно в 1С.. (1) Код выгрузки работает успешно, в файле (2) Код загрузки не понимаю, как загрузить таблицу значений, в данном случае выходит ошибка в (3) как ее исправить, что не так, помогите плз разобраться. 1. Код выгрузки: Процедура ВыгрузитьНастройкиНажатие(Элемент) Режим = РежимДиалогаВыбораФайла.Сохранение; ДиалогСохраненияФайла = Новый ДиалогВыбораФайла(Режим); ДиалогСохраненияФайла.ПолноеИмяФайла = "РезервноеКопированиеНастроек_"+Формат(ТекущаяДата(),"ДФ=dd_MM_yyyy"); Фильтр = "Текст(*.XML)|*.XML"; ДиалогСохраненияФайла.Фильтр = Фильтр; ДиалогСохраненияФайла.МножественныйВыбор = Ложь; ДиалогСохраненияФайла.Заголовок = "Выберите файл"; Если ДиалогСохраненияФайла.Выбрать() Тогда ПутьКФайлу = ДиалогСохраненияФайла.ПолноеИмяФайла; Сериализатор = Новый СериализаторXDTO(ФабрикаXDTO); XML = Новый ЗаписьXML; XML.ОткрытьФайл(ПутьКФайлу); Данные = НастройкиСтрок.Выгрузить(); Сериализатор.ЗаписатьXML(XML,Данные); КонецЕсли; КонецПроцедуры 2. Код загрузки: Процедура ЗагрузитьНастройкиНажатие(Элемент) ФлагИзменения = Истина; Сериализатор = Новый СериализаторXDTO(ФабрикаXDTO); //Выбор файла Режим = РежимДиалогаВыбораФайла.Открытие; ДиалогОткрытияФайла = Новый ДиалогВыбораФайла(Режим); ДиалогОткрытияФайла.ПолноеИмяФайла = ""; Фильтр = "Текст(*.XML)|*.XML"; ДиалогОткрытияФайла.Фильтр = Фильтр; ДиалогОткрытияФайла.МножественныйВыбор = Ложь; ДиалогОткрытияФайла.Заголовок = "Выберите файл для загрузки"; Если ДиалогОткрытияФайла.Выбрать() Тогда ПутьКФайлу = ДиалогОткрытияФайла.ПолноеИмяФайла; ЧтениеXML = Новый ЧтениеXML; ЧтениеXML.ОткрытьФайл(ПутьКФайлу); ЧтениеXML.ПерейтиКСодержимому(); ЧтениеXML.Прочитать(); Пока ЧтениеXML.ТипУзла <> ТипУзлаXML.КонецЭлемента Цикл ТЗ = Сериализатор.ПрочитатьXML(ЧтениеXML); КонецЦикла; КонецЕсли; КонецПроцедуры 3. Ошибка: Ошибка преобразования данных XDTO: НачалоСвойства: {http://v8.1c.ru/8.1/data/core}column Форма: Элемент Тип: {http://www.w3.org/2001/XMLSchema}anyType по причине: Ошибка преобразования данных XDTO: НачалоСвойства: {http://v8.1c.ru/8.1/data/core}Name Форма: Элемент Тип: {http://www.w3.org/2001/XMLSchema}string |
|||
1
AugustBlack
16.09.15
✎
13:56
|
ТЗ = Сериализатор.ПрочитатьXML(ЧтениеXML); - конкретно не ясна данная часть, не понимаю как читается из XML сериализатором
|
|||
2
Serginio1
16.09.15
✎
14:10
|
Если ты выгрузил как в 1 то тебе не нужно
ЧтениеXML.Прочитать(); Пока ЧтениеXML.ТипУзла <> ТипУзлаXML.КонецЭлемента Цикл Это делается когда выгружается несколько объектов и прописывается корневой элемент |
|||
3
ssh-2013
16.09.15
✎
14:18
|
Пример передача ТЗ через xml
ЗаписьXML = Новый ЗаписьXML; ЗаписьXML.УстановитьСтроку(); СериализаторXDTO.ЗаписатьXML(ЗаписьXML, ТЗИсточник); СтрокаXML = ЗаписьXML.Закрыть(); ЧтениеXML = Новый ЧтениеXML; ЧтениеXML.УстановитьСтроку(СтрокаXML); ТЗПриемник = СериализаторXDTO.ПрочитатьXML(ЧтениеXML); ЧтениеXML.Закрыть(); |
|||
4
AugustBlack
16.09.15
✎
14:28
|
(2) (3) спасибо разобрался, вот код кому пригодится может:
Процедура ЗагрузитьНастройкиНажатие(Элемент) ФлагИзменения = Истина; //Выбор файла Режим = РежимДиалогаВыбораФайла.Открытие; ДиалогОткрытияФайла = Новый ДиалогВыбораФайла(Режим); ДиалогОткрытияФайла.ПолноеИмяФайла = ""; Фильтр = "Текст(*.XML)|*.XML"; ДиалогОткрытияФайла.Фильтр = Фильтр; ДиалогОткрытияФайла.МножественныйВыбор = Ложь; ДиалогОткрытияФайла.Заголовок = "Выберите файл для загрузки"; Если ДиалогОткрытияФайла.Выбрать() Тогда ПутьКФайлу = ДиалогОткрытияФайла.ПолноеИмяФайла; ЧтениеXML = Новый ЧтениеXML; ЧтениеXML.ОткрытьФайл(ПутьКФайлу); Сериализатор = Новый СериализаторXDTO(ФабрикаXDTO); ТЗ = Сериализатор.ПрочитатьXML(ЧтениеXML,Тип("ТаблицаЗначений")); ЧтениеXML.Закрыть(); КонецЕсли; НастройкиСтрок.Очистить(); НастройкиСтрок.Загрузить(ТЗ); КонецПроцедуры |
|||
5
Живой Ископаемый
16.09.15
✎
14:31
|
типовыеОтчеты.СериализоватьОбъектXDTO(тзБуф);
тзБуф = типовыеОтчеты.ПрочитатьОбъектXDTO (строкаХМЛпрочитаннаяизфайла); |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |