Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
28 мар 2024, 11:35

вывод результата отчета

Автор Люсёк, 15 дек 2010, 09:07

0 Пользователей и 1 гость просматривают эту тему.

Люсёк

Подскажите, пожалуйста, как заданный период, например с 01.01.2010 по 30.09.2010 разложить по месецам Январь, Февраль и так далее?

Люсёк

Нужно вывести отчет примерно в таком виде, как во вложениях.

Вот сам запрос:

Запрос=Новый Запрос;
Запрос.Текст=
              ВЫБРАТЬ
              ОсновныеДополнительныеНачисления.Период КАК Период,
   ОсновныеДополнительныеНачисления.ВидРасчета КАК ВидРасчета,
   ОсновныеДополнительныеНачисления.Результат КАК Результат,
   ОсновныеДополнительныеНачисления.ОтработаноДней
ИЗ
   (ВЫБРАТЬ РАЗЛИЧНЫЕ
      НАЧАЛОПЕРИОДА(ОсновныеНачисленияРаботниковОрганизаций.ПериодРегистрации, МЕСЯЦ) КАК Период,
      ОсновныеНачисленияРаботниковОрганизаций.ВидРасчета КАК ВидРасчета,
      СУММА(ОсновныеНачисленияРаботниковОрганизаций.Результат) КАК Результат,
      ОсновныеНачисленияРаботниковОрганизаций.ОтработаноДней КАК ОтработаноДней
   ИЗ
      РегистрРасчета.ОсновныеНачисленияРаботниковОрганизаций КАК ОсновныеНачисленияРаботниковОрганизаций
   ГДЕ
      ОсновныеНачисленияРаботниковОрганизаций.ПериодРегистрации МЕЖДУ НАЧАЛОПЕРИОДА(&НачалоПериода, МЕСЯЦ) И КОНЕЦПЕРИОДА(&КонецПериода, МЕСЯЦ)
      И ОсновныеНачисленияРаботниковОрганизаций.Организация = &Организация
      И ОсновныеНачисленияРаботниковОрганизаций.ФизЛицо = &ФизЛицо
   
   СГРУППИРОВАТЬ ПО
      ОсновныеНачисленияРаботниковОрганизаций.ВидРасчета,
      НАЧАЛОПЕРИОДА(ОсновныеНачисленияРаботниковОрганизаций.ПериодРегистрации, МЕСЯЦ),
      ОсновныеНачисленияРаботниковОрганизаций.ОтработаноДней
   
   ОБЪЕДИНИТЬ ВСЕ
   
   ВЫБРАТЬ РАЗЛИЧНЫЕ
      НАЧАЛОПЕРИОДА(ДополнительныеНачисленияРаботниковОрганизаций.ПериодРегистрации, МЕСЯЦ),
      ДополнительныеНачисленияРаботниковОрганизаций.ВидРасчета,
      СУММА(ДополнительныеНачисленияРаботниковОрганизаций.Результат),
      0
   ИЗ
      РегистрРасчета.ДополнительныеНачисленияРаботниковОрганизаций КАК ДополнительныеНачисленияРаботниковОрганизаций
   ГДЕ
      ДополнительныеНачисленияРаботниковОрганизаций.ПериодРегистрации МЕЖДУ НАЧАЛОПЕРИОДА(&НачалоПериода, МЕСЯЦ) И КОНЕЦПЕРИОДА(&КонецПериода, МЕСЯЦ)
      И ДополнительныеНачисленияРаботниковОрганизаций.Организация = &Организация
      И ДополнительныеНачисленияРаботниковОрганизаций.ФизЛицо = &ФизЛицо
   
   СГРУППИРОВАТЬ ПО
      ДополнительныеНачисленияРаботниковОрганизаций.ВидРасчета,
      НАЧАЛОПЕРИОДА(ДополнительныеНачисленияРаботниковОрганизаций.ПериодРегистрации, МЕСЯЦ)) КАК ОсновныеДополнительныеНачисления

СГРУППИРОВАТЬ ПО
   ОсновныеДополнительныеНачисления.ВидРасчета,
   ОсновныеДополнительныеНачисления.Результат,
   ОсновныеДополнительныеНачисления.Период,
   ОсновныеДополнительныеНачисления.ОтработаноДней
ИТОГИ ПО
   Период ПЕРИОДАМИ(МЕСЯЦ, &НачалоПериода, &КонецПериода)   


              Запрос.УстановитьПараметр("НачалоПериода",ЭлементыФормы.ДатаНачала.Значение);
   Запрос.УстановитьПараметр("КонецПериода",ЭлементыФормы.ДатаОкончания.Значение);
   Запрос.УстановитьПараметр("Организация",ЭлементыФормы.Организация.Значение);
   Запрос.УстановитьПараметр("Физлицо",СтрокаТЧ.Сотрудник.Физлицо);   
   
   ВыборкаПоПериоду = Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, "Период");
   Пока ВыборкаПоПериоду.Следующий() Цикл
       ДетальныеЗаписи = ВыборкаПоПериоду.Выбрать();
       ДетальныеЗаписи.Количество();
       Пока ДетальныеЗаписи.Следующий() Цикл
          
                       
   На этом моменте я застопорилась. Я выбрала все начисления за месяц, как теперь вывести название месяца (к примеру, январь)? и как вывести  Начисления столько раз сколько их в этом месяце. причем если отчет формируется за несколько месяцев и в одном месяце начисление есть а в другом нет, то выводилась пустая колонка?
     

Люсёк

Здравствуйте. Я все мучаюсь с выводом отчета(( Пожалуйста, подскажите как сделать, чтобы Начисления выводились без повторей (т.е. если в предыдущем месяце такое начисление есть, то в следущем его снова не выводить)? и  как сделать,чтобы каждому виду начисления в строках выводилось соответствующее ему значение. Счас у меня выводится как попало((


ТабДокумент = Новый ТабличныйДокумент;
   
   Макет = ПолучитьМакет("Макет");    
   
   ОбластьШапкаДокумента              =  Макет.ПолучитьОбласть("ШапкаДокумента");   
   ОбластьЛьготы                      =  Макет.ПолучитьОбласть("Льготы");
   ОбластьПустая                      =  Макет.ПолучитьОбласть("Пустая");
   ОбластьСтрокаЗаголовок             =  Макет.ПолучитьОбласть("СтрокаЗаголовок");
   ОбластьСтрока                      =  Макет.ПолучитьОбласть("Строка");
   ОбластьПодвал                      =  Макет.ПолучитьОбласть("Подвал");
   ОбластьОбластьШапка                =  Макет.ПолучитьОбласть("ОбластьШапка");
   ОбластьНачисления                  =  Макет.ПолучитьОбласть("Начисления");
   ОбластьИтогоНачисления             =  Макет.ПолучитьОбласть("ИтогоНачисления");
   ОбластьУдержания                   =  Макет.ПолучитьОбласть("Удержания");
   ОбластьИтогоУдержания              =  Макет.Получитьобласть("ИтогоУдержания");
   ОбластьСальдоКонечное              =  Макет.Получитьобласть("СальдоКонечное");
   
     Для каждого СтрокаТЧ Из Сотрудники Цикл   
СтрокаЗаголовок1=Макет.ПолучитьОбласть("СтрокаЗаголовок|ОбластьШапка");
   ТабДокумент.Присоединить(СтрокаЗаголовок1);
   
   ОбластьНачисления=Макет.ПолучитьОбласть("СтрокаЗаголовок|Начисления");
      
       Запрос=Новый Запрос;
       Запрос.Текст="ВЫБРАТЬ РАЗРЕШЕННЫЕ РАЗЛИЧНЫЕ
                    |   ОсновныеДополнительныеНачисления.Период КАК Период,
                    |   ОсновныеДополнительныеНачисления.ВидРасчета КАК ВидРасчета,
                    |   ОсновныеДополнительныеНачисления.Результат КАК Результат,
                    |   ОсновныеДополнительныеНачисления.ОтработаноДней
                    |ИЗ
                    |   (ВЫБРАТЬ РАЗЛИЧНЫЕ
                    |      НАЧАЛОПЕРИОДА(ОсновныеНачисленияРаботниковОрганизаций.ПериодРегистрации, МЕСЯЦ) КАК Период,
                    |      ОсновныеНачисленияРаботниковОрганизаций.ВидРасчета КАК ВидРасчета,
                    |      СУММА(ОсновныеНачисленияРаботниковОрганизаций.Результат) КАК Результат,
                    |      ОсновныеНачисленияРаботниковОрганизаций.ОтработаноДней КАК ОтработаноДней
                    |   ИЗ
                    |      РегистрРасчета.ОсновныеНачисленияРаботниковОрганизаций КАК ОсновныеНачисленияРаботниковОрганизаций
                    |   ГДЕ
                    |      ОсновныеНачисленияРаботниковОрганизаций.ПериодРегистрации МЕЖДУ НАЧАЛОПЕРИОДА(&НачалоПериода, МЕСЯЦ) И КОНЕЦПЕРИОДА(&КонецПериода, МЕСЯЦ)
                    |      И ОсновныеНачисленияРаботниковОрганизаций.Организация = &Организация
                    |      И ОсновныеНачисленияРаботниковОрганизаций.ФизЛицо = &ФизЛицо
                    |   
                    |   СГРУППИРОВАТЬ ПО
                    |      ОсновныеНачисленияРаботниковОрганизаций.ВидРасчета,
                    |      НАЧАЛОПЕРИОДА(ОсновныеНачисленияРаботниковОрганизаций.ПериодРегистрации, МЕСЯЦ),
                    |      ОсновныеНачисленияРаботниковОрганизаций.ОтработаноДней
                    |   
                    |   ОБЪЕДИНИТЬ ВСЕ
                    |   
                    |   ВЫБРАТЬ РАЗЛИЧНЫЕ
                    |      НАЧАЛОПЕРИОДА(ДополнительныеНачисленияРаботниковОрганизаций.ПериодРегистрации, МЕСЯЦ),
                    |      ДополнительныеНачисленияРаботниковОрганизаций.ВидРасчета,
                    |      СУММА(ДополнительныеНачисленияРаботниковОрганизаций.Результат),
                    |      0
                    |   ИЗ
                    |      РегистрРасчета.ДополнительныеНачисленияРаботниковОрганизаций КАК ДополнительныеНачисленияРаботниковОрганизаций
                    |   ГДЕ
                    |      ДополнительныеНачисленияРаботниковОрганизаций.ПериодРегистрации МЕЖДУ НАЧАЛОПЕРИОДА(&НачалоПериода, МЕСЯЦ) И КОНЕЦПЕРИОДА(&КонецПериода, МЕСЯЦ)
                    |      И ДополнительныеНачисленияРаботниковОрганизаций.Организация = &Организация
                    |      И ДополнительныеНачисленияРаботниковОрганизаций.ФизЛицо = &ФизЛицо
                    |   
                    |   СГРУППИРОВАТЬ ПО
                    |      ДополнительныеНачисленияРаботниковОрганизаций.ВидРасчета,
                    |      НАЧАЛОПЕРИОДА(ДополнительныеНачисленияРаботниковОрганизаций.ПериодРегистрации, МЕСЯЦ)) КАК ОсновныеДополнительныеНачисления
                    |
                    |СГРУППИРОВАТЬ ПО
                    |   ОсновныеДополнительныеНачисления.ВидРасчета,
                    |   ОсновныеДополнительныеНачисления.Результат,
                    |   ОсновныеДополнительныеНачисления.Период,
                    |   ОсновныеДополнительныеНачисления.ОтработаноДней
                    |ИТОГИ ПО
                    |   Период ПЕРИОДАМИ(МЕСЯЦ, &НачалоПериода, &КонецПериода)";
            
   Запрос.УстановитьПараметр("НачалоПериода",ЭлементыФормы.ДатаНачала.Значение);
   Запрос.УстановитьПараметр("КонецПериода",ЭлементыФормы.ДатаОкончания.Значение);
   Запрос.УстановитьПараметр("Организация",ЭлементыФормы.Организация.Значение);
   Запрос.УстановитьПараметр("Физлицо",СтрокаТЧ.Сотрудник.Физлицо);   
   
   ВыборкаПоПериоду = Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, "Период");
   Пока ВыборкаПоПериоду.Следующий() Цикл
       ДетальныеЗаписи = ВыборкаПоПериоду.Выбрать();      
       Пока ДетальныеЗаписи.Следующий() Цикл
         
           ОбластьНачисления.Параметры.ВидРасчета=ДетальныеЗаписи.ВидРасчета;
           ТабДокумент.Присоединить(ОбластьНачисления);                        
         
        КонецЦикла;      
     КонецЦикла;
Запрос=Новый Запрос;
   Запрос.Текст="ВЫБРАТЬ РАЗРЕШЕННЫЕ РАЗЛИЧНЫЕ
                |   ОсновныеДополнительныеНачисления.Период КАК Период,
                |   ОсновныеДополнительныеНачисления.ВидРасчета КАК ВидРасчета,
                |   ОсновныеДополнительныеНачисления.Результат КАК Результат,
                |   ОсновныеДополнительныеНачисления.ОтработаноДней,
                |   ВзаиморасчетыСРаботникамиОрганизацийОстаткиИОбороты.СуммаВзаиморасчетовНачальныйОстаток
                |ИЗ
                |   (ВЫБРАТЬ РАЗЛИЧНЫЕ
                |      НАЧАЛОПЕРИОДА(ОсновныеНачисленияРаботниковОрганизаций.ПериодРегистрации, МЕСЯЦ) КАК Период,
                |      ОсновныеНачисленияРаботниковОрганизаций.ВидРасчета КАК ВидРасчета,
                |      СУММА(ОсновныеНачисленияРаботниковОрганизаций.Результат) КАК Результат,
                |      ОсновныеНачисленияРаботниковОрганизаций.ОтработаноДней КАК ОтработаноДней,
                |      ОсновныеНачисленияРаботниковОрганизаций.ФизЛицо КАК ФизЛицо
                |   ИЗ
                |      РегистрРасчета.ОсновныеНачисленияРаботниковОрганизаций КАК ОсновныеНачисленияРаботниковОрганизаций
                |   ГДЕ
                |      ОсновныеНачисленияРаботниковОрганизаций.ПериодРегистрации МЕЖДУ НАЧАЛОПЕРИОДА(&НачалоПериода, МЕСЯЦ) И КОНЕЦПЕРИОДА(&КонецПериода, МЕСЯЦ)
                |      И ОсновныеНачисленияРаботниковОрганизаций.Организация = &Организация
                |      И ОсновныеНачисленияРаботниковОрганизаций.ФизЛицо = &ФизЛицо
                |   
                |   СГРУППИРОВАТЬ ПО
                |      ОсновныеНачисленияРаботниковОрганизаций.ВидРасчета,
                |      НАЧАЛОПЕРИОДА(ОсновныеНачисленияРаботниковОрганизаций.ПериодРегистрации, МЕСЯЦ),
                |      ОсновныеНачисленияРаботниковОрганизаций.ОтработаноДней,
                |      ОсновныеНачисленияРаботниковОрганизаций.ФизЛицо
                |   
                |   ОБЪЕДИНИТЬ ВСЕ
                |   
                |   ВЫБРАТЬ РАЗЛИЧНЫЕ
                |      НАЧАЛОПЕРИОДА(ДополнительныеНачисленияРаботниковОрганизаций.ПериодРегистрации, МЕСЯЦ),
                |      ДополнительныеНачисленияРаботниковОрганизаций.ВидРасчета,
                |      СУММА(ДополнительныеНачисленияРаботниковОрганизаций.Результат),
                |      0,
                |      ДополнительныеНачисленияРаботниковОрганизаций.ФизЛицо
                |   ИЗ
                |      РегистрРасчета.ДополнительныеНачисленияРаботниковОрганизаций КАК ДополнительныеНачисленияРаботниковОрганизаций
                |   ГДЕ
                |      ДополнительныеНачисленияРаботниковОрганизаций.ПериодРегистрации МЕЖДУ НАЧАЛОПЕРИОДА(&НачалоПериода, МЕСЯЦ) И КОНЕЦПЕРИОДА(&КонецПериода, МЕСЯЦ)
                |      И ДополнительныеНачисленияРаботниковОрганизаций.Организация = &Организация
                |      И ДополнительныеНачисленияРаботниковОрганизаций.ФизЛицо = &ФизЛицо
                |   
                |   СГРУППИРОВАТЬ ПО
                |      ДополнительныеНачисленияРаботниковОрганизаций.ВидРасчета,
                |      НАЧАЛОПЕРИОДА(ДополнительныеНачисленияРаботниковОрганизаций.ПериодРегистрации, МЕСЯЦ),
                |      ДополнительныеНачисленияРаботниковОрганизаций.ФизЛицо) КАК ОсновныеДополнительныеНачисления
                |      ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ВзаиморасчетыСРаботникамиОрганизаций.ОстаткиИОбороты(&НачалоПериода, &КонецПериода, Месяц, , ) КАК ВзаиморасчетыСРаботникамиОрганизацийОстаткиИОбороты
                |      ПО ОсновныеДополнительныеНачисления.ФизЛицо = ВзаиморасчетыСРаботникамиОрганизацийОстаткиИОбороты.Физлицо
                |         И ОсновныеДополнительныеНачисления.Период = ВзаиморасчетыСРаботникамиОрганизацийОстаткиИОбороты.Период
                |ГДЕ
                |   ВзаиморасчетыСРаботникамиОрганизацийОстаткиИОбороты.Организация = &Организация
                |   И ВзаиморасчетыСРаботникамиОрганизацийОстаткиИОбороты.Физлицо = &Физлицо
                |   И ВзаиморасчетыСРаботникамиОрганизацийОстаткиИОбороты.Период МЕЖДУ НАЧАЛОПЕРИОДА(&НачалоПериода, МЕСЯЦ) И КОНЕЦПЕРИОДА(&КонецПериода, МЕСЯЦ)
                |
                |СГРУППИРОВАТЬ ПО
                |   ОсновныеДополнительныеНачисления.ВидРасчета,
                |   ОсновныеДополнительныеНачисления.Результат,
                |   ОсновныеДополнительныеНачисления.Период,
                |   ОсновныеДополнительныеНачисления.ОтработаноДней,
                |   ВзаиморасчетыСРаботникамиОрганизацийОстаткиИОбороты.СуммаВзаиморасчетовНачальныйОстаток
                |ИТОГИ ПО
                |   Период ПЕРИОДАМИ(МЕСЯЦ, &НачалоПериода, &КонецПериода)";
            
            
   Запрос.УстановитьПараметр("НачалоПериода",ЭлементыФормы.ДатаНачала.Значение);
   Запрос.УстановитьПараметр("КонецПериода",ЭлементыФормы.ДатаОкончания.Значение);
   Запрос.УстановитьПараметр("Организация",ЭлементыФормы.Организация.Значение);
   Запрос.УстановитьПараметр("Физлицо",СтрокаТЧ.Сотрудник.Физлицо);   
   
   ВыборкаПоПериоду = Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, "Период");
   Пока ВыборкаПоПериоду.Следующий() Цикл
       ДетальныеЗаписи = ВыборкаПоПериоду.Выбрать();
       Номер=0;
      Пока ДетальныеЗаписи.Следующий() Цикл            
         
           Если ДетальныеЗаписи.ОтработаноДней <>0 И ДетальныеЗаписи.ОтработаноДней<>1 Тогда
                СтрокаЗаголовок1=Макет.ПолучитьОбласть("Строка|ОбластьШапка");
                СтрокаЗаголовок1.Параметры.Номер=Номер+1;
                МесяцСтрока=ПредставлениеПериода(НачалоМесяца(ДетальныеЗаписи.Период), КонецМесяца(ДетальныеЗаписи.Период), "ФП = Истина");
                СтрокаЗаголовок1.Параметры.Месяц=МесяцСтрока;          
                 СтрокаЗаголовок1.Параметры.ОтработаноДней=ДетальныеЗаписи.ОтработаноДней;            
                СтрокаЗаголовок1.Параметры.ДолгНаНачало=ДетальныеЗаписи.СуммаВзаиморасчетовНачальныйОстаток;
                ТабДокумент.Вывести(СтрокаЗаголовок1);             
            КонецЕсли;
         
            ОбластьНачисления=Макет.ПолучитьОбласть("Строка|Начисления");        
            ОбластьНачисления.Параметры.Результат=ДетальныеЗаписи.Результат;
            ТабДокумент.Присоединить(ОбластьНачисления);
          

          
         КонецЦикла;          
   КонецЦикла;
         
               
   
   
        
    
    
    
КонецЦикла;
           
    ТабДокумент.Показать(Макет);
   
КонецПроцедуры

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск