Имя: Пароль:
1C
 
Правильный вариант отчета
0 myr4ik07
 
17.01.15
17:27
Есть документ ПотребностьВНоменклатуре которые заполняется на Основании документа ЗаказПокупателя вот с таким кодом

Процедура ОбработкаЗаполнения(ДанныеЗаполнения, СтандартнаяОбработка)
    Если ТипЗнч(ДанныеЗаполнения) = Тип("ДокументСсылка.ЗаказПокупателя") Тогда
        
        Контрагент = ДанныеЗаполнения.Контрагент;
        
        Для Каждого ТекСтрокаТовары Из ДанныеЗаполнения.Товары Цикл
                НоваяСтрока = Товары.Добавить();
                //НоваяСтрока.Количество =  ТекСтрокаТовары.Количество;
                НоваяСтрока.Номенклатура = ТекСтрокаТовары.Номенклатура;
                НоваяСтрока.Документ = ДанныеЗаполнения;
        КонецЦикла;

        Запрос = Новый Запрос;
        Запрос.Текст =
        "ВЫБРАТЬ
        |    ТоварыНаСкладахОстатки.КоличествоОстаток
        |ИЗ
        |    РегистрНакопления.ТоварыНаСкладах.Остатки КАК ТоварыНаСкладахОстатки
        |ГДЕ
        |    ТоварыНаСкладахОстатки.Номенклатура = &Номенклатура";
        
        Запрос.УстановитьПараметр("Номенклатура", ТекСтрокаТовары.Номенклатура);
            
        Результат = Запрос.Выполнить();
        
        ВыборкаДетальныеЗаписи = Результат.Выбрать();    
        
        Пока ВыборкаДетальныеЗаписи.Следующий() Цикл             
             НоваяСтрока.Количество =  ТекСтрокаТовары.Количество - ВыборкаДетальныеЗаписи.КоличествоОстаток
        КонецЦикла;
        
    КонецЕсли;
КонецПроцедуры

не могу понять каким образом в Параметр передавать Номенклатуру, кроме того "костыля", что я сделал.

В итоге для каждой Номенклатеры из ЗаказПокупателя в документ ПотребностьВНоменклатуре Реквизит Количество должен заполняться
Количество заказанного товара - Остаток на складах по заказаном товаре
1 GROOVY
 
17.01.15
17:32
Сибирский пушной зверек! Гдеж вас всех учат то?!

        "ВЫБРАТЬ
        |    Номенклатура, КоличествоОстаток
        |ИЗ
        |    РегистрНакопления.ТоварыНаСкладах.Остатки(, Номенклатура В (&МассивНоменклатура))";
2 myr4ik07
 
17.01.15
17:39
(1) ну так и тут параметр нужно заполнить или вы имеете ввиду, что бы удалить то, что сделал конструктор На Основании и выбрать ТЧ документа ЗаказПокупателя и Сравнить с Остатвками?
3 myr4ik07
 
17.01.15
17:44
но есть же ДанныеЗаполнения в этом Событии, что нужно использовать, тут без ДанныеЗаполнения никак... наверное

покажите пример, не могу понять ваши пример дальше, я не понимаю как одновременно заполнить параметр + строку там где нужно взять перебор ТЧ с ДанныеЗаполнения.Товары.Количество и Выборку с результата Запроса типа ВыборкаДетальныеЗаписи.Количество
4 myr4ik07
 
17.01.15
18:00
сделал вообще "самый шустрый" вариант :D

Процедура ОбработкаЗаполнения(ДанныеЗаполнения, СтандартнаяОбработка)
    Если ТипЗнч(ДанныеЗаполнения) = Тип("ДокументСсылка.ЗаказПокупателя") Тогда
        
        Контрагент = ДанныеЗаполнения.Контрагент;
        
        Для Каждого ТекСтрокаТовары Из ДанныеЗаполнения.Товары Цикл
            НоваяСтрока = Товары.Добавить();
            //НоваяСтрока.Количество =  ТекСтрокаТовары.Количество;
            НоваяСтрока.Номенклатура = ТекСтрокаТовары.Номенклатура;
            НоваяСтрока.Документ = ДанныеЗаполнения;
            
            Запрос = Новый Запрос;
            Запрос.Текст =
            "ВЫБРАТЬ
            |    ТоварыНаСкладахОстатки.КоличествоОстаток
            |ИЗ
            |    РегистрНакопления.ТоварыНаСкладах.Остатки КАК ТоварыНаСкладахОстатки
            |ГДЕ
            |    ТоварыНаСкладахОстатки.Номенклатура = &Номенклатура";
            
            Запрос.УстановитьПараметр("Номенклатура", ТекСтрокаТовары.Номенклатура);
            
            Результат = Запрос.Выполнить();
            
            ВыборкаДетальныеЗаписи = Результат.Выбрать();    
            
            Пока ВыборкаДетальныеЗаписи.Следующий() Цикл             
                НоваяСтрока.Количество =  ТекСтрокаТовары.Количество - ВыборкаДетальныеЗаписи.КоличествоОстаток
            КонецЦикла;
            
        КонецЦикла;
        
    КонецЕсли;
КонецПроцедуры
5 GROOVY
 
17.01.15
18:05
Нужно сделать не запрос в цикле, а цико по результату запросе. Источником должны быть 2 таблицы, документа основания и остатков из регистра.
Массив как параметр передавать умеете? Что такое массив знаете?
6 myr4ik07
 
17.01.15
18:48
(5) как бы понимаю что это массив и как передать параметр в простом случаи, а вот в этом прошу слезно пример полный потому что если бы понимал то не спрашивал )
8 GROOVY
 
17.01.15
18:58
Запрос.УстановитьПараметр("ИмяПараметра", ИмяМассива)
9 myr4ik07
 
17.01.15
19:11
(8) так список номенклатуры все ровно нужно получать через Для каждого Из
10 myr4ik07
 
17.01.15
19:22
(5) я понял наконец то о чем вы )
11 myr4ik07
 
17.01.15
19:22
(5) спасибо
AdBlock убивает бесплатный контент. 1Сергей