Имя: Пароль:
1C
1С v8
Посчитать строку для определенного участка
0 marinanima
 
31.07.13
14:15
Код 1C
ЗапросПроизводительности = Новый Запрос();
    ЗапросПроизводительности.Текст = "ВЫБРАТЬ
                                     |    ПроизводительностьПоУчасткамСрезПоследних.Номенклатура КАК Номенклатура,
                                     |    ПроизводительностьПоУчасткамСрезПоследних.ПроизводственныйУчасток КАК Подразделение,
                                     |    ПроизводительностьПоУчасткамСрезПоследних.Организация КАК Организация,
                                     |    ПроизводительностьПоУчасткамСрезПоследних.Производительность,
                                     |    ПроизводительностьПоУчасткамСрезПоследних.Период
                                     |ИЗ
                                     |    РегистрСведений.ПроизводительностьПоУчасткам.СрезПоследних(&Период, ) КАК ПроизводительностьПоУчасткамСрезПоследних
                                     |ГДЕ
                                     |    ПроизводительностьПоУчасткамСрезПоследних.ПроизводственныйУчасток = &Подразделение
                                     |    И ПроизводительностьПоУчасткамСрезПоследних.Организация = &Организация
                                     |
                                     |УПОРЯДОЧИТЬ ПО
                                     |    ПроизводственныйУчасток,
                                     |    Номенклатура,
                                     |    Организация";                  
                  
    ЗапросПроизводительности.УстановитьПараметр("Подразделение", ЭтаФорма.Подразделение);
    ЗапросПроизводительности.УстановитьПараметр("Организация", ЭтаФорма.Организация);
    ЗапросПроизводительности.УстановитьПараметр("Период", ЭтаФорма.ДатаОтчета);
        
    ВыборкаПроизводительности = ЗапросПроизводительности.Выполнить().Выбрать();
    
    ЗапросКатегорий = Новый Запрос();
    ЗапросКатегорий.Текст =   "ВЫБРАТЬ
                              |    ДоговорнаяЗарплата.Категория КАК Категория,
                              |    ДоговорнаяЗарплата.Сумма
                              |ИЗ
                              |    РегистрСведений.ДоговорнаяЗарплата КАК ДоговорнаяЗарплата
                              |ГДЕ
                              |    ДоговорнаяЗарплата.Категория.Наименование <> &Наименование
                              |
                              |УПОРЯДОЧИТЬ ПО
                              |    Категория";
                              
    ЗапросКатегорий.УстановитьПараметр("Наименование", "3 начальная");
                            
    ВыборкаКатегорий = ЗапросКатегорий.Выполнить().Выбрать();
                    
    
    //Вывод шапки отчета
    тШапкаОтчета = Макет.ПолучитьОбласть("ШапкаОтчета|Данные");
    тШапкаОтчета.Параметры["Подразделение"] = ЭтаФорма.Подразделение;
    
    ТабДокумент.Вывести(тШапкаОтчета);
    
    //Вывод шапки таблицы
    тШапкаДанные = Макет.ПолучитьОбласть("ШапкаТаблицы|Данные");
    ТабДокумент.Вывести(тШапкаДанные);
    тШапкаКатегория = Макет.ПолучитьОбласть("ШапкаТаблицы|Категория");
    Пока ВыборкаКатегорий.Следующий() Цикл
        тШапкаКатегория.Параметры["Категория"] = ВыборкаКатегорий.Категория;
        ТабДокумент.Присоединить(тШапкаКатегория);
    КонецЦикла;
    
    //Формирование отчета
    тСтрокаДанные = Макет.ПолучитьОбласть("СтрокаТаблицы|Данные");
    тСтрокаКатегория = Макет.ПолучитьОбласть("СтрокаТаблицы|Категория");
    Пока ВыборкаПроизводительности.Следующий() Цикл
        
        //Вывод номенклатуры
        тСтрокаДанные.Параметры["Номенклатура"] = ВыборкаПроизводительности.Номенклатура;
        ТабДокумент.Вывести(тСтрокаДанные);
        
        //Проход по выборке категорий (для вывода тарифа по каждой категории)
        ВыборкаКатегорий.Сбросить();
        Пока ВыборкаКатегорий.Следующий() Цикл
            Если ВыборкаПроизводительности.НайтиСледующий("R33 (WAFIOS)") Тогда
                
                тСтрокаКатегория.Параметры["Сумма"] = Окр((ВыборкаКатегорий.Сумма / 2 / 21 / 8) / ВыборкаПроизводительности.Производительность, 4);
                                                                                    
            КонецЕсли;
            
            тСтрокаКатегория.Параметры["Сумма"] = Окр((ВыборкаКатегорий.Сумма / 21 / 8) / ВыборкаПроизводительности.Производительность, 2);
            ТабДокумент.Присоединить(тСтрокаКатегория);
        КонецЦикла;
Код 1C
1 Mitriy
 
31.07.13
14:16
хвастаться нехорошо...
2 Fragster
 
модератор
31.07.13
14:18
НайтиСледующий - сбивает позицию выборки
3 marinanima
 
31.07.13
14:19
Необходимо посчитать отдельно сумму для участка R33 (WAFIOS), он находиться в справочнике Подразделения/Производство сетки(Завод)/Производительные участки/ R33 (WAFIOS)
Подсчет идет в цикле
Пока ВыборкаКатегорий.Следующий() Цикл

Подскажите пожалуйста как это сделать!
4 Капитан О
 
31.07.13
14:20
не читал, но одобряю подсчёт в запросе