Имя: Пароль:
1C
1С v8
обработка загрузки из 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
НоваяСтрокаТабличнойЧасти = Док.АгентскиеУслуги.Добавить();
НоваяСтрокаТабличнойЧасти.Номенклатура = Справочники.Номенклатура.НайтиПоНаименованию("Вознаграждение агента");        
                               НоваяСтрокаТабличнойЧасти.Контрагент =