Загрузка XML, 7.7. компонента V7Plus, первые шаги
27.08.2010
11:47
#1
"Доброго дня! Изучаю загрузку в 7.7 из XML файла.
Написал обработку загрузки.
Вот фрагмент файла
-
956268
Карта мира физ.+полит.2стор А2
Физическая карта мира. Политическая карта мира
95 5000
2
2024
357992
1
10132
................
-
10001
Общественные науки. Право. Экономика.
-
10002
Философские науки. Социология. Психология.
10001
-
................
-
21615546
1
987318
2
119.0000
76.0000
9785170653867
Фот текст обработки
Корень = XML_Документ.ВыбратьУзел("NewDataSet");
////загружаем товары
Товары = Корень.ВыбратьУзлы("R_Names");
Для ш=1 По Товары.КоличествоУзлов() Цикл
тектовар = Товары.Получитьузел(ш-1);//ВОТ ТУТ И ВЫДАЕТ ОШИБКУ
ТаблицаТоваров.НоваяСтрока();
ТаблицаТоваров.Артикул = тектовар.ВыбратьУзел("idarticul").Значение;
ТаблицаТоваров.Наименование = тектовар.ВыбратьУзел("c_name").Значение;
ТаблицаТоваров.ПолнНаименование = тектовар.ВыбратьУзел("cfullname").Значение;
ТаблицаТоваров.КодРодителя = тектовар.ВыбратьУзел("idNode").Значение;
КонецЦикла;
Группы = Корень.ВыбратьУзлы("R_Nodes");
//загружаем всю иерархию в таблицу значений
Для ш=1 По Группы.КоличествоУзлов() Цикл
ТекГруппа = Группы.ПолучитьУзел(ш-1);
ТаблицаГрупп.НоваяСтрока();
ТаблицаГрупп.КодГруппы = ТекГруппа.ВыбратьУзел("idNode").Значение;
ТаблицаГрупп.НаименованиеГруппы = ТекГруппа.ВыбратьУзел("cNode").Значение;
Попытка
ТаблицаГрупп.КодРодителя = ТекГруппа.ВыбратьУзел("idParentNode").Значение;
Исключение
КонецПопытки;
КонецЦикла;
СтрокиДокумента = Корень.ВыбратьУзлы("O_Incom_Det");
Для ш=1 По СтрокиДокумента.КоличествоУзлов() Цикл
ТекСтрока = СтрокиДокумента.ПолучитьУзел(ш-1);
ТаблицаДокумента.НоваяСтрока();
ТаблицаДокумента.КодТовара = ТекСтрока.ВыбратьУзел("id_name").Значение;
ТаблицаДокумента.Количество = ТекСтрока.ВыбратьУзел("iquant").Значение;
ТаблицаДокумента.Цена = ТекСтрока.ВыбратьУзел("yprice").Значение;
ТаблицаДокумента.Штрихкод = ТекСтрока.ВыбратьУзел("cean").Значение;
ТаблицаДокумента.ЦенаРозничная = ТекСтрока.ВыбратьУзел("ysupplprice").Значение;
КонецЦикла;
Вопрос: При загрузке узлов "R_Names" выскакивает ошибка на методе "Товары.Получитьузел()" - Поле агрегатного объекта не обнаружено (Получитьузел). В других же частях с другими узлами на этом методе все ок! Что ему не нравится?"
Написал обработку загрузки.
Вот фрагмент файла
-
................
-
-
-
................
-
Фот текст обработки
Корень = XML_Документ.ВыбратьУзел("NewDataSet");
////загружаем товары
Товары = Корень.ВыбратьУзлы("R_Names");
Для ш=1 По Товары.КоличествоУзлов() Цикл
тектовар = Товары.Получитьузел(ш-1);//ВОТ ТУТ И ВЫДАЕТ ОШИБКУ
ТаблицаТоваров.НоваяСтрока();
ТаблицаТоваров.Артикул = тектовар.ВыбратьУзел("idarticul").Значение;
ТаблицаТоваров.Наименование = тектовар.ВыбратьУзел("c_name").Значение;
ТаблицаТоваров.ПолнНаименование = тектовар.ВыбратьУзел("cfullname").Значение;
ТаблицаТоваров.КодРодителя = тектовар.ВыбратьУзел("idNode").Значение;
КонецЦикла;
Группы = Корень.ВыбратьУзлы("R_Nodes");
//загружаем всю иерархию в таблицу значений
Для ш=1 По Группы.КоличествоУзлов() Цикл
ТекГруппа = Группы.ПолучитьУзел(ш-1);
ТаблицаГрупп.НоваяСтрока();
ТаблицаГрупп.КодГруппы = ТекГруппа.ВыбратьУзел("idNode").Значение;
ТаблицаГрупп.НаименованиеГруппы = ТекГруппа.ВыбратьУзел("cNode").Значение;
Попытка
ТаблицаГрупп.КодРодителя = ТекГруппа.ВыбратьУзел("idParentNode").Значение;
Исключение
КонецПопытки;
КонецЦикла;
СтрокиДокумента = Корень.ВыбратьУзлы("O_Incom_Det");
Для ш=1 По СтрокиДокумента.КоличествоУзлов() Цикл
ТекСтрока = СтрокиДокумента.ПолучитьУзел(ш-1);
ТаблицаДокумента.НоваяСтрока();
ТаблицаДокумента.КодТовара = ТекСтрока.ВыбратьУзел("id_name").Значение;
ТаблицаДокумента.Количество = ТекСтрока.ВыбратьУзел("iquant").Значение;
ТаблицаДокумента.Цена = ТекСтрока.ВыбратьУзел("yprice").Значение;
ТаблицаДокумента.Штрихкод = ТекСтрока.ВыбратьУзел("cean").Значение;
ТаблицаДокумента.ЦенаРозничная = ТекСтрока.ВыбратьУзел("ysupplprice").Значение;
КонецЦикла;
Вопрос: При загрузке узлов "R_Names" выскакивает ошибка на методе "Товары.Получитьузел()" - Поле агрегатного объекта не обнаружено (Получитьузел). В других же частях с другими узлами на этом методе все ок! Что ему не нравится?"
27.08.2010
12:12
#2
Боюсь, что по фрагменту файла не увидеть причину проблемы, залейте куда нибудь его целиком, а сюда ссылку
27.08.2010
12:42
#4
Мда, причина веселая.
Надо писать: "ПолучитьУзел" вместо "Получитьузел", то есть, регистрозависимое написание.
Надо писать: "ПолучитьУзел" вместо "Получитьузел", то есть, регистрозависимое написание.
27.08.2010
14:39
#5
НУ СПАСИБО!!!!!!!)))))))))))
Я второй день мучаюсь)))))Не ожидал такого
А нет случайно ссылки, гда можно прочитать про XML и его структуру, а именно что такое подчиненные узлы, просто узлы и атрибуты и их различие
Я второй день мучаюсь)))))Не ожидал такого
А нет случайно ссылки, гда можно прочитать про XML и его структуру, а именно что такое подчиненные узлы, просто узлы и атрибуты и их различие
27.08.2010
15:42
#6
Нет, ссылки нет. В двух словах: выделяются понятия:
- Документ
- Схема
- Узел
- Элемент
- Атрибут
Документ: структура из узлов, элементов, атрибутов. Не обязательно вся структура xml файла целиком. Любая подветка с вложенными объектами называется документом. Документ - не обязательно файл, так как документ может быть вирутальным и полностью описан в памяти. Лишь при необходимости документ сбрасывается в файл.
Схема: грубо, описание типов данных, размещенных в xml документе и их структуры. Очень похоже на технологию прототипов функций С++. 1С в типовых решениях по обмену (по крайней мере в 7.7) "упразднила" это понятие, вписывая в xml файл отдельным узлом правила переноса данных, которые по сути и есть схема, в которой написано, что, например, реквизит "Код" является текстовым с длиной такой то.
Узел: почти полная аналогия с каталогом в файловой системе на диске. То есть, это некий объект, который может являться родителем для других узлов и элементов. Соответственно, узлы, которые ссылаются на текущий как на родитель, являются подчиненными ему.
Элемент: аналог файла в файловой системе на диске. Он не может являться родителем для каких то других объектов, то есть, не может являться узлом.
Атрибут: некий произвольный дополнительный признак, который может быть задан хоть для узла, хоть для элемента. Например, в файловой системе это "Архивный", "Только чтение" и т.п.
Пример xml документа:
Корневой элемент -
- узел: Автобаза, атрибуты: "адрес=...", "год создания=..."
- узел: Гараж, атрибуты: тип="грузовые авто", "размер=...", "главный механик=..."
- элемент: Автомобиль, атрибуты: "модель=...", "госномер=..."
- элемент: Автомобиль, атрибуты: "модель=...", "госномер=..."
- ...
- узел: Гараж, атрибуты: тип="легковые авто", "размер=...", "главный механик=..."
- элемент: Автомобиль, атрибуты: "модель=...", "госномер=..."
- элемент: Автомобиль, атрибуты: "модель=...", "госномер=..."
- узел: Автобаза, атрибуты: "адрес=...", "год создания=..."
....
Соответственно, узлы "Гараж" являются подчиненными для конкретного узла "Автобаза".
В общем, что то в таком духе.
- Документ
- Схема
- Узел
- Элемент
- Атрибут
Документ: структура из узлов, элементов, атрибутов. Не обязательно вся структура xml файла целиком. Любая подветка с вложенными объектами называется документом. Документ - не обязательно файл, так как документ может быть вирутальным и полностью описан в памяти. Лишь при необходимости документ сбрасывается в файл.
Схема: грубо, описание типов данных, размещенных в xml документе и их структуры. Очень похоже на технологию прототипов функций С++. 1С в типовых решениях по обмену (по крайней мере в 7.7) "упразднила" это понятие, вписывая в xml файл отдельным узлом правила переноса данных, которые по сути и есть схема, в которой написано, что, например, реквизит "Код" является текстовым с длиной такой то.
Узел: почти полная аналогия с каталогом в файловой системе на диске. То есть, это некий объект, который может являться родителем для других узлов и элементов. Соответственно, узлы, которые ссылаются на текущий как на родитель, являются подчиненными ему.
Элемент: аналог файла в файловой системе на диске. Он не может являться родителем для каких то других объектов, то есть, не может являться узлом.
Атрибут: некий произвольный дополнительный признак, который может быть задан хоть для узла, хоть для элемента. Например, в файловой системе это "Архивный", "Только чтение" и т.п.
Пример xml документа:
Корневой элемент -
- узел: Автобаза, атрибуты: "адрес=...", "год создания=..."
- узел: Гараж, атрибуты: тип="грузовые авто", "размер=...", "главный механик=..."
- элемент: Автомобиль, атрибуты: "модель=...", "госномер=..."
- элемент: Автомобиль, атрибуты: "модель=...", "госномер=..."
- ...
- узел: Гараж, атрибуты: тип="легковые авто", "размер=...", "главный механик=..."
- элемент: Автомобиль, атрибуты: "модель=...", "госномер=..."
- элемент: Автомобиль, атрибуты: "модель=...", "госномер=..."
- узел: Автобаза, атрибуты: "адрес=...", "год создания=..."
....
Соответственно, узлы "Гараж" являются подчиненными для конкретного узла "Автобаза".
В общем, что то в таком духе.
Читают тему
(гостей: 1)