Имя: Пароль:
1C
1С v8
Загрузка ТЧ xml документа в ТЗ
0 1C2SS
 
05.06.13
10:40
Подскажите есть ли готовые обработки/куски кода для загрузки табличной части документа, представленного в виде xml файла, в таблицу значений.
Для семерки видел код а для 8 не нашел.
1 hyperfocusin
 
05.06.13
10:45
справа над темой букву Я видишь? там все есть
подсказка: 2я ссылка сверху
2 1C2SS
 
05.06.13
11:50
Спасибо.

Перебираю xml вот так:
Для Каждого Товар из nod.childNodes Цикл
   Для каждого nod из Товар.childNodes Цикл

<Товары>
   <Товар>
       <Ид>048aae51-7b2e-11e3-975d-001517c5707d#656c42ff-81b6-11e2-93bf-001517c5701d</Ид>
       <Штрихкод>2000000207873</Штрихкод>

Каким методом по красивому можно красиво вытащить штрихкод ?
3 1C2SS
 
05.06.13
13:16
Вот что получилось:
&НаСервере
Процедура ЧтениеДанных(Команда)
   ТЗ = Новый ТаблицаЗначений;
   ТЗ.Колонки.Добавить("Штрихкод");
   ТЗ.Колонки.Добавить("Наименование");
   ТЗ.Колонки.Добавить("ВидНоменклатуры");
   ТЗ.Колонки.Добавить("ТипНоменклатуры");
   ТЗ.Колонки.Добавить("НаименованиеКраткое");
   ТЗ.Колонки.Добавить("НаименованиеПолное");        
   ТЗ.Колонки.Добавить("ЦенаЗаЕдиницу");
   ТЗ.Колонки.Добавить("Количество");
   ТЗ.Колонки.Добавить("Сумма");
   ТЗ.Колонки.Добавить("Единица");
   ТЗ.Колонки.Добавить("Коэффициент");

   xmlDoc = Новый COMОбъект("MSXML2.DOMDocument");
   xmlDoc.load("C:\document.xml");
   nodeRoot = xmlDoc.documentElement;
   
   Товары=nodeRoot.selectSingleNode("//Документ/Товары");
   Для Каждого Товар из Товары.childNodes Цикл
       Строка = ТЗ.Добавить();
       Строка.Штрихкод =        Товар.selectSingleNode("Штрихкод").nodeTypedValue;
       Строка.Наименование =    Товар.selectSingleNode("Наименование").nodeTypedValue;
       Строка.ЦенаЗаЕдиницу =    Товар.selectSingleNode("ЦенаЗаЕдиницу").nodeTypedValue;
       Строка.Количество =    Товар.selectSingleNode("Количество").nodeTypedValue;
       Строка.Сумма =            Товар.selectSingleNode("Сумма").nodeTypedValue;
       Строка.Единица =        Товар.selectSingleNode("Единица").nodeTypedValue;
       Строка.Коэффициент =    Товар.selectSingleNode("Коэффициент").nodeTypedValue;
       Реквизиты = Товар.selectSingleNode("ЗначенияРеквизитов");
       Для Каждого Реквизит из Реквизиты.childNodes Цикл
           Если Реквизит.selectSingleNode("Наименование").nodeTypedValue = "ВидНоменклатуры" Тогда
               Строка.ВидНоменклатуры = Реквизит.selectSingleNode("Значение").nodeTypedValue;
           ИначеЕсли Реквизит.selectSingleNode("Наименование").nodeTypedValue = "ТипНоменклатуры" Тогда
               Строка.ТипНоменклатуры = Реквизит.selectSingleNode("Значение").nodeTypedValue;
           ИначеЕсли Реквизит.selectSingleNode("Наименование").nodeTypedValue = "НаименованиеКраткое" Тогда
               Строка.НаименованиеКраткое = Реквизит.selectSingleNode("Значение").nodeTypedValue;
           ИначеЕсли Реквизит.selectSingleNode("Наименование").nodeTypedValue = "НаименованиеПолное" Тогда
               Строка.НаименованиеПолное = Реквизит.selectSingleNode("Значение").nodeTypedValue;
           КонецЕсли;                
       КонецЦикла;                  
   КонецЦикла;        
КонецПроцедуры


Буду признателен за конструктивную критику.
4 Ёпрст
 
05.06.13
13:18
взять готовые штатные поделки для выгрузки/загрузки документов и не ... писать своих,
а так - ну получил ты таз со строками, и че ?
Дальше искать по наименованию будешь всё? удачи.
5 1C2SS
 
05.06.13
13:25
Штатные не подходят. Разные конфигурации.
Искать по наименованию. А куда деваться ?