Имя: Пароль:
1C
1С v8
Не могу разобраться с XML
,
0 yxo1987
 
17.05.12
17:44
Выгрузил в XML. Загрузить не смог. Думалки не хватило))
Делал обмен между Комплексной и Торговлей и у меня в документе Установка цен номенклатуры полная лажа. Видимо, прога смотрела только на название справочников. А у нас много с одинаковыми названиями.
Идея сейчас в том, что я выгрузил в XML Номера документов(Они идентичны в базах), Артикул, Название Номенклатуры.
Обработка загрузки должна искать в ТЧ приемника по названию из файлика нужную номенклатуру, ищет в базе с нужным артикулом и подставляет.

Короче нужно тупо дописать обработку. Кто сделает отправлю рублей 300 на телефон.
Хелп ми....


Вот кусок XML:
<?xml version="1.0" encoding="UTF-8"?>
<Доки>
   <Установка Код="00000000420">
       <Номенклатура Артикул="DD004H" Наименование="Ваза с цветами"/>
   </Установка>
   <Установка Код="00000000421">
       <Номенклатура Артикул="DD002" Наименование="Подсвечник"/>
   </Установка>
   <Установка Код="00000000422">
       <Номенклатура Артикул="DD002L" Наименование="Подсвечник"/>

Вот процедура:

Процедура КнопкаВыполнитьНажатие()
   Чтение = Новый ЧтениеXML;
   Чтение.ОткрытьФайл("C:\ee.xml");
   Номер = 0;
   Пока Чтение.Прочитать() Цикл
       Если Чтение.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда
           Если Чтение.Имя = "Установка" Тогда
               Пока Чтение.ПрочитатьАтрибут() Цикл
                   Если Чтение.Имя = "Код" Тогда
                       Номер = Чтение.Значение;
                       Док = Документы.УстановкаЦенНоменклатуры.НайтиПоНомеру(Номер,ТекущаяДата());                        
                       оДок = Док.ПолучитьОбъект();
                       Если НЕ оДок.Проведен Тогда
                           Для Каждого ТекущаяСтрока Из оДок.Товары Цикл                            
                               Пока Чтение.ПрочитатьАтрибут() Цикл
                                   Если Чтение.Имя = "Номенклатура" Тогда
                                       Чтение.ПрочитатьАтрибут();
                                       Код = Чтение.Значение;
                                       Имя = Чтение.Значение;
                                       Если ТекущаяСтрока.Номенклатура.Наименование = Имя Тогда
                                           ТекущаяСтрока.Номенклатура = Справочники.Номенклатура.НайтиПоРеквизиту("Артикул",Код);
                                       КонецЕсли;
                                   КонецЕсли;
                               КонецЦикла;
                           КонецЦикла;
                           Сообщить(оДок);
                           оДок.Записать(РежимЗаписиДокумента.Проведение);                        
                       КонецЕсли;
                   КонецЕсли;
               КонецЦикла;
           КонецЕсли;
       КонецЕсли;
   КонецЦикла;        
КонецПроцедуры
1 yxo1987
 
17.05.12
17:45
Вот так выгружал:


   Запись = Новый ЗаписьXML;
   Запись.ОткрытьФайл("C:\ee.xml");
   Запись.ЗаписатьОбъявлениеXML();
   Запись.ЗаписатьНачалоЭлемента("Доки");
   Выборка = Документы.УстановкаЦенНоменклатуры.Выбрать();    
   Пока Выборка.Следующий() Цикл
       Уст = Выборка.ПолучитьОбъект();
       Запись.ЗаписатьНачалоЭлемента("Установка");
       Запись.ЗаписатьАтрибут("Код", Строка(Уст.Номер));
       Для Каждого ТекущаяСтрока Из Уст.Товары Цикл
           Запись.ЗаписатьНачалоЭлемента("Номенклатура");
           Запись.ЗаписатьАтрибут("Артикул",Строка(ТекущаяСтрока.Номенклатура.Артикул));
           Запись.ЗаписатьАтрибут("Наименование",Строка(ТекущаяСтрока.Номенклатура.Наименование));
           Запись.ЗаписатьКонецЭлемента();
       КонецЦикла;
       Запись.ЗаписатьКонецЭлемента();
   КонецЦикла;
   Запись.ЗаписатьКонецЭлемента();
   Запись.Закрыть();
2 yxo1987
 
17.05.12
17:52
Буду завтра. Заранее спасибо.
3 Serginio1
 
17.05.12
18:38
Работай через объекты XDTO намного проще
4 yxo1987
 
17.05.12
20:52
(3) Лень думать. А эту штуку посмотрю. Позже.
5 KarpovDeniska
 
17.05.12
20:55
(0) а нумерация наверное в пределах года.....
6 yxo1987
 
18.05.12
08:03
Нумерация да. Документы были только в этом году.
7 yxo1987
 
18.05.12
10:20
Ну как? Никто?
8 AaNnDdRrEeYy
 
18.05.12
10:35
если это одноразовая операция, выгрузи в табличныйДокумент и грузи из него
нафиг с xml париться
9 yxo1987
 
18.05.12
10:40
Там табличная часть есть
10 yxo1987
 
18.05.12
10:43
Спасибо! Я сам все сделал.
11 AaNnDdRrEeYy
 
18.05.12
10:50
(9) решается очень даже легко, прочитать таб док в тз, тз в запрос а там итоги - получается дерево.
табдок надо записать так
реквизитШапки_1 реквизитШапки_2 строка 1
еквизитШапки_1 реквизитШапки_2 строка 2
12 yxo1987
 
21.05.12
11:32
(11) можно и так