Имя: Пароль:
1C
1С v8
Импорт из xml файла в табличную часть
0 Alexsey58
 
01.10.12
12:10
помогите с обработкой импорт xml в табличную часть.
загружаю данные в документ ЗаказПокупателя, в xml файле есть несколко позичий одного контрагента, нужно чтобы номенклатура контрагента записывалась в один документ, а как сделать проверку на дубликат документов.
вот моя обработка

//XML
   ЧтениеXML = Новый ЧтениеXML;
   ЧтениеXML.ОткрытьФайл("positions.xml");

   
   Имя = ЧтениеXML.Имя;
   Массив = Новый Структура(Имя);
   
   Пока ЧтениеXML.Прочитать() Цикл
       ПолучитьXMLТип(ЧтениеXML);
       Если ЧтениеXML.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда
           
           Имя = ЧтениеXML.Имя;
           
           Пока ЧтениеXML.ПрочитатьАтрибут() Цикл
               Атрибут = ЧтениеXML.Значение;
           КонецЦикла;
       КонецЕсли;

       Если ЧтениеXML.ТипУзла = ТипУзлаXML.Текст Тогда
           Массив.Вставить(Имя, ЧтениеXML.Значение);
       КонецЕсли;
       
       Если ЧтениеXML.ТипУзла = ТипУзлаXML.КонецЭлемента И ЧтениеXML.Имя = "pst_article_display" Тогда
           
           Если Массив.pst_ord_id <> "заказ" Тогда
               
                   ДокПозицииЗаказКл = Документы.ЗаказПокупателя.СоздатьДокумент();
                       
                   ДокПозицииЗаказКл.Заказ = Массив.pst_ord_id;
                   ДокПозицииЗаказКл.Контрагент = Справочники.Контрагенты.НайтиПоНаименованию(Массив.customer);
                   
                   ЧислоДаты = Лев(Массив.pst_arrival_date,2);
                   МесяцДаты = Сред(Массив.pst_arrival_date,4,2);
                   ГодДаты = Прав(Массив.pst_arrival_date,2);
                   ПравильнаяДата = "20" + ГодДаты + МесяцДаты + ЧислоДаты;
                    ДокПозицииЗаказКл.Ожидается = Дата(ПравильнаяДата);
                   

                   ДокПозицииЗаказКл.Баланс = Массив.cst_balance;
                   ДокПозицииЗаказКл.Срок = Массив.pst_term;
                   ДокПозицииЗаказКл.ГарСрок = Массив.pst_max_term;
                   ДокПозицииЗаказКл.Направление = Массив.pst_destination;
                   ДокПозицииЗаказКл.Комментарий = Массив.pst_comment;
                   Если Массив.pst_manager_comment <> "коммент. менеджера" Тогда
                       ДокПозицииЗаказКл.КомментМенеджера = Массив.pst_manager_comment;
                   КонецЕсли;
                   
                       ТоварКл = ДокПозицииЗаказКл.Товары.Добавить();
                       ТоварКл.Артикул = Массив.pst_article;
                       ТоварКл.Номенклатура = Справочники.Номенклатура.НайтиПоНаименованию(Массив.pst_name);
                       ТоварКл.Производитель = Массив.pst_brand;
                       ТоварКл.Количество = Массив.pst_amount;
                       ТоварКл.Цена = Массив.pst_price;
                       ТоварКл.СтавкаНДС = Перечисления.СтавкиНДС.БезНДС;
                       ТоварКл.Сумма = Массив.summ;
                       ТоварКл.Оплачено = Массив.payed;
                       ТоварКл.Долг = Массив.debt;
                   
                       ФормадокументаЗаказКл = ДокПозицииЗаказКл.ПолучитьФорму();
                       //ФормадокументаЗаказКл.Записать();
                       ФормадокументаЗаказКл.Открыть();
                                   
           КонецЕсли;
       КонецЕсли;            
   КонецЦикла;
1 zladenuw
 
01.10.12
12:19
загрузи в ТЗ. потом  по контрагенту отбор строк
Программист всегда исправляет последнюю ошибку.