Имя: Пароль:
1C
1С v8
Заполнение документа ПриходныйОрдерНаТовары
0 maestro-72
 
11.02.15
16:22
Интересует собсно программное заполнение документа. Не удается указать серии со сроками годности и количеством. Интересно, что табличная часть товары заполняется как надо...
Для Каждого Стр из ТЗ Цикл
    НоваяСтрока = НовыйДокумент.Товары.Добавить();
    ТекНоменклатура   = Справочники.Номенклатура.НайтиПоРеквизиту("Код7", СокрЛП(Стр.Код));
    ТекЕдиница         = ТекНоменклатура.ЕдиницаИзмерения;
    Количество         = Стр.Количество;
    
    ПоляСтруктуры = "Номенклатура, Упаковка, КоличествоУпаковок";
    СтруктураЗаполнения = Новый Структура(ПоляСтруктуры, ТекНоменклатура, ТекЕдиница,
    Количество);
    
    ЗаполнитьЗначенияСвойств(НоваяСтрока, СтруктураЗаполнения, ПоляСтруктуры);                    
    
    //СтруктураПересчетаСуммы = ОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруПересчетаСуммыНДСВСтрокеТЧ(НовыйДокумент);
    
    СтруктураДействий = Новый Структура;           
    
    СтруктураДействий.Вставить("ПроверитьЗаполнитьУпаковкуПоВладельцу", НоваяСтрока.Упаковка);
    СтруктураДействий.Вставить("ПересчитатьКоличествоЕдиниц");
        
    КэшированныеЗначения = ОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруКэшируемыеЗначения();
    
    ОбработкаТабличнойЧастиСервер.ОбработатьСтрокуТЧ(НоваяСтрока, СтруктураДействий, КэшированныеЗначения);
    
    НоваяСтрока.СтатусУказанияСерий = 6;
    
    //Серии
    НоваяСерия = НовыйДокумент.Серии.Добавить();
    ТекНоменклатура   = Справочники.Номенклатура.НайтиПоРеквизиту("Код7", СокрЛП(Стр.Код));
    ТекЕдиница         = ТекНоменклатура.ЕдиницаИзмерения;
    Количество         = Стр.Количество;
    
    ПоляСтруктуры = "Номенклатура, Упаковка, КоличествоУпаковок";
    СтруктураЗаполнения = Новый Структура(ПоляСтруктуры, ТекНоменклатура, ТекЕдиница,
    Количество);
    
    ЗаполнитьЗначенияСвойств(НоваяСерия, СтруктураЗаполнения, ПоляСтруктуры);                    
    
    //СтруктураПересчетаСуммы = ОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруПересчетаСуммыНДСВСтрокеТЧ(НовыйДокумент);
    
    СтруктураДействий = Новый Структура;           
    
    СтруктураДействий.Вставить("ПроверитьЗаполнитьУпаковкуПоВладельцу", НоваяСерия.Упаковка);
    СтруктураДействий.Вставить("ПересчитатьКоличествоЕдиниц");
        
    КэшированныеЗначения = ОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруКэшируемыеЗначения();
    
    ОбработкаТабличнойЧастиСервер.ОбработатьСтрокуТЧ(НоваяСтрока, СтруктураДействий, КэшированныеЗначения);
    
    мСерия = Справочники.СерииНоменклатуры.СоздатьЭлемент();
    мСерия.ГоденДо = Стр.СрокГодности;
    мСерия.ВидНоменклатуры = ТекНоменклатура.ВидНоменклатуры;
    мСерия.Наименование = "до " + Формат(Стр.СрокГодности, "ДФ=dd.MM.yy");
    мСерия.Записать();
    НоваяСерия.Серия = мСерия;
    
    КонецЦикла;

Не пойму как правильно надо... Может у кого примерчик есть рабочий, или направте меня в нужную сторону
1 salvator
 
11.02.15
16:26
ТекНоменклатура   = Справочники.Номенклатура.НайтиПоРеквизиту("Код7", СокрЛП(Стр.Код));

Проверку надо бы: находится или нет
2 salvator
 
11.02.15
16:28
мСерия - это объект. А надо писать в ТЧ ссылку.

мСерия = Справочники.СерииНоменклатуры.СоздатьЭлемент();
...
НоваяСерия.Серия = мСерия.Ссылка;
3 maestro-72
 
11.02.15
16:30
(1) Ну по идее - да...
4 maestro-72
 
11.02.15
16:33
(2) Счастье! Конечно, не увидел, спасибо...