Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Сумма в запросе с условием
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 7.7
korney777@gmail.com
Добрый вечер. Застрял на тривиальной задаче. Есть запрос.
    НачисленноОклад=СоздатьОбъект("Запрос");
        ТекстЗапроса =  
        "//{{ЗАПРОС(НачисленноОклад)
        |С Нач по (КонКвартала(ДатаПериода));
        |Обрабатывать НеПомеченныеНаУдаление;
        |ДатаДок = Документ.НачислениеЗП.ДатаДок;
        |Док = Документ.НачислениеЗП.ТекущийДокумент;
        |Оклад = Документ.НачислениеЗП.Оклад;
        |Функция ОкладСумма = сумма(Оклад);
        |Группировка ДатаДок;

        |";//}}ЗАПРОС
        Если НачисленноОклад.Выполнить(ТекстЗапроса) = 0 Тогда          
            Возврат;
        КонецЕсли;
        ОкладСумма = 0;
        Посчитать = 0;
        Декабрь = 0;
        НомСтрок = 0;
        Месяц = Нач;
        Пока НачисленноОклад.Группировка(1)=1 Цикл
            _ДатаДок=НачисленноОклад.ДатаДок;
            НомСтрок = НомСтрок+1;
            Результат.НоваяСтрока(НомСтрок);
                ОкладСумма=ОкладСумма+НачисленноОклад.ОкладСумма;                    
            НДФЛ6=СокрЛП(Формат((ОкладСумма/100*ПроцентСтавки),"Ч10.0"));
            Результат.УстановитьЗначение(НомСтрок,"Код",ДатаМесяц(_ДатаДок));
            Результат.УстановитьЗначение(НомСтрок,"ДатаДохода",_ДатаДок);
            Результат.УстановитьЗначение(НомСтрок,"СуммаДохода",ОкладСумма);
            Результат.УстановитьЗначение(НомСтрок,"СуммаУдерж",НДФЛ6);
            ОкладСумма = 0;
            НДФЛ6 = 0;    
            ДатаДок_=_ДатаДок;
        КонецЦикла;

Как в запросе получить суммы за месяц.
Или посчитать суммы документов пока выполняется группировка? Выборка происходит за три месяца. в ТЗ должно попасть три строки. Голова уже не работает.
1Cv77
korney777@gmail.com @ Вчера, 23:02 необходимо зарегистрироваться для просмотра ссылки ,
Перед циклом обозначьТЕ
ДатаДок_= 0;
СуммаМес=0;

В ЦИКЛЕ, в конце, вставьТЕ такое:
Пока НачисленноОклад.Группировка(1)=1 Цикл
   _ДатаДок=НачисленноОклад.ДатаДок;  
   Если (_ДатаДок<>ДатаДок_) И (СуммаМес<>0) Тогда
         Сообщить(СуммаМес);               /////////// ЭТО ТО ЧТО НУЖНО
     СуммаМес=0;
   КонецЕсли;
   НомСтрок = НомСтрок+1;

            Результат.НоваяСтрока(НомСтрок);
            ОкладСумма=ОкладСумма+НачисленноОклад.ОкладСумма;                    
            НДФЛ6=СокрЛП(Формат((ОкладСумма/100*ПроцентСтавки),"Ч10.0"));
            Результат.УстановитьЗначение(НомСтрок,"Код",ДатаМесяц(_ДатаДок));
            Результат.УстановитьЗначение(НомСтрок,"ДатаДохода",_ДатаДок);
            Результат.УстановитьЗначение(НомСтрок,"СуммаДохода",ОкладСумма);
            Результат.УстановитьЗначение(НомСтрок,"СуммаУдерж",НДФЛ6);
            
            СуммаМес=СуммаМес+ОкладСумма
            
            ОкладСумма = 0;
            НДФЛ6 = 0;    
            ДатаДок_=_ДатаДок;
        КонецЦикла;


 ! 

необходимо зарегистрироваться для просмотра ссылки: 1,9
 

P.S. Прошу прощения за "корявый" код, в плане отступов.
logist
1Cv77, вы так редко пишите, что постоянно забываете правила форума...
Bernet

Боже, почему же 7-ка такая корявая.... 32542620.gif 47046430.gif чтобы простенький запрос написать надо себе мозг вынести
nysysimara
можно попробовать что-то типа
|Функция ОкладСумма1 = сумма(Оклад) когда((ДатаДок>=ДатаНачМес1)И(ДатаДок<=ДатаКонМес1));
|Функция ОкладСумма2 = сумма(Оклад) когда((ДатаДок>=ДатаНачМес2)И(ДатаДок<=ДатаКонМес2));
|Функция ОкладСумма3 = сумма(Оклад) когда((ДатаДок>=ДатаНачМес3)И(ДатаДок<=ДатаКонМес3));
korney777@gmail.com
1Cv77, Работает, но запрос наваливает мне уже просуммированные цифры за период. Отчет не стыкуется. Может проще для каждого месяца делать запрос?
Alegzander
korney777@gmail.com @ Сегодня, 10:37 необходимо зарегистрироваться для просмотра ссылки ,
Группировка Месяц?
korney777@gmail.com
Alegzander @ Сегодня, 10:59 необходимо зарегистрироваться для просмотра ссылки ,
Как сгруппировать помесячно?
Alegzander
korney777@gmail.com @ Сегодня, 12:04 необходимо зарегистрироваться для просмотра ссылки ,
    НачисленноОклад=СоздатьОбъект("Запрос");
        ТекстЗапроса =  
        "//{{ЗАПРОС(НачисленноОклад)
        |С Нач по (КонКвартала(ДатаПериода));
        |Обрабатывать НеПомеченныеНаУдаление;
        |ДатаДок = Документ.НачислениеЗП.ДатаДок;
        |Док = Документ.НачислениеЗП.ТекущийДокумент;
        |Оклад = Документ.НачислениеЗП.Оклад;
        |Функция ОкладСумма = сумма(Оклад);
        |Группировка Месяц; // !!!


 ! 

необходимо зарегистрироваться для просмотра ссылки: 9
 
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.