|
v7: Не работает выгрузка XML | ☑ | ||
---|---|---|---|---|
0
Sergod
10.06.12
✎
02:22
|
Я новичок в 1с 7.7
При использовании внешней обработки с таким кодом выходит ошибка:xml<<?>>.СоздатьФайл(имяф); {C:\DB\EXTFORMS\ВЫГРУЗКАXML.ERT(18)}: Переменная не определена (xml) xml<<?>>.ЗаписатьТег("<Товары>"); {C:\DB\EXTFORMS\ВЫГРУЗКАXML.ERT(20)}: Переменная не определена (xml) xml<<?>>.ЗаписатьТег("<Элемент>"); {C:\DB\EXTFORMS\ВЫГРУЗКАXML.ERT(34)}: Переменная не определена (xml) xml<<?>>.ЗаписатьЗначение("<Код>", ""+о.Код); {C:\DB\EXTFORMS\ВЫГРУЗКАXML.ERT(36)}: Переменная не определена (xml) xml<<?>>.ЗаписатьЗначение("<Наименование>", ""+СокрЛП(о.Наименование)); {C:\DB\EXTFORMS\ВЫГРУЗКАXML.ERT(37)}: Переменная не определена (xml) xml<<?>>.ЗаписатьЗначение("<Цена>", ""+в.Цена); {C:\DB\EXTFORMS\ВЫГРУЗКАXML.ERT(38)}: Переменная не определена (xml) xml<<?>>.ЗаписатьТег("</Элемент>"); Перем ДОМ; // XML instace Перем ИмяФайла; //+ универсальные процедуры для выгрузки данных //********************************************************************** // УстановитьАтрибут(Узел, ИмяАтрибута, ЗначениеАтрибута) // Описание // Добавляет атрибут к узлу // Узел - тип IXMLDOMNode // ИмяАтрибута - строка // ЗначениеАтрибута - любое, приводится к строке Процедура УстановитьАтрибут(Узел, ИмяАтрибута, ЗначениеАтрибута) Атрибут = ДОМ.createAttribute(ИмяАтрибута); Атрибут.Value = Строка(ЗначениеАтрибута); Узел.setAttributeNode(Атрибут); КонецПроцедуры // УстановитьАтрибут(Имя, Значение) //********************************************************************** Процедура Сохранить() ДОМ.save(ИмяФайла); КонецПроцедуры // Сохранить //********************************************************************** Процедура ДобавитьУзелРеквизит(Узел, Имя, Значение) Реквизит = ДОМ.createElement("Реквизит"); УстановитьАтрибут(Реквизит, Имя, Значение); КонецПроцедуры // ДобавитьУзелРеквизит(Узел, Имя, Значение) //********************************************************************** Процедура Выгрузить() Спр = СоздатьОбъект("Справочник.Контрагенты"); ДОМ = СоздатьОбъект("MSXML2.DOMDocument.4.0"); //Create a processing instruction targeted for xml. Узел = ДОМ.createProcessingInstruction("xml", "version='1.0'"); ДОМ.appendChild(Узел); // добавляем новый подчиненный узел. Это тэг <?xml version="1.0" ?> Корень = ДОМ.createElement("ФайлОбмена"); // создаем корневой элемент УстановитьАтрибут(Корень, "ВерсияФормата", "1.0"); УстановитьАтрибут(Корень, "ДатаВыгрузки", ТекущаяДата()); ДОМ.appendChild(Корень); // добавляем корневой элемент в структуру ДОМ Спр.ВыбратьЭлементы(); Пока Спр.ПолучитьЭлемент() = 1 Цикл Если спр.этогруппа() = 1 Тогда Продолжить; КонецЕсли; Узел = ДОМ.createElement("Контрагент"); // <ОКЕИ Тип="Справочник"></ОКЕИ> УстановитьАтрибут(Узел, "Код", Спр.Код); УстановитьАтрибут(Узел, "НеКонтролироватьКредит", Строка(Спр.НеКонтролироватьКредит)); УстановитьАтрибут(Узел, "ГлубинаКредта", Строка(Спр.ГлубинаКредита)); УстановитьАтрибут(Узел, "СуммаКредита", Строка(Спр.СуммаКредита)); Корень.appendChild(Узел); КонецЦикла; Сохранить(); Предупреждение("Выгрузка данных завершена!"); КонецПроцедуры //********************************************************************** Процедура Загрузить() xmlDoc = СоздатьОбъект("MSXML2.DOMDocument.4.0"); xmlDoc.load (ИмяФайла); Если xmlDoc.parseError.errorCode <> 0 Тогда myErr = xmlDoc.parseError; Предупреждение("You have error " + myErr.reason); Иначе root = xmlDoc.documentElement; //тэг <ФайлОбмена ...> Спр = СоздатьОбъект("Справочник.Контрагенты"); Выборка = root.selectNodes("Контрагент"); Для сч=0 По Выборка.length-1 Цикл Состояние("Загружено "+Строка(Окр((сч+1)/Выборка.length*100,2,1))+"%"); текУзел = Выборка.item(сч); Код = текУзел.getAttribute("Код"); Если Спр.НайтиПоКоду(Код, 0)=0 Тогда Сообщить("Не удалось найти контрагента с кодом "+Код); Продолжить; КонецЕсли; КонецЦикла; КонецЕсли; Предупреждение("Загрузка завершена!"); КонецПроцедуры // Загрузить //////////////////////////////////////////////////////////////////////////////////////////////// ИмяФайла = "c:\clients.xml"; |
|||
1
Злопчинский
10.06.12
✎
02:50
|
В приведеном коде
в принципе отсутствует xml.ЗаписатьТег("<Элемент>"); . откуда что копипастил? |
|||
2
Sergod
10.06.12
✎
08:29
|
Забросил эту идею, с помощью стандартного обработчика "Выгрузка коммерческих предложений" выгрузил файл.xml.
Вот только проблема чем его отпарсерить? semplexml подойдёт? |
|||
3
andrewks
10.06.12
✎
09:27
|
гКод какой-то
нафига УстановитьАтрибут выносить в отдельную функцию, ад ещё и с кучей строк, когда можно в одну строку уложить прямо в коде? и Сохранить() тоже радует |
|||
4
andrewks
10.06.12
✎
09:30
|
Корень=ДОМ.appendChild(ДОМ.createElement("ФайлОбмена"));
Корень.setAttribute("ВерсияФормата","1.0"); Корень.setAttribute("ДатаВыгрузки",ТекущаяДата()); |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |