8.х Помогите правильно вывести данные в отчет

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем Люсёк, 11 янв 2011.

  1. TopicStarter Overlay
    Люсёк
    Offline

    Люсёк

    Регистрация:
    20 дек 2010
    Сообщения:
    34
    Симпатии:
    0
    Баллы:
    1
    Суть задачи состоит в следующем: нужно вывести все начисления и удержания сотрудника за период (например, несколько месяцев). Я делаю следующим образом: перечень всех начислений и удержаний выгружаю в разные таблицы значений. С помощью этих Таблиц Значений вывожу шапку таблицы в отчете. Теперь нужно под каждым начислением или удержанием вывести соответствующую сумму. Для этого делаю запрос, с помощью которого выбираю все начисления и соответствующие им суммы,группирую по периоду. Затем обхожу запрос по группировкам и одновременно в цикле обхожу записи Таблицы Значений, в которой перечень всех начислений и таким образом нахожу место куда вывести сумму.Потом тоже самое делаю для удержаний. С начислениями вроде все в порядке, выводится правильно. Проблема возникает с удержаниями,они выводятся в строчку,а должны в столбик. Как это исправить???? На прикрепленном файле показано как выводится счас и как должно выводится. Надеюсь объяснила понятно) Вот код:

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

    Вложения:

  2. mialord
    Offline

    mialord Модераторы Команда форума Модератор

    Регистрация:
    31 июл 2009
    Сообщения:
    5.398
    Симпатии:
    40
    Баллы:
    54
    Проблема не в запросе, Вы рисуете криво, код смотреть не стал, много копаться, Вы удержания прекрипляете, а нужно выводить.
  3. TopicStarter Overlay
    Люсёк
    Offline

    Люсёк

    Регистрация:
    20 дек 2010
    Сообщения:
    34
    Симпатии:
    0
    Баллы:
    1
    Я вывожу строку по частям. Т.е вывожу первую половину строки (все начисления) и к ней присоединяю вторую часть (все удержания). Вот только присоединить правильно у меня не получается(( А через вывести вообще ничего не получится.
  4. cska-fanat-kz
    Offline

    cska-fanat-kz

    Регистрация:
    8 янв 2011
    Сообщения:
    41
    Симпатии:
    0
    Баллы:
    1
    А нельзя в запросе собрать обе половинки?
    Целую строку наверное проще вывести...
  5. TopicStarter Overlay
    Люсёк
    Offline

    Люсёк

    Регистрация:
    20 дек 2010
    Сообщения:
    34
    Симпатии:
    0
    Баллы:
    1
    Нельзя(( Т.к макет, в который я вывожу с вертикальными областями. Заранее не известно сколько будет начислений и сколько удержаний,поэтому в макете эти области нарисованы один раз, а потом в цикле я их вывожу необходимое количество. Так что строку целиком вывести не получится дажее сли все будет в одном запросе.
  6. shurikvz
    Offline

    shurikvz Модераторы Команда форума Модератор

    Регистрация:
    1 окт 2009
    Сообщения:
    8.409
    Симпатии:
    316
    Баллы:
    104
    Люсёк грубо говоря - вам вывод второй части (удержания) перенести в это место:
    Для этого проще подумать над запросом, и переписать его так, чтобы и начисления, и удержания получались в одном запросе (связать половинки через ОБЪЕДИНИТЬ ВСЕ).
  7. TopicStarter Overlay
    Люсёк
    Offline

    Люсёк

    Регистрация:
    20 дек 2010
    Сообщения:
    34
    Симпатии:
    0
    Баллы:
    1
    Что вывод второй части строки надо перенести в указанное вами место это я уже поняла)
    Я вот что хочу спросить: если пока оставить два запроса (потом, конечно попробую собрать все в один запрос) И первым выбирать все начисления и обходить их по группировкам по периуду, а во второй запрос(которым выбираю удержания) передавать в качестве параметров ДатаНачала и ДатаОкончания периуд выбранной группировки первого запроса. Так вообще можно? Почему то у меня получается, например первым запросов выбирается три группировки по периоду(т.е если отчет формируется за три месяца, то в каждая группировка содержит начисления за один месяц) потом циклом их перебираю, вывожу все начисления , удержания. Вроде все выводится, но только для первой группировки, остальные не перебирает. почему так получается? В итоге выводится только один месяц, хотя отчет формируется за три. Старалась объяснить понятно)))

    Код:
    СтрокаЗаголовок1=Макет.ПолучитьОбласть("Строка|ОбластьШапка");
    Номер=0;
    Сумма=0;
    Запрос=Новый Запрос;
    Запрос.Текст="ВЫБРАТЬ РАЗРЕШЕННЫЕ РАЗЛИЧНЫЕ
    |	ОсновныеДополнительныеНачисления.Период КАК Период,
    |	ОсновныеДополнительныеНачисления.ВидРасчета КАК ВидРасчета,
    |	СУММА(ОсновныеДополнительныеНачисления.Результат) КАК Результат,
    |	ОсновныеДополнительныеНачисления.ОтработаноДней КАК ОтработаноДней,
    |	ВзаиморасчетыСРаботникамиОрганизацийОстаткиИОбороты.СуммаВзаиморасчетовНачальныйОстаток КАК СуммаВзаиморасчетовНачальныйОстаток
    |ИЗ
    |	(ВЫБРАТЬ РАЗЛИЧНЫЕ
    |		НАЧАЛОПЕРИОДА(ОсновныеНачисленияРаботниковОрганизаций.ПериодРегистрации, МЕСЯЦ) КАК Период,
    |		ОсновныеНачисленияРаботниковОрганизаций.ВидРасчета КАК ВидРасчета,
    |		СУММА(ОсновныеНачисленияРаботниковОрганизаций.Результат) КАК Результат,
    |		ОсновныеНачисленияРаботниковОрганизаций.ОтработаноДней КАК ОтработаноДней,
    |		ОсновныеНачисленияРаботниковОрганизаций.ФизЛицо КАК ФизЛицо
    |	ИЗ
    |		РегистрРасчета.ОсновныеНачисленияРаботниковОрганизаций КАК ОсновныеНачисленияРаботниковОрганизаций
    |	ГДЕ
    |		ОсновныеНачисленияРаботниковОрганизаций.ПериодРегистрации МЕЖДУ НАЧАЛОПЕРИОДА(&НачалоПериода, МЕСЯЦ) И КОНЕЦПЕРИОДА(&КонецПериода, МЕСЯЦ)
    |		И ОсновныеНачисленияРаботниковОрганизаций.Организация = &Организация
    |		И ОсновныеНачисленияРаботниковОрганизаций.ФизЛицо = &ФизЛицо
    |	
    |	СГРУППИРОВАТЬ ПО
    |		ОсновныеНачисленияРаботниковОрганизаций.ВидРасчета,
    |		НАЧАЛОПЕРИОДА(ОсновныеНачисленияРаботниковОрганизаций.ПериодРегистрации, МЕСЯЦ),
    |		ОсновныеНачисленияРаботниковОрганизаций.ОтработаноДней,
    |		ОсновныеНачисленияРаботниковОрганизаций.ФизЛицо
    |	
    |	ОБЪЕДИНИТЬ ВСЕ
    |	
    |	ВЫБРАТЬ РАЗЛИЧНЫЕ
    |		НАЧАЛОПЕРИОДА(ДополнительныеНачисленияРаботниковОрганизаций.ПериодРегистрации, МЕСЯЦ),
    |		ДополнительныеНачисленияРаботниковОрганизаций.ВидРасчета,
    |		СУММА(ДополнительныеНачисленияРаботниковОрганизаций.Результат),
    |		0,
    |		ДополнительныеНачисленияРаботниковОрганизаций.ФизЛицо
    |	ИЗ
    |		РегистрРасчета.ДополнительныеНачисленияРаботниковОрганизаций КАК ДополнительныеНачисленияРаботниковОрганизаций
    |	ГДЕ
    |		ДополнительныеНачисленияРаботниковОрганизаций.ПериодРегистрации МЕЖДУ НАЧАЛОПЕРИОДА(&НачалоПериода, МЕСЯЦ) И КОНЕЦПЕРИОДА(&КонецПериода, МЕСЯЦ)
    |		И ДополнительныеНачисленияРаботниковОрганизаций.Организация = &Организация
    |		И ДополнительныеНачисленияРаботниковОрганизаций.ФизЛицо = &ФизЛицо
    |	
    |	СГРУППИРОВАТЬ ПО
    |		ДополнительныеНачисленияРаботниковОрганизаций.ВидРасчета,
    |		НАЧАЛОПЕРИОДА(ДополнительныеНачисленияРаботниковОрганизаций.ПериодРегистрации, МЕСЯЦ),
    |		ДополнительныеНачисленияРаботниковОрганизаций.ФизЛицо
    |	
    |	ОБЪЕДИНИТЬ ВСЕ
    |	
    |	ВЫБРАТЬ
    |		НАЧАЛОПЕРИОДА(УдержанияРаботниковОрганизаций.ПериодРегистрации, МЕСЯЦ),
    |		УдержанияРаботниковОрганизаций.ВидРасчета,
    |		УдержанияРаботниковОрганизаций.Результат,
    |		0,
    |		УдержанияРаботниковОрганизаций.ФизЛицо
    |	ИЗ
    |		РегистрРасчета.УдержанияРаботниковОрганизаций КАК УдержанияРаботниковОрганизаций
    |	ГДЕ
    |		УдержанияРаботниковОрганизаций.ПериодРегистрации МЕЖДУ НАЧАЛОПЕРИОДА(&НачалоПериода, МЕСЯЦ) И КОНЕЦПЕРИОДА(&КонецПериода, МЕСЯЦ)
    |		И УдержанияРаботниковОрганизаций.Организация = &Организация
    |		И УдержанияРаботниковОрганизаций.ФизЛицо = &ФизЛицо
    |	
    |	СГРУППИРОВАТЬ ПО
    |		НАЧАЛОПЕРИОДА(УдержанияРаботниковОрганизаций.ПериодРегистрации, МЕСЯЦ),
    |		УдержанияРаботниковОрганизаций.ВидРасчета,
    |		УдержанияРаботниковОрганизаций.Результат,
    |		УдержанияРаботниковОрганизаций.ФизЛицо
    |	
    |	ОБЪЕДИНИТЬ ВСЕ
    |	
    |	ВЫБРАТЬ
    |		НАЧАЛОПЕРИОДА(НДФЛРасчетыСБюджетом.Период, МЕСЯЦ),
    |		""НДФЛ"",
    |		НДФЛРасчетыСБюджетом.Налог,
    |		0,
    |		НДФЛРасчетыСБюджетом.ФизЛицо
    |	ИЗ
    |		РегистрНакопления.НДФЛРасчетыСБюджетом КАК НДФЛРасчетыСБюджетом
    |	ГДЕ
    |		НДФЛРасчетыСБюджетом.Период МЕЖДУ НАЧАЛОПЕРИОДА(&НачалоПериода, МЕСЯЦ) И КОНЕЦПЕРИОДА(&КонецПериода, МЕСЯЦ)
    |		И НДФЛРасчетыСБюджетом.Организация = &Организация
    |		И НДФЛРасчетыСБюджетом.ФизЛицо = &ФизЛицо
    |	
    |	СГРУППИРОВАТЬ ПО
    |		НАЧАЛОПЕРИОДА(НДФЛРасчетыСБюджетом.Период, МЕСЯЦ),
    |		НДФЛРасчетыСБюджетом.Налог,
    |		НДФЛРасчетыСБюджетом.ФизЛицо) КАК ОсновныеДополнительныеНачисления
    |		ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ВзаиморасчетыСРаботникамиОрганизаций.ОстаткиИОбороты(&НачалоПериода, &КонецПериода, Месяц, , ) КАК ВзаиморасчетыСРаботникамиОрганизацийОстаткиИОбороты
    |		ПО ОсновныеДополнительныеНачисления.ФизЛицо = ВзаиморасчетыСРаботникамиОрганизацийОстаткиИОбороты.Физлицо
    |			И ОсновныеДополнительныеНачисления.Период = ВзаиморасчетыСРаботникамиОрганизацийОстаткиИОбороты.Период
    |ГДЕ
    |	ВзаиморасчетыСРаботникамиОрганизацийОстаткиИОбороты.Организация = &Организация
    |	И ВзаиморасчетыСРаботникамиОрганизацийОстаткиИОбороты.Физлицо = &Физлицо
    |	И ВзаиморасчетыСРаботникамиОрганизацийОстаткиИОбороты.Период МЕЖДУ НАЧАЛОПЕРИОДА(&НачалоПериода, МЕСЯЦ) И КОНЕЦПЕРИОДА(&КонецПериода, МЕСЯЦ)
    |	И ОсновныеДополнительныеНачисления.Результат <> 0
    |
    |СГРУППИРОВАТЬ ПО
    |	ОсновныеДополнительныеНачисления.ВидРасчета,
    |	ОсновныеДополнительныеНачисления.Период,
    |	ОсновныеДополнительныеНачисления.ОтработаноДней,
    |	ВзаиморасчетыСРаботникамиОрганизацийОстаткиИОбороты.СуммаВзаиморасчетовНачальныйОстаток
    |
    |УПОРЯДОЧИТЬ ПО
    |	Период,
    |	ОтработаноДней УБЫВ
    |ИТОГИ
    |	МАКСИМУМ(ОтработаноДней)
    |ПО
    |	Период ПЕРИОДАМИ(МЕСЯЦ, &НачалоПериода, &КонецПериода),
    |	СуммаВзаиморасчетовНачальныйОстаток";
    
    
    Запрос.УстановитьПараметр("НачалоПериода",ЭлементыФормы.ДатаНачала.Значение);
    Запрос.УстановитьПараметр("КонецПериода",ЭлементыФормы.ДатаОкончания.Значение);
    Запрос.УстановитьПараметр("Организация",ЭлементыФормы.Организация.Значение);
    Запрос.УстановитьПараметр("Физлицо",СтрокаТЧ.Сотрудник.Физлицо);
    
    ВыборкаПоПериоду = Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, "Период");
    
    Н=ВыборкаПоПериоду.Количество(); //Вот здесь Количество=3
    
    Пока ВыборкаПоПериоду.Следующий() Цикл //А сюда попадает только одна
    ВыборкаПоНачальномуОстатку = ВыборкаПоПериоду.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, "СуммаВзаиморасчетовНачальныйОстаток"); 		 
    Пока ВыборкаПоНачальномуОстатку.Следующий() Цикл
    
    СтрокаЗаголовок1.Параметры.Номер=Номер+1;
    МесяцСтрока=ПредставлениеПериода(НачалоМесяца(ВыборкаПоНачальномуОстатку.Период), КонецМесяца(ВыборкаПоНачальномуОстатку.Период), "ФП = Истина");
    СтрокаЗаголовок1.Параметры.Месяц=МесяцСтрока;			  
    СтрокаЗаголовок1.Параметры.ОтработаноДней=ВыборкаПоНачальномуОстатку.ОтработаноДней;			   
    СтрокаЗаголовок1.Параметры.ДолгНаНачало=ВыборкаПоНачальномуОстатку.СуммаВзаиморасчетовНачальныйОстаток;
    ТабДокумент.Вывести(СтрокаЗаголовок1); 
    
    ДетальныеЗаписи = ВыборкаПоНачальномуОстатку.Выбрать();      	
    
    ОбластьНачисления=Макет.ПолучитьОбласть("Строка|Начисления"); 
    
    
    Для каждого СтрокаНачисления Из Начисления Цикл
    
    ДетальныеЗаписи.Сбросить(); 
    СтруктураПоиска = Новый Структура("ВидРасчета", СтрокаНачисления.ВидРасчета);	      				
    
    Если ДетальныеЗаписи.НайтиСледующий(СтруктураПоиска) <span style='cursor: pointer; color:red' Onclick="window.open('http://www.1c-pro.ru/wiki/index.php/тогда')">Тогда					</span>
    ОбластьНачисления.Параметры.Результат = ДетальныеЗаписи.Результат;
    Сумма=Сумма+ДетальныеЗаписи.Результат;
    Иначе  					
    ОбластьНачисления.Параметры.Результат = 0;					
    КонецЕсли; 
    
    ТабДокумент.Присоединить(ОбластьНачисления); 
    
    КонецЦикла;
    
    ИтогоНачисления=Макет.ПолучитьОбласть("Строка|ИтогоНачисления");
    ИтогоНачисления.Параметры.ВсегоНачислено=Сумма;
    ТабДокумент.Присоединить(ИтогоНачисления);
    Сумма=0;
    
    
    
    /////////////////////////////////////////////////////////////////////////////////////////////
    
    ОбластьУдержания=Макет.ПолучитьОбласть("Строка|Удержания");
    
    Запрос=Новый Запрос;
    Запрос.Текст="ВЫБРАТЬ
    |	Удержания.Период КАК Период,
    |	Удержания.ВидРасчета,
    |	СУММА(Удержания.Результат) КАК Результат,
    |	ВзаиморасчетыСРаботникамиОрганизацийОстаткиИОбороты.СуммаВзаиморасчетовКонечныйОстаток
    |ИЗ
    |	(ВЫБРАТЬ
    |		НАЧАЛОПЕРИОДА(УдержанияРаботниковОрганизаций.ПериодРегистрации, МЕСЯЦ) КАК Период,
    |		УдержанияРаботниковОрганизаций.ВидРасчета КАК ВидРасчета,
    |		УдержанияРаботниковОрганизаций.Результат КАК Результат,
    |		УдержанияРаботниковОрганизаций.ФизЛицо КАК ФизЛицо
    |	ИЗ
    |		РегистрРасчета.УдержанияРаботниковОрганизаций КАК УдержанияРаботниковОрганизаций
    |	ГДЕ
    |		УдержанияРаботниковОрганизаций.ФизЛицо = &ФизЛицо
    |		И УдержанияРаботниковОрганизаций.Организация = &Организация
    |		И УдержанияРаботниковОрганизаций.ПериодРегистрации МЕЖДУ НАЧАЛОПЕРИОДА(&НачалоПериода, МЕСЯЦ) И КОНЕЦПЕРИОДА(&КонецПериода, МЕСЯЦ)
    |	
    |	СГРУППИРОВАТЬ ПО
    |		НАЧАЛОПЕРИОДА(УдержанияРаботниковОрганизаций.ПериодРегистрации, МЕСЯЦ),
    |		УдержанияРаботниковОрганизаций.ВидРасчета,
    |		УдержанияРаботниковОрганизаций.Результат,
    |		УдержанияРаботниковОрганизаций.ФизЛицо
    |	
    |	ОБЪЕДИНИТЬ ВСЕ
    |	
    |	ВЫБРАТЬ
    |		НАЧАЛОПЕРИОДА(НДФЛРасчетыСБюджетом.Период, МЕСЯЦ),
    |		""НДФЛ"",
    |		НДФЛРасчетыСБюджетом.Налог,
    |		НДФЛРасчетыСБюджетом.ФизЛицо
    |	ИЗ
    |		РегистрНакопления.НДФЛРасчетыСБюджетом КАК НДФЛРасчетыСБюджетом
    |	ГДЕ
    |		НДФЛРасчетыСБюджетом.Организация = &Организация
    |		И НДФЛРасчетыСБюджетом.ФизЛицо = &ФизЛицо
    |		И НДФЛРасчетыСБюджетом.Период МЕЖДУ НАЧАЛОПЕРИОДА(&НачалоПериода, МЕСЯЦ) И КОНЕЦПЕРИОДА(&КонецПериода, МЕСЯЦ)
    |	
    |	СГРУППИРОВАТЬ ПО
    |		НАЧАЛОПЕРИОДА(НДФЛРасчетыСБюджетом.Период, МЕСЯЦ),
    |		НДФЛРасчетыСБюджетом.Налог,
    |		НДФЛРасчетыСБюджетом.ФизЛицо) КАК Удержания
    |		ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ВзаиморасчетыСРаботникамиОрганизаций.ОстаткиИОбороты(&НачалоПериода, &КонецПериода, Месяц, , ) КАК ВзаиморасчетыСРаботникамиОрганизацийОстаткиИОбороты
    |		ПО (ВзаиморасчетыСРаботникамиОрганизацийОстаткиИОбороты.Физлицо = Удержания.ФизЛицо)
    |			И (ВзаиморасчетыСРаботникамиОрганизацийОстаткиИОбороты.Период = Удержания.Период)
    |ГДЕ
    |	ВзаиморасчетыСРаботникамиОрганизацийОстаткиИОбороты.Физлицо = &Физлицо
    |	И ВзаиморасчетыСРаботникамиОрганизацийОстаткиИОбороты.Организация = &Организация
    |	И ВзаиморасчетыСРаботникамиОрганизацийОстаткиИОбороты.Период МЕЖДУ НАЧАЛОПЕРИОДА(&НачалоПериода, МЕСЯЦ) И КОНЕЦПЕРИОДА(&КонецПериода, МЕСЯЦ)
    |
    |СГРУППИРОВАТЬ ПО
    |	Удержания.Период,
    |	Удержания.ВидРасчета,
    |	ВзаиморасчетыСРаботникамиОрганизацийОстаткиИОбороты.СуммаВзаиморасчетовКонечныйОстаток
    |ИТОГИ ПО
    |	Период";
    
    
    Запрос.УстановитьПараметр("НачалоПериода",НачалоМесяца(ВыборкаПоПериоду.Период));
    Запрос.УстановитьПараметр("КонецПериода",КонецМесяца(ВыборкаПоПериоду.Период));
    Запрос.УстановитьПараметр("Организация",ЭлементыФормы.Организация.Значение);
    Запрос.УстановитьПараметр("Физлицо",СтрокаТЧ.Сотрудник.Физлицо);
    
    ВыборкаПоПериоду = Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, "Период");
    Пока ВыборкаПоПериоду.Следующий() Цикл
    ДетальныеЗаписи=ВыборкаПоПериоду.Выбрать();
    
    Для каждого СтрокаТЗУдержания Из ТЗУдержания Цикл
    ДетальныеЗаписи.Сбросить();
    СтруктураПоиска = Новый Структура("ВидРасчета", СтрокаТЗУдержания.ВидРасчета);	      				
    
    Если ДетальныеЗаписи.НайтиСледующий(СтруктураПоиска) <span style='cursor: pointer; color:red' Onclick="window.open('http://www.1c-pro.ru/wiki/index.php/тогда')">Тогда					</span>
    ОбластьУдержания.Параметры.РезультатУд = ДетальныеЗаписи.Результат;
    Сумма=Сумма+ДетальныеЗаписи.Результат;
    Иначе  					
    ОбластьУдержания.Параметры.РезультатУд = 0;					
    КонецЕсли; 
    
    ТабДокумент.Присоединить(ОбластьУдержания); 
    
    КонецЦикла;
    
    ИтогоУдержания=Макет.ПолучитьОбласть("Строка|ИтогоУдержания");
    ИтогоУдержания.Параметры.ВсегоУдержано=Сумма;
    ТабДокумент.Присоединить(ИтогоУдержания);
    Сумма=0;
    СальдоКонечное=Макет.ПолучитьОбласть("Строка|СальдоКонечное");
    СальдоКонечное.Параметры.ДолгНаКонец=ДетальныеЗаписи.СуммаВзаиморасчетовКонечныйОстаток;
    ТабДокумент.Присоединить(СальдоКонечное);
    
    КонецЦикла;	
    
    
    
    КонецЦикла; 	     		 	
    КонецЦикла;
    
  8. TopicStarter Overlay
    Люсёк
    Offline

    Люсёк

    Регистрация:
    20 дек 2010
    Сообщения:
    34
    Симпатии:
    0
    Баллы:
    1
    Попробывала сделать как вы советовали. Собрала все начисления и удержания в одном запросе. Но мне надо посчитать отдельно сумму начислений и отдельно сумму удержаний, а они все в запросе попадают в поле ВидРасчета. Т.е. получается что считается их общая сумма(( Как быть?????
  9. shurikvz
    Offline

    shurikvz Модераторы Команда форума Модератор

    Регистрация:
    1 окт 2009
    Сообщения:
    8.409
    Симпатии:
    316
    Баллы:
    104
    В запрос добавляете дополнительное поле, назовем его "признак", и ставите для начислений 1, для удержаний 2. Потом либо итоги по этому полю (тогда в выводе надо будет подумать), либо что-то вроде:
    Код:
    "Признак КАК Признак,
    ВЫБОР КОГДА Признак = 1 ТОГДА Результат ИНАЧЕ 0 КОНЕЦ КАК РезультатНачисления,
    ВЫБОР КОГДА Признак = 2 ТОГДА Результат ИНАЧЕ 0 КОНЕЦ КАК РезультатУдержания,"
    
    т.е. в выборке будет 2 поля: итоги по начислениям и удержаниям, а при выводе уже смотрите на "ВыборкаДетальныеЗаписи.Признак" и в зависимости от числа берете сумму или из "ВыборкаДетальныеЗаписи.РезультатНачисления" или из "ВыборкаДетальныеЗаписи.РезультатУдержания".
  10. TopicStarter Overlay
    Люсёк
    Offline

    Люсёк

    Регистрация:
    20 дек 2010
    Сообщения:
    34
    Симпатии:
    0
    Баллы:
    1
    shurikvz Спасибо Вам огромное)))) Вы очень помогли)))

Поделиться этой страницей