Имя: Пароль:
1C
1C 7.7
v7: 1С ПУБ Загрузка данных из СуперОкон
0 hawk1
 
11.03.15
14:08
Дорабатываю обработку ЗагрузкаДанных.  Надо чтобы приходные накладные загружались не в документ ПоступлениеМатериалов, а в документ ПоступлениеТоваров. Не получается заполнить реквизит Товар. Вот код:        Для Сч = 0 По КолвоРеквизитов - 1 Цикл
            Реквизит                    =    Реквизиты.ПолучитьУзел(Сч);
            ИдРеквизита                    =    Реквизит.ПолучитьАтрибут("Идентификатор");
            Если Вид = "ПоступлениеТоваров" Тогда
                Если ИдРеквизита = "Материал" Тогда
                    ИдРеквизита = "ВидМПЗ";
                    Реквизит.УстановитьАтрибут("Значение","Материалы");    
            
                КонецЕсли;
            КонецЕсли;
            Значение                    =    УстановитьРеквизит(Реквизит, "Документ", Вид, ИдРеквизита);
                    
            
            Если Значение = "#НеУстановлен" Тогда
                ЗаписатьОшибку("Не установлен реквизит.  Документ." + Вид + ": " + ОбъектБД + "  Реквизит: " + ИдРеквизита);
                Продолжить;
            КонецЕсли;
            
            ТипРеквизита                =    "";
            ПрочитатьИнформациюОТипеРеквизита("Документ", Вид, ИдРеквизита, ТипРеквизита);
            Если         ПустоеЗначение(ТипРеквизита) = 1 Тогда
                ПредставлениеРеквизита        =    "Документ." + Вид + "." + ИдРеквизита;
                ЗаписатьОшибку("Неверное имя реквизита:" + ПредставлениеРеквизита);
                Продолжить;
            ИначеЕсли    ТипРеквизита = "Неопределенный" Тогда
                ТипЗнач            =    Реквизит.ПолучитьАтрибут("ТипЗначения");
                ВидЗнач            =    Реквизит.ПолучитьАтрибут("ВидЗначения");
                Точность        =    0;
                Если ТипЗнач = "Число" Тогда
                    СтрТочность    =    Значение;
                    Точность    =    СтрДлина(    ОтделитьРазделителем(СтрТочность, ".")    );
                КонецЕсли;
                ОбъектБД.НазначитьТип(ИдРеквизита, ТипЗнач + ?(ПустоеЗначение(ВидЗнач)=1, "", "." + ВидЗнач), СтрДлина(Значение) + 10, Точность);
            КонецЕсли;
            ОбъектБД.УстановитьАтрибут(ИдРеквизита, Значение);                              
            Если Вид = "ПоступлениеТоваров" Тогда
                Если ИдРеквизита = "ВидМПЗ" Тогда
                    СсылкаУзел = Реквизит.ВыбратьУзлы("Ссылка").ПолучитьУзел(0);
                    РеквизитМатериал = СсылкаУзел.ВыбратьУзлы("Реквизит").ПолучитьУзел(0);
                    Значение = УстановитьРеквизит(РеквизитМатериал, "Документ",  Вид, "Товар");
                    ОбъектБД.УстановитьАтрибут("Товар", Значение);
                КонецЕсли;
            КонецЕсли;
        КонецЦикла;
        
    КонецЦикла;

Фрагмент файла выгрузки
<Документ Правило="ПоступлениеМатериалов_СуперОкна">
<Ссылка>
<Реквизит Идентификатор="НомерДок" Значение="1"/>
<Реквизит Идентификатор="ДатаДок" Значение="06.03.2015"/>
</Ссылка>
<Реквизит Идентификатор="Комментарий"/>
<Реквизит Идентификатор="ВариантРасчетаНалогов">
<Ссылка>
<Реквизит Идентификатор="Наименование" Значение="НДС сверху"/>
</Ссылка>
</Реквизит>
<Реквизит Идентификатор="МестоХранения">
<Ссылка>
<Реквизит Идентификатор="Наименование" Значение="Основной склад"/>
</Ссылка>
</Реквизит>
<Строка>
<Реквизит Идентификатор="Материал">
<Ссылка>
<Реквизит Идентификатор="Наименование" Значение="45.02.02"/>
</Ссылка>
</Реквизит>
<Реквизит Идентификатор="Количество" Значение="9"/>
<Реквизит Идентификатор="Цена" Значение="0"/>
<Реквизит Идентификатор="Сумма" Значение="0"/>
<Реквизит Идентификатор="НДС" Значение="0"/>
<Реквизит Идентификатор="НП" Значение="0"/>
<Реквизит Идентификатор="Всего" Значение="0"/>
</Строка>
</Документ>
AdBlock убивает бесплатный контент. 1Сергей