|
v7: Загрузка из xml | ☑ | ||
---|---|---|---|---|
0
work92
18.05.16
✎
11:59
|
Есть xml файл нужно выгрузит информацию но вы всех сообщениях на данные выскакивает OLE в чем может быть проблема.
Процедура Выполнить() Если ПустоеЗначение(ФайлЭксп)=1 Тогда Предупреждение("Выберете файл выгрузки!"); Возврат; КонецЕсли; Если ФС.СуществуетФайл(ФайлЭксп) = 0 Тогда Предупреждение("Файл с таким именем не существует!"); Возврат; КонецЕсли; Если ЗагрузитьВнешнююКомпоненту(КаталогПрограммы()+"v7plus.dll")<>1 Тогда Предупреждение("Компонента не обнаружена"); Возврат; КонецЕсли; Анализатор = СоздатьОбъект("AddIn.XMLParser"); ХМЛ =СоздатьОбъект("AddIn.XMLParser"); ФайлДанных=Анализатор.СоздатьДокумент(); Попытка ФайлДанных.Загрузить(ФайлЭксп); Исключение Сообщить("Не выбран файл!!!"); КонецПопытки; Попытка ВсеУзлы=ФайлДанных.ВыбратьУзлы(СокрЛП("Statements")); Данные=ВсеУзлы.ПолучитьУзел(0); Исключение Предупреждение("Не правильный файл выписок!"); Возврат; КонецПопытки; ДатаВыписки=Данные.ВыбратьУзлы(".//*"); Сообщить("Количество"+ДатаВыписки.КоличествоУзлов()) ; Для ДатаВып=0 по ДатаВыписки.КоличествоУзлов()-1 Цикл ДатаТекущейВыписки=ДатаВыписки.ПолучитьУзел(0).Значение; КонецЦикла; ЗагруженныеДанные.УдалитьСтроки(); Если ПустоеЗначение(СтрокаЗапросаДок)=0 Тогда Документы=Данные.ВыбратьУзлы(СтрокаЗапросаДок); Сообщить("Документы"+Документы) ; Для Док=0 по Документы.КоличествоУзлов()-1 Цикл Доки=Документы.ПолучитьУзел(Док); Бенефициар=Данные.ВыбратьУзлы(СтрокаЗапросаБениф); Контрагент=Данные.ВыбратьУзлы(СтрокаЗапросаКонтр); Если (СокрЛП(Доки.ПолучитьПодчиненныйПоНомеру(5).Наименование)="Beneficiar") и (ДокОплаты=1)Тогда Сообщить("Сумма"+Доки.ПолучитьПодчиненныйПоНомеру(4).Значение); ЗагруженныеДанные.НоваяСтрока(); ЗагруженныеДанные.Название =СокрЛП("Списание средств со счета"); ЗагруженныеДанные.Date =ДатаТекущейВыписки; ЗагруженныеДанные.DocumentNumber =Доки.ПолучитьПодчиненныйПоНомеру(1).Значение; ЗагруженныеДанные.DocType=1; ЗагруженныеДанные.OperType =Доки.ПолучитьПодчиненныйПоНомеру(3).Значение; ЗагруженныеДанные.Amount =Доки.ПолучитьПодчиненныйПоНомеру(4).Значение; Для Бен=0 по Бенефициар.КоличествоУзлов()-1 Цикл Контрики=Бенефициар.ПолучитьУзел(Бен); Сообщить("Бен"+Бенефициар.ПолучитьУзел(Бен)) ; Если (Док<>Бен) Тогда Продолжить; КонецЕсли; Если Контрики.КоличествоПодчиненных()>0 Тогда ЗагруженныеДанные.Account=СокрЛП(ЗагруженныеДанные.Account)+Контрики.ПолучитьПодчиненныйПоНомеру(1).Значение; ЗагруженныеДанные.BIC=СокрЛП(ЗагруженныеДанные.BIC)+Контрики.ПолучитьПодчиненныйПоНомеру(2).Значение; ЗагруженныеДанные.UNN=СокрЛП(ЗагруженныеДанные.UNN)+Контрики.ПолучитьПодчиненныйПоНомеру(3).Значение; ЗагруженныеДанные.BIC=СокрЛП(ЗагруженныеДанные.BIC)+Контрики.ПолучитьПодчиненныйПоНомеру(4).Значение; ЗагруженныеДанные.Name=СокрЛП(ЗагруженныеДанные.Name)+Контрики.ПолучитьПодчиненныйПоНомеру(5).Значение; ЗагруженныеДанные.Ground=СокрЛП(ЗагруженныеДанные.Ground)+Контрики.ПолучитьПодчиненныйПоНомеру(6).Значение; КонецЕсли; КонецЦикла; КонецЕсли; Если (СокрЛП(Доки.ПолучитьПодчиненныйПоНомеру(5).Наименование)="Payer") и (ДокПоступления=1) Тогда ЗагруженныеДанные.НоваяСтрока(); ЗагруженныеДанные.Название =СокрЛП("Поступление средств на счет"); ЗагруженныеДанные.Date =ДатаТекущейВыписки; ЗагруженныеДанные.DocumentNumber =Доки.ПолучитьПодчиненныйПоНомеру(1).Значение; ЗагруженныеДанные.DocType=2; ЗагруженныеДанные.OperType =Доки.ПолучитьПодчиненныйПоНомеру(3).Значение; ЗагруженныеДанные.Amount =Доки.ПолучитьПодчиненныйПоНомеру(4).Значение; Для Контр=0 по Контрагент.КоличествоУзлов()-1 Цикл Контрики=Контрагент.ПолучитьУзел(Контр); Если (Док-Бенефициар.КоличествоУзлов())<>Контр Тогда Продолжить; КонецЕсли; Если Контрики.КоличествоПодчиненных()>0 Тогда ЗагруженныеДанные.Account=СокрЛП(ЗагруженныеДанные.Account)+Контрики.ПолучитьПодчиненныйПоНомеру(1).Значение; ЗагруженныеДанные.BIC=СокрЛП(ЗагруженныеДанные.BIC)+Контрики.ПолучитьПодчиненныйПоНомеру(2).Значение; ЗагруженныеДанные.UNN=СокрЛП(ЗагруженныеДанные.UNN)+Контрики.ПолучитьПодчиненныйПоНомеру(3).Значение; ЗагруженныеДанные.BIC=СокрЛП(ЗагруженныеДанные.BIC)+Контрики.ПолучитьПодчиненныйПоНомеру(4).Значение; ЗагруженныеДанные.Name=СокрЛП(ЗагруженныеДанные.Name)+Контрики.ПолучитьПодчиненныйПоНомеру(5).Значение; ЗагруженныеДанные.Ground=СокрЛП(ЗагруженныеДанные.Ground)+Контрики.ПолучитьПодчиненныйПоНомеру(6).Значение; КонецЕсли; КонецЦикла; КонецЕсли; КонецЦикла; Иначе Предупреждение("В строке запроса ничего нет!"); КонецЕсли КонецПроцедуры |
|||
1
ДенисЧ
18.05.16
✎
12:03
|
Что и куда выскакивает?
|
|||
2
Ёпрст
18.05.16
✎
12:03
|
(0) а что там должно быть, по-твоему ?
|
|||
3
work92
18.05.16
✎
12:04
|
Контрики=Бенефициар.ПолучитьУзел(Бен);
Сообщить("Бен"+Бенефициар.ПолучитьУзел(Бен)) ; |
|||
4
work92
18.05.16
✎
12:05
|
Я первый раз загружаю их xml может есть примы
|
|||
5
Ёпрст
18.05.16
✎
12:06
|
(3)
да уж.. ПолучитьУзел(<?>) Синтаксис: ПолучитьУзел(<Номер>) Назначение Метод используется для организации доступа к отдельным узлам документа, вошедшим в выборку. Возвращаемое значение: Узел документа (элемент или атрибут). Параметры: <Номер> - числовое выражение, номер узла в выборке. Нумерация узлов в выборке начинается с нуля. Если че, возвращаемые объекты - не "родные" для 1с, вот и видишь ты там всегда - ОЛЕ Можно смотреть только простые типы - строка, дата, число |
|||
6
Ёпрст
18.05.16
✎
12:06
|
Смотри, значение атрибута, хотя бы или Имя узла/элемента
|
|||
7
work92
18.05.16
✎
12:07
|
А как сделать чтобы было нужное значение
|
|||
8
Ёпрст
18.05.16
✎
12:08
|
Сообщить("Контрики " + Контрики.ИмяТега);
|
|||
9
Ёпрст
18.05.16
✎
12:10
|
Или так
Сообщить("Контрики " + Контрики.Наименование);Сообщить("Контрики " + Контрики.Значение); и т.д.. я хз, пользовался лишь однажды 1с-овской приблудой. Через ДомДокумент понятнее сделано |
|||
10
work92
18.05.16
✎
12:14
|
Тут вообще не выводит сообщение
|
|||
11
Ёпрст
18.05.16
✎
12:15
|
отладчик в рукти и вперёд
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |