|
обработка загрузки из xml | ☑ | ||
---|---|---|---|---|
0
kap-v-kstu
04.10.12
✎
23:00
|
Сделал обработку по загрузке из xml документа "Поступление на расч счет", но он без таблич части. Не подскажете, как делается загрузка табл частей??есть готовые обработки в качестве примера??
Процедура КнопкаВыполнитьНажатие(Кнопка) ЧтениеXML = Новый ЧтениеXML; ЧтениеXML.ОткрытьФайл("D:\Работа\Клиенты\Бонусита\16092012\Поступление на расчетный счет.xml"); Пока ЧтениеXML.Прочитать() Цикл ПолучитьXMLТип(ЧтениеXML); Если ЧтениеXML.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда //Сообщить("Начало " + ЧтениеXML.Имя); Пока ЧтениеXML.ПрочитатьАтрибут() Цикл Атрибут = ЧтениеXML.Значение; Сообщить("атрибут:" + ЧтениеXML.Имя + "=" + ЧтениеXML.Значение); Если ЧтениеXML.Имя = "Сумма" Тогда Сумма = ЧтениеXML.Значение ИначеЕсли ЧтениеXML.Имя = "Контрагент" Тогда Контрагент = ЧтениеXML.Значение; //ЧтениеXML.Имя = "Сумма" //Тогда Сумма = ЧтениеXML.Значение; Док = Документы.ПоступлениеНаРасчетныйСчет.СоздатьДокумент(); Док.ВидОперации = Перечисления.ВидыОперацийПоступлениеДенежныхСредств.ПрочиеРасчетыСКонтрагентами; Док.Организация = Справочники.Организации.НайтиПоКоду("000000001"); Док.СчетОрганизации = Справочники.БанковскиеСчета.НайтиПоКоду("000000001").Ссылка; Док.Дата = ТекущаяДата(); Док.СчетБанк = ПланыСчетов.Хозрасчетный.РасчетныеСчета; Док.Контрагент = Справочники.Контрагенты.НайтиПоНаименованию(Контрагент); Док.ВалютаДокумента = Справочники.Валюты.НайтиПоКоду("643"); Док.СуммаДокумента = Сумма; СтрокаНаименования = "Основной"; Док.ДоговорКонтрагента = Справочники.ДоговорыКонтрагентов.НайтиПоНаименованию("Основной"); Док.Ответственный = Справочники.Пользователи.НайтиПоНаименованию("Долматова Наталья Федоровна"); ТекСтрока = Док.РасшифровкаПлатежа.Добавить(); ТекСтрока.СтатьяДвиженияДенежныхСредств = Справочники.СтатьиДвиженияДенежныхСредств.НайтиПоКоду("000000005"); //Док.РасшифровкаПлатежа.Добавить().ДоговорКонтрагента = Справочники.ДоговорыКонтрагентов.НайтиПоНаименованию("Основной"); ТекСтрока.СчетУчетаРасчетовСКонтрагентом = ПланыСчетов.Хозрасчетный.РасчетыСПрочимиПоставщикамиИПодрядчиками; ТекСтрока.ДоговорКонтрагента = Справочники.ДоговорыКонтрагентов.НайтиПоНаименованию("Основной"); ТекСтрока.СуммаПлатежа = Сумма; //Сообщитьап(ПланыСчетов.Хозрасчетный.НайтиПоКоду("76.05").Ссылка); Док.Записать(РежимЗаписиДокумента.Проведение); КонецЕсли; КонецЦикла; КонецЕсли; КонецЦикла; КонецПроцедуры |
|||
1
zak555
04.10.12
✎
23:01
|
где структура xml ?
|
|||
2
kap-v-kstu
04.10.12
✎
23:03
|
<?xml version="1.0" encoding="UTF-8"?>
<Корневой Документ="РеализацияТоваровиУслуг"> <!--Краткая информация о РеализацияТоваровиУслуг--> <Элемент Номер="00000000001" Дата="29.08.2012 10:44:24" Контрагент="Контрагент А "> <Табличнаячасть Цена="100" Сумма="100" СтавкаНДС="Без НДС" СуммаНДС="0" Контрагент="Контрагент А "/> <Табличнаячасть Цена="12" Сумма="12" СтавкаНДС="Без НДС" СуммаНДС="0" Контрагент="Контрагент А "/> </Элемент> <Элемент Номер="00000000002" Дата="16.09.2012 14:00:24" Контрагент="Контрагент А "> <Табличнаячасть Цена="60" Сумма="60" СтавкаНДС="18%" СуммаНДС="9,15" Контрагент="Контрагент А "/> <Табличнаячасть Цена="78" Сумма="78" СтавкаНДС="18%" СуммаНДС="11,9" Контрагент="Контрагент А "/> </Элемент> </Корневой> Это структура докум "Реализация товаров и услуг",например |
|||
3
zak555
04.10.12
✎
23:04
|
откуда его получил ?
|
|||
4
kap-v-kstu
04.10.12
✎
23:06
|
Сделал обработку выгрузки и выгрузил реальн документ...а загрузить не могу)
|
|||
5
kap-v-kstu
04.10.12
✎
23:07
|
вот выгрузка
Процедура КнопкаВыполнитьНажатие(Кнопка) // Вставить содержимое обработчика. Запись=Новый ЗаписьXML; Запись.ОткрытьФайл("c:\RealizaciyaTovaroviUslug.xml"); Запись.ЗаписатьОбъявлениеXML(); Запись.ЗаписатьНачалоЭлемента("Корневой"); Запись.ЗаписатьАтрибут("Документ", "РеализацияТоваровиУслуг"); Запись.ЗаписатьКомментарий("Краткая информация о РеализацияТоваровиУслуг"); //Выборка=Документы.ПринятиеКУчетуОС.Выбрать(); //это выгрузка всех документов в базе // а нам нужно за определенный период: Выборка=Документы.РеализацияТоваровУслуг.Выбрать(); Пока Выборка.Следующий()Цикл Запись.ЗаписатьНачалоЭлемента("Элемент"); Запись.ЗаписатьАтрибут("Номер", Строка(Выборка.Номер)); Запись.ЗаписатьАтрибут("Дата", Строка(Выборка.Дата)); Запись.ЗаписатьАтрибут("Контрагент",Строка(Выборка.Контрагент)); // Запись.ЗаписатьАтрибут("Оборудование", Строка(Выборка.Номенклатура)); // КонецЦикла;.ЗаписатьАтрибут("ОбъектСтроительства", Строка(Выборка.ОбъектСтроительства)); // Запись.ЗаписатьАтрибут("ПервоначальнаяСтоимость", Строка(Выборка.ПервоначальнаяСтоимостьНУ)); //Для Каждого ТекущаяСтрока Из Выборка.АгентскиеУслуги Цикл // Сообщить(Выборка.АгентскиеУслуги[1].Сумма); // КонецЦикла; //Выборка.АгентскиеУслуги[0] //Запись.ЗаписатьНачалоЭлемента("Табличная часть"); СтИндекс = Выборка.АгентскиеУслуги.Количество() - 1; Для Сч=0 по СтИндекс Цикл Запись.ЗаписатьНачалоЭлемента("Табличнаячасть"); //Сообщить(Выборка.АгентскиеУслуги[Сч].Цена) ; //Сообщить (Выборка.АгентскиеУслуги[Сч].НомерСтроки);// + Выборка.АгентскиеУслуги[Сч].Сумма + Выборка.АгентскиеУслуги[Сч].СтавкаНДС + Выборка.АгентскиеУслуги[Сч].СуммаНДС + Выборка.АгентскиеУслуги[Сч].Контрагент) ; //Сообщить (Выборка.АгентскиеУслуги[Сч].Сумма); //Сообщить (Выборка.АгентскиеУслуги[Сч].СтавкаНДС); //Сообщить (Выборка.АгентскиеУслуги[Сч].СуммаНДС); //Сообщить (Выборка.АгентскиеУслуги[Сч].Контрагент); Запись.ЗаписатьАтрибут("Цена", Строка(Выборка.АгентскиеУслуги[Сч].Цена)); Запись.ЗаписатьАтрибут("Сумма", Строка(Выборка.АгентскиеУслуги[Сч].Сумма)); Запись.ЗаписатьАтрибут("СтавкаНДС", Строка(Выборка.АгентскиеУслуги[Сч].СтавкаНДС)); Запись.ЗаписатьАтрибут("СуммаНДС", Строка(Выборка.АгентскиеУслуги[Сч].СуммаНДС)); Запись.ЗаписатьАтрибут("Контрагент", Строка(Выборка.АгентскиеУслуги[Сч].Контрагент)); Запись.ЗаписатьКонецЭлемента(); КонецЦикла; Запись.ЗаписатьКонецЭлемента(); КонецЦикла; Запись.ЗаписатьКонецЭлемента(); Запись.Закрыть(); КонецПроцедуры |
|||
6
zak555
04.10.12
✎
23:07
|
(4) про сериализацию слышал ?
|
|||
7
kap-v-kstu
04.10.12
✎
23:08
|
чуть-чуть
|
|||
8
kap-v-kstu
04.10.12
✎
23:09
|
мне не нужен в данном случае универсал метод выгрузки-загрузки...
|
|||
9
kai17
04.10.12
✎
23:38
|
Попробуй так :
Если ЧтениеXML.ИмяУзла = "Табличнаячасть" Тогда // получили элемент табличная часть. ИНАЧЕ // перебираем содержимое узла ЧтениеXML.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда |
|||
10
kap-v-kstu
04.10.12
✎
23:51
|
ok,spasibo)
|
|||
11
kap-v-kstu
04.10.12
✎
23:51
|
poprobu
|
|||
12
kap-v-kstu
12.10.12
✎
15:36
|
Процедура КнопкаВыполнитьНажатие(Кнопка)
ЧтениеXML = Новый ЧтениеXML; ЧтениеXML.ОткрытьФайл("C:RealizaciyaTovaroviUslug.xml"); Док = ""; Пока ЧтениеXML.Прочитать() Цикл ПолучитьXMLТип(ЧтениеXML); Если ЧтениеXML.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда Если ЧтениеXML.Имя = "Элемент" Тогда Док = Документы.РеализацияТоваровУслуг.СоздатьДокумент(); Пока ЧтениеXML.ПрочитатьАтрибут() Цикл Если ЧтениеXML.Имя = "Контрагент1" Тогда Док.Дата = ТекущаяДата(); Док.Организация = Справочники.Организации.НайтиПоКоду("000000001"); Док.Контрагент = Справочники.Контрагенты.НайтиПоНаименованию(ЧтениеXML.Значение); Док.ДоговорКонтрагента = Справочники.ДоговорыКонтрагентов.НайтиПоНаименованию("Основной"); Док.СпособЗачетаАвансов = Перечисления.СпособыЗачетаАвансов.Автоматически; //ab tablich chast' Если ЧтениеXML.Имя = "Табличнаячасть" Тогда //Пока ЧтениеXML.Имя = "Контрагент" Цикл Контрагент = ЧтениеXML.Значение; //ТекСтрока = Док.АгентскиеУслуги.Добавить(); //ТекСтрока.Контрагент = Справочники.Контрагенты.НайтиПоНаименованию(Контрагент); Док.АгентскиеУслуги.Добавить().Номенклатура = Справочники.Номенклатура.НайтиПоНаименованию("Вознаграждение агента"); Док.АгентскиеУслуги.Добавить().Контрагент = Справочники.Контрагенты.НайтиПоНаименованию(Контрагент); // КонецЦикла;; КонецЕсли; //ab tablich chast' КонецЕсли; КонецЦикла; КонецЕсли; ИначеЕсли ЧтениеXML.ТипУзла = ТипУзлаXML.КонецЭлемента Тогда Док.Дата = ТекущаяДата(); Док.Записать(); КонецЕсли; КонецЦикла; КонецПроцедуры |
|||
13
kap-v-kstu
12.10.12
✎
15:37
|
Подскажите, пож, как загрузить табл часть .АгентскиеУслуги??
|
|||
14
kap-v-kstu
12.10.12
✎
15:37
|
Если ЧтениеXML.Имя = "Табличнаячасть" Тогда
//Пока ЧтениеXML.Имя = "Контрагент" Цикл Контрагент = ЧтениеXML.Значение; //ТекСтрока = Док.АгентскиеУслуги.Добавить(); //ТекСтрока.Контрагент = Справочники.Контрагенты.НайтиПоНаименованию(Контрагент); Док.АгентскиеУслуги.Добавить().Номенклатура = Справочники.Номенклатура.НайтиПоНаименованию("Вознаграждение агента"); Док.АгентскиеУслуги.Добавить().Контрагент = Справочники.Контрагенты.НайтиПоНаименованию(Контрагент); // КонецЦикла;; КонецЕсли; //ab tablich chast' |
|||
15
kap-v-kstu
12.10.12
✎
15:38
|
структура файла xml Выше
|
|||
16
kap-v-kstu
12.10.12
✎
19:51
|
<?xml version="1.0" encoding="UTF-8"?>
<Корневой Документ="РеализацияТоваровиУслуг"> <!--Краткая информация о РеализацияТоваровиУслуг--> <Элемент Номер="00000000001" Дата="29.08.2012 10:44:24" Контрагент="Контрагент А "> <Табличнаячасть Цена="100" Сумма="100" СтавкаНДС="Без НДС" СуммаНДС="0" Контрагент="Контрагент А "/> <Табличнаячасть Цена="12" Сумма="12" СтавкаНДС="Без НДС" СуммаНДС="0" Контрагент="Контрагент А "/> </Элемент> <Элемент Номер="00000000002" Дата="16.09.2012 14:00:24" Контрагент="Контрагент А "> <Табличнаячасть Цена="60" Сумма="60" СтавкаНДС="18%" СуммаНДС="9,15" Контрагент="Контрагент А "/> <Табличнаячасть Цена="78" Сумма="78" СтавкаНДС="18%" СуммаНДС="11,9" Контрагент="Контрагент А "/> </Элемент> </Корневой> |
|||
17
kap-v-kstu
12.10.12
✎
19:51
|
как загрузить таблич часть???есть какие -нибудь примеры?? спасибо
|
|||
18
hhhh
12.10.12
✎
22:30
|
НоваяСтрокаТабличнойЧасти = Док.АгентскиеУслуги.Добавить();
НоваяСтрокаТабличнойЧасти.Номенклатура = Справочники.Номенклатура.НайтиПоНаименованию("Вознаграждение агента"); НоваяСтрокаТабличнойЧасти.Контрагент = |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |