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

не подскажет кто как сделать запрос на удержание в модуле

Автор Володя, 29 мая 2018, 09:18

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

Володя

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

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

Володя

подскажите нужно в справку добавть столбец удержание и чистый доход чтобы выбирал  из программы

alexandr_ll

Цитата: Володя от 14 июн 2018, 09:38
подскажите нужно в справку добавть столбец удержание и чистый доход чтобы выбирал  из программы
Типа Такого:
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| УдержанияРаботниковОрганизаций.Результат,
| УдержанияРаботниковОрганизаций.ВидРасчета,
| УдержанияРаботниковОрганизаций.ФизЛицо
|ИЗ
| РегистрРасчета.УдержанияРаботниковОрганизаций КАК УдержанияРаботниковОрганизаций
|ГДЕ
| УдержанияРаботниковОрганизаций.ФизЛицо = &ФизЛицо
| И УдержанияРаботниковОрганизаций.БазовыйПериодНачало >= &НачалоНП
| И УдержанияРаботниковОрганизаций.БазовыйПериодКонец <= &КонецНП";


Запрос.УстановитьПараметр("ГоловнаяОрганизация", Организация);
Запрос.УстановитьПараметр("ФизЛицо", Сотрудник.Физлицо);

Володя

Цитата: alexandr_ll от 14 июн 2018, 12:13
Цитата: Володя от 14 июн 2018, 09:38
подскажите нужно в справку добавть столбец удержание и чистый доход чтобы выбирал  из программы
Типа Такого:
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| УдержанияРаботниковОрганизаций.Результат,
| УдержанияРаботниковОрганизаций.ВидРасчета,
| УдержанияРаботниковОрганизаций.ФизЛицо
|ИЗ
| РегистрРасчета.УдержанияРаботниковОрганизаций КАК УдержанияРаботниковОрганизаций
|ГДЕ
| УдержанияРаботниковОрганизаций.ФизЛицо = &ФизЛицо
| И УдержанияРаботниковОрганизаций.БазовыйПериодНачало >= &НачалоНП
| И УдержанияРаботниковОрганизаций.БазовыйПериодКонец <= &КонецНП";


Запрос.УстановитьПараметр("ГоловнаяОрганизация", Организация);
Запрос.УстановитьПараметр("ФизЛицо", Сотрудник.Физлицо);


можешь посмотреть

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

Володя

не могли бы посмотреть что не так делаю в запросе на удержание
&НаСервере
Функция СформироватьСправкуНаСервере()
   
   Если Объект.КоличествоМесяцев = 0 Тогда
      Объект.КоличествоМесяцев = 1;
   КонецЕсли;
   
   ДатаОкончания      = КонецМесяца(НачалоМесяца(ТекущаяДатаСеанса()) - 1);
   ДатаНачала         = ДобавитьМесяц(НачалоМесяца(ДатаОкончания), 1 - Объект.КоличествоМесяцев);
   
   ТаблицаНачислений   = ПолучитьТаблицуНачисленийУдержаний(ДатаНачала, ДатаОкончания);
   
   ТабДок             = Новый ТабличныйДокумент;
   ТекОбъект          = РеквизитФормыВЗначение("Объект"); 
   Макет             = ТекОбъект.ПолучитьМакет("Макет");       
   ОбластьЗаголовок    = Макет.ПолучитьОбласть("Шапка");
   ОбластьМесяца      = Макет.ПолучитьОбласть("Месяц");
   ОбластьИтоги       = Макет.ПолучитьОбласть("Итоги");
   ОбластьПодвал       = Макет.ПолучитьОбласть("Подвал");
                            
   Запрос = Новый Запрос();
   Запрос.Текст =
      "ВЫБРАТЬ РАЗРЕШЕННЫЕ
      |   КадроваяИсторияСотрудниковСрезПоследних.Должность КАК Должность,
      |   КадроваяИсторияСотрудниковСрезПоследних.Сотрудник КАК Сотрудник,
      |   КадроваяИсторияСотрудниковСрезПоследних.Регистратор КАК Регистратор,
      |   КадроваяИсторияСотрудниковСрезПоследних.Период КАК Период,
      |   СведенияОбОтветственныхЛицахСрезПоследних.Руководитель КАК Руководитель,
      |   СведенияОбОтветственныхЛицахСрезПоследних.ДолжностьРуководителя КАК ДолжностьРуководителя,
      |   СведенияОбОтветственныхЛицахСрезПоследних.ГлавныйБухгалтер КАК ГлавныйБухгалтер
      |ИЗ
      |   РегистрСведений.КадроваяИсторияСотрудников.СрезПоследних(
      |         ,
      |         Организация = &Организация
      |            И Сотрудник = &Сотрудник) КАК КадроваяИсторияСотрудниковСрезПоследних,
      |   РегистрСведений.СведенияОбОтветственныхЛицах.СрезПоследних(, Организация = &Организация) КАК СведенияОбОтветственныхЛицахСрезПоследних";
   Запрос.УстановитьПараметр("Сотрудник", Объект.Сотрудник);
   Запрос.УстановитьПараметр("Организация", Объект.Организация);
   
   Выборка = Запрос.Выполнить().Выбрать();
   Если Выборка.Следующий() Тогда
      
      ОбластьЗаголовок.Параметры.РеквизитыОрганизации = Объект.Организация.НаименованиеПолное + Символы.ПС;
      Если Объект.Организация.ЮридическоеФизическоеЛицо = Перечисления.ЮридическоеФизическоеЛицо.ФизическоеЛицо Тогда
         ОбластьЗаголовок.Параметры.ВУ = "у";
         ИП = Строка(Объект.Организация.НаименованиеПолное);
         Если ФизическиеЛицаЗарплатаКадры.Просклонять(ФамилияИмяОтчество(Объект.Организация.ИндивидуальныйПредприниматель), 2, ИП, Объект.Организация.ИндивидуальныйПредприниматель.Пол) Тогда
            ИП = СтрШаблон(НСтр("ru = ' Индивидуального предпринимателя %1'"), ИП);
         Иначе
            ИП = Строка(Объект.Организация.НаименованиеПолное);
         КонецЕсли;
         ОбластьЗаголовок.Параметры.ОрганизацияНаименование = ИП;
         ОбластьЗаголовок.Параметры.РеквизитыОрганизации = ОбластьЗаголовок.Параметры.РеквизитыОрганизации +
            УправлениеКонтактнойИнформацией.ПредставлениеКонтактнойИнформацииОбъекта(Объект.Организация, Справочники.ВидыКонтактнойИнформации.ЮрАдресОрганизации,,ТекущаяДатаСеанса(),) + Символы.ПС;
         ОбластьЗаголовок.Параметры.РеквизитыОрганизации = ОбластьЗаголовок.Параметры.РеквизитыОрганизации +
            "ИНН " + Объект.Организация.ИНН;
      Иначе
         ОбластьЗаголовок.Параметры.ВУ = "в";
         ОбластьЗаголовок.Параметры.ОрганизацияНаименование = Строка(Объект.Организация.НаименованиеПолное);
         ОбластьЗаголовок.Параметры.РеквизитыОрганизации = ОбластьЗаголовок.Параметры.РеквизитыОрганизации +
            УправлениеКонтактнойИнформацией.ПредставлениеКонтактнойИнформацииОбъекта(Объект.Организация, Справочники.ВидыКонтактнойИнформации.ЮрАдресОрганизации,,ТекущаяДатаСеанса(),) + Символы.ПС;
         ОбластьЗаголовок.Параметры.РеквизитыОрганизации = ОбластьЗаголовок.Параметры.РеквизитыОрганизации +
            "ИНН " + Объект.Организация.ИНН;
         Попытка
            ОбластьЗаголовок.Параметры.РеквизитыОрганизации = ОбластьЗаголовок.Параметры.РеквизитыОрганизации +
               " КПП " + Объект.Организация.РегистрацияВНалоговомОргане.КПП;
         Исключение
         КонецПопытки;
      КонецЕсли;      
      
      ОбластьЗаголовок.Параметры.ДатаПрописью = Формат(ТекущаяДатаСеанса(), "ДФ='dd MMMM yyyy ""г.""'");
      Если НЕ ФизическиеЛицаЗарплатаКадры.Просклонять(ФамилияИмяОтчество(Объект.Сотрудник.ФизическоеЛицо), 3, ОбластьЗаголовок.Параметры.ФИО, Объект.Сотрудник.ФизическоеЛицо.Пол) Тогда
         ОбластьЗаголовок.Параметры.ФИО = ФамилияИмяОтчество(Объект.Сотрудник.ФизическоеЛицо);
      КонецЕсли;
      Если Объект.Сотрудник.ФизическоеЛицо.Пол = Перечисления.ПолФизическогоЛица.Женский Тогда
         ОбластьЗаголовок.Параметры.ЖенскийПол = НСтр("ru='а'");
         ОбластьЗаголовок.Параметры.ЕеЕго = НСтр("ru='ее'");
      Иначе
         ОбластьЗаголовок.Параметры.ЖенскийПол = "";
         ОбластьЗаголовок.Параметры.ЕеЕго = НСтр("ru='его'");
      КонецЕсли;
      ОбластьЗаголовок.Параметры.ДатаПриема = Формат(Выборка.Период, "ДФ=dd.MM.yyyy");
      ОбластьЗаголовок.Параметры.Должность = Выборка.Должность;
      ОбластьЗаголовок.Параметры.ДатаНачала = Формат(ДатаНачала, "ДФ=dd.MM.yyyy");
      ОбластьЗаголовок.Параметры.ДатаОкончания = Формат(ДатаОкончания, "ДФ=dd.MM.yyyy");      
      ТабДок.Вывести(ОбластьЗаголовок);
      
      Для Каждого Строки Из ТаблицаНачислений Цикл
         ОбластьМесяца.Параметры.НаимМесяца    = Формат(Строки.Период, "ДФ='ММММ гггг'") + " г.";
         ОбластьМесяца.Параметры.Сумма      = Формат(Строки.СуммаДохода, "ЧДЦ=2; ЧН=0,00");
         ОбластьМесяца.Параметры.Удержания   = Формат(Строки.Удержания, "ЧДЦ=2; ЧН=0,00");
         ТабДок.Вывести(ОбластьМесяца);
      КонецЦикла;
      
      ОбластьИтоги.Параметры.Итого       = ТаблицаНачислений.Итог("СуммаДохода");
      ОбластьИтоги.Параметры.ИтогоПрописью = ЧислоПрописью(ТаблицаНачислений.Итог("СуммаДохода"), "ЧДЦ=2", "рубль, рубля, рублей, м, копейка, копейки, копеек, ж");
      ТабДок.Вывести(ОбластьИтоги);
      
      ОбластьПодвал.Параметры.Руководитель = ФизическиеЛицаЗарплатаКадры.РасшифровкаПодписи(Выборка.Руководитель);
      Если ЗначениеЗаполнено(Выборка.ГлавныйБухгалтер) Тогда
         ОбластьПодвал.Параметры.ГлавБух              = ФизическиеЛицаЗарплатаКадры.РасшифровкаПодписи(Выборка.ГлавныйБухгалтер);
         ОбластьПодвал.Параметры.ДолжностьГлБухгалтера = "Гл. бухгалтер";
      Иначе
         ОбластьПодвал.Параметры.ГлавБух              = "Должность не предусмотрена";
         ОбластьПодвал.Параметры.ДолжностьГлБухгалтера = "Бухгалтер";
      КонецЕсли;
      Если ЗначениеЗаполнено(Объект.Организация.ИндивидуальныйПредприниматель) Тогда
         ОбластьПодвал.Параметры.ДолжностьРуководителя = "Индивидуальный предприниматель";
      Иначе
         ОбластьПодвал.Параметры.ДолжностьРуководителя = ТРег(Выборка.ДолжностьРуководителя);
      КонецЕсли;
      ТабДок.Вывести(ОбластьПодвал);
      
   КонецЕсли;   
             
   Возврат ТабДок;
   
КонецФункции

&НаСервереБезКонтекста
Функция ФамилияИмяОтчество(Знач ФизЛицо)
      
   Фамилия = ФизЛицо.Фамилия;
   Имя = ФизЛицо.Имя;
   Отчество = ФизЛицо.Отчество;
   
   Если ПустаяСтрока(Имя) Тогда
      Возврат Фамилия;
   КонецЕсли;
   
   Если ПустаяСтрока(Отчество) Тогда
      Возврат СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку("%1 %2", Фамилия, Имя);
   КонецЕсли;
   
   Возврат СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку("%1 %2 %3", Фамилия, Имя, Отчество);
   
КонецФункции

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


pavl_vs

Володя, вопрос о написании запроса плавно трансформировался в вопрос о написании отчета (справки).
Что не получилось?
Конфигурация?

alexandr_ll

Володя, вы так и не указали конфигурацию и редиз.
Предположим, что это Зарплата и управление персоналом 3.1.6.38
Тогда запрос можно написать например так:
ЗапросУдержаний = Новый Запрос;
ЗапросУдержаний.Текст =
"ВЫБРАТЬ
|    УдержанияРаботниковОрганизаций.Результат,
|    УдержанияРаботниковОрганизаций.ВидРасчета,
|    УдержанияРаботниковОрганизаций.ФизическоеЛицо
|ИЗ
|    РегистрРасчета.УдержанияРаботниковОрганизаций КАК УдержанияРаботниковОрганизаций
|ГДЕ
|    УдержанияРаботниковОрганизаций.ФизическоеЛицо = &ФизическоеЛицо
|    И УдержанияРаботниковОрганизаций.БазовыйПериодНачало >= &НачалоНП
|    И УдержанияРаботниковОрганизаций.БазовыйПериодКонец <= &КонецНП";

// Установка параметров запроса

ЗапросУдержаний.УстановитьПараметр("Организация",   Объект.Организация);
ЗапросУдержаний.УстановитьПараметр("ФизическоеЛицо",   Объект.Сотрудник.ФизическоеЛицо);
Для ц=1 по Месяцев+1 Цикл

ТекДата = ДобавитьМесяц(НачПериода, Ц-1); 
Начало = НачалоМесяца(ТекДата);
Конец = КонецМесяца(ТекДата);
Запрос.УстановитьПараметр("НачалоНП", Начало);
Запрос.УстановитьПараметр("КонецНП", Конец);

Выборка = Запрос.Выполнить().Выбрать();
СуммаУдерж = 0;
Пока Выборка.Следующий() Цикл
СуммаУдерж = СуммаУдер + Выборка.Результат;
КонецЦикла;

НоваяСтрока          = ТаблицаНачислений.Добавить();
НоваяСтрока.Период       = ТекДата;
НоваяСтрока.Удержания      = СуммаУдерж;
КонецЦикла;


ТаблицаНачислений.Свернуть("Период", "СуммаДохода, НДФЛ, Удержания");

Здесь месяцев - количество полных месяцев между датами начала и конца справки

Володя

Цитата: alexandr_ll от 22 июн 2018, 06:45
Володя, вы так и не указали конфигурацию и редиз.
Предположим, что это Зарплата и управление персоналом 3.1.6.38
Тогда запрос можно написать например так:
ЗапросУдержаний = Новый Запрос;
ЗапросУдержаний.Текст =
"ВЫБРАТЬ
|    УдержанияРаботниковОрганизаций.Результат,
|    УдержанияРаботниковОрганизаций.ВидРасчета,
|    УдержанияРаботниковОрганизаций.ФизическоеЛицо
|ИЗ
|    РегистрРасчета.УдержанияРаботниковОрганизаций КАК УдержанияРаботниковОрганизаций
|ГДЕ
|    УдержанияРаботниковОрганизаций.ФизическоеЛицо = &ФизическоеЛицо
|    И УдержанияРаботниковОрганизаций.БазовыйПериодНачало >= &НачалоНП
|    И УдержанияРаботниковОрганизаций.БазовыйПериодКонец <= &КонецНП";

// Установка параметров запроса

ЗапросУдержаний.УстановитьПараметр("Организация",   Объект.Организация);
ЗапросУдержаний.УстановитьПараметр("ФизическоеЛицо",   Объект.Сотрудник.ФизическоеЛицо);
Для ц=1 по Месяцев+1 Цикл

ТекДата = ДобавитьМесяц(НачПериода, Ц-1); 
Начало = НачалоМесяца(ТекДата);
Конец = КонецМесяца(ТекДата);
Запрос.УстановитьПараметр("НачалоНП", Начало);
Запрос.УстановитьПараметр("КонецНП", Конец);

Выборка = Запрос.Выполнить().Выбрать();
СуммаУдерж = 0;
Пока Выборка.Следующий() Цикл
СуммаУдерж = СуммаУдер + Выборка.Результат;
КонецЦикла;

НоваяСтрока          = ТаблицаНачислений.Добавить();
НоваяСтрока.Период       = ТекДата;
НоваяСтрока.Удержания      = СуммаУдерж;
КонецЦикла;


ТаблицаНачислений.Свернуть("Период", "СуммаДохода, НДФЛ, Удержания");

Здесь месяцев - количество полных месяцев между датами начала и конца справки

ЗУП 3.1.6.6
извините что подробно не написал

Володя


как добавить в форму,  выбор не по месяцам а по дате чтоб был выбор типа с определенной даты. пример с 01.01.2018 по

&НаСервере
Функция СформироватьСправкуНаСервере()
   
       
   Если Объект.ДатаНач = 0 Тогда
      Объект.КоличествоМесяцев = 1;
   КонецЕсли;
   
   ДатаОкончания      = КонецМесяца(НачалоМесяца(ТекущаяДатаСеанса()) - 1);
   ДатаНачала         = ДобавитьМесяц(НачалоМесяца(ДатаОкончания), 1 - Объект.КоличествоМесяцев);
   //
   ТаблицаНачислений   = ПолучитьТаблицуНачисленийУдержаний(ДатаНачала, ДатаОкончания);
   
   ТабДок             = Новый ТабличныйДокумент;
   ТекОбъект          = РеквизитФормыВЗначение("Объект"); 
   Макет             = ТекОбъект.ПолучитьМакет("Макет");       
   ОбластьЗаголовок    = Макет.ПолучитьОбласть("Шапка");
   ОбластьМесяца      = Макет.ПолучитьОбласть("Месяц");
   ОбластьИтоги       = Макет.ПолучитьОбласть("Итоги");
   ОбластьПодвал       = Макет.ПолучитьОбласть("Подвал");
                            
   Запрос = Новый Запрос();
   Запрос.Текст =
      "ВЫБРАТЬ РАЗРЕШЕННЫЕ
      |   КадроваяИсторияСотрудниковСрезПоследних.Должность КАК Должность,
      |   КадроваяИсторияСотрудниковСрезПоследних.Сотрудник КАК Сотрудник,
      |   КадроваяИсторияСотрудниковСрезПоследних.Регистратор КАК Регистратор,
      |   КадроваяИсторияСотрудниковСрезПоследних.Период КАК Период,
      |   СведенияОбОтветственныхЛицахСрезПоследних.Руководитель КАК Руководитель,
      |   СведенияОбОтветственныхЛицахСрезПоследних.ДолжностьРуководителя КАК ДолжностьРуководителя,
      |   СведенияОбОтветственныхЛицахСрезПоследних.ГлавныйБухгалтер КАК ГлавныйБухгалтер
      |ИЗ
      |   РегистрСведений.КадроваяИсторияСотрудников.СрезПоследних(
      |         ,
      |         Организация = &Организация
      |            И Сотрудник = &Сотрудник) КАК КадроваяИсторияСотрудниковСрезПоследних,
      |   РегистрСведений.СведенияОбОтветственныхЛицах.СрезПоследних(, Организация = &Организация) КАК СведенияОбОтветственныхЛицахСрезПоследних";
   Запрос.УстановитьПараметр("Сотрудник", Объект.Сотрудник);
   Запрос.УстановитьПараметр("Организация", Объект.Организация);
   
   Выборка = Запрос.Выполнить().Выбрать();
   Если Выборка.Следующий() Тогда
      
      ОбластьЗаголовок.Параметры.РеквизитыОрганизации = Объект.Организация.НаименованиеПолное + Символы.ПС;
      Если Объект.Организация.ЮридическоеФизическоеЛицо = Перечисления.ЮридическоеФизическоеЛицо.ФизическоеЛицо Тогда
         ОбластьЗаголовок.Параметры.ВУ = "у";
         ИП = Строка(Объект.Организация.НаименованиеПолное);
         Если ФизическиеЛицаЗарплатаКадры.Просклонять(ФамилияИмяОтчество(Объект.Организация.ИндивидуальныйПредприниматель), 2, ИП, Объект.Организация.ИндивидуальныйПредприниматель.Пол) Тогда
            ИП = СтрШаблон(НСтр("ru = ' Индивидуального предпринимателя %1'"), ИП);
         Иначе
            ИП = Строка(Объект.Организация.НаименованиеПолное);
         КонецЕсли;
         ОбластьЗаголовок.Параметры.ОрганизацияНаименование = ИП;
         ОбластьЗаголовок.Параметры.РеквизитыОрганизации = ОбластьЗаголовок.Параметры.РеквизитыОрганизации +
            УправлениеКонтактнойИнформацией.ПредставлениеКонтактнойИнформацииОбъекта(Объект.Организация, Справочники.ВидыКонтактнойИнформации.ЮрАдресОрганизации,,ТекущаяДатаСеанса(),) + Символы.ПС;
         ОбластьЗаголовок.Параметры.РеквизитыОрганизации = ОбластьЗаголовок.Параметры.РеквизитыОрганизации +
            "ИНН " + Объект.Организация.ИНН;
      Иначе
         ОбластьЗаголовок.Параметры.ВУ = "в";
         ОбластьЗаголовок.Параметры.ОрганизацияНаименование = Строка(Объект.Организация.НаименованиеПолное);
         ОбластьЗаголовок.Параметры.РеквизитыОрганизации = ОбластьЗаголовок.Параметры.РеквизитыОрганизации +
            УправлениеКонтактнойИнформацией.ПредставлениеКонтактнойИнформацииОбъекта(Объект.Организация, Справочники.ВидыКонтактнойИнформации.ЮрАдресОрганизации,,ТекущаяДатаСеанса(),) + Символы.ПС;
         ОбластьЗаголовок.Параметры.РеквизитыОрганизации = ОбластьЗаголовок.Параметры.РеквизитыОрганизации +
            "ИНН " + Объект.Организация.ИНН;
         Попытка
            ОбластьЗаголовок.Параметры.РеквизитыОрганизации = ОбластьЗаголовок.Параметры.РеквизитыОрганизации +
               " КПП " + Объект.Организация.РегистрацияВНалоговомОргане.КПП;
         Исключение
         КонецПопытки;
      КонецЕсли;      
      
      ОбластьЗаголовок.Параметры.ДатаПрописью = Формат(ТекущаяДатаСеанса(), "ДФ='dd MMMM yyyy ""г.""'");
      Если НЕ ФизическиеЛицаЗарплатаКадры.Просклонять(ФамилияИмяОтчество(Объект.Сотрудник.ФизическоеЛицо), 3, ОбластьЗаголовок.Параметры.ФИО, Объект.Сотрудник.ФизическоеЛицо.Пол) Тогда
         ОбластьЗаголовок.Параметры.ФИО = ФамилияИмяОтчество(Объект.Сотрудник.ФизическоеЛицо);
      КонецЕсли;
      Если Объект.Сотрудник.ФизическоеЛицо.Пол = Перечисления.ПолФизическогоЛица.Женский Тогда
         ОбластьЗаголовок.Параметры.ЖенскийПол = НСтр("ru='а'");
         ОбластьЗаголовок.Параметры.ЕеЕго = НСтр("ru='ее'");
      Иначе
         ОбластьЗаголовок.Параметры.ЖенскийПол = "";
         ОбластьЗаголовок.Параметры.ЕеЕго = НСтр("ru='его'");
      КонецЕсли;
      ОбластьЗаголовок.Параметры.ДатаПриема = Формат(Выборка.Период, "ДФ=dd.MM.yyyy");
      ОбластьЗаголовок.Параметры.Должность = Выборка.Должность;
      ОбластьЗаголовок.Параметры.ДатаНачала = Формат(ДатаНачала, "ДФ=dd.MM.yyyy");
      ОбластьЗаголовок.Параметры.ДатаОкончания = Формат(ДатаОкончания, "ДФ=dd.MM.yyyy");      
      ТабДок.Вывести(ОбластьЗаголовок);
      
      Для Каждого Строки Из ТаблицаНачислений Цикл
         ОбластьМесяца.Параметры.НаимМесяца    = Формат(Строки.Период, "ДФ='ММММ гггг'") + " г.";
         ОбластьМесяца.Параметры.Сумма      = Формат(Строки.СуммаДохода, "ЧДЦ=2; ЧН=0,00");
         ОбластьМесяца.Параметры.НДФЛ      = Формат(Строки.НДФЛ, "ЧДЦ=2; ЧН=0,00");
         ОбластьМесяца.Параметры.Удержания   = Формат(Строки.Удержаний, "ЧДЦ=2; ЧН=0,00");
         ОбластьМесяца.Параметры.ЧистыйДоход      = Формат(Строки.ЧистыйДоход, "ЧДЦ=2; ЧН=0,00");
         ТабДок.Вывести(ОбластьМесяца);
      КонецЦикла;
      
      ОбластьИтоги.Параметры.Итого       = ТаблицаНачислений.Итог("СуммаДохода");
      ОбластьИтоги.Параметры.ИтогоПрописью = ЧислоПрописью(ТаблицаНачислений.Итог("СуммаДохода"), "ЧДЦ=2", "рубль, рубля, рублей, м, копейка, копейки, копеек, ж");
      ТабДок.Вывести(ОбластьИтоги);
      
      ОбластьПодвал.Параметры.Руководитель = ФизическиеЛицаЗарплатаКадры.РасшифровкаПодписи(Выборка.Руководитель);
      Если ЗначениеЗаполнено(Выборка.ГлавныйБухгалтер) Тогда
         ОбластьПодвал.Параметры.ГлавБух              = ФизическиеЛицаЗарплатаКадры.РасшифровкаПодписи(Выборка.ГлавныйБухгалтер);
         ОбластьПодвал.Параметры.ДолжностьГлБухгалтера = "Гл. бухгалтер";
      Иначе
         ОбластьПодвал.Параметры.ГлавБух              = "Должность не предусмотрена";
         ОбластьПодвал.Параметры.ДолжностьГлБухгалтера = "Бухгалтер";
      КонецЕсли;
      Если ЗначениеЗаполнено(Объект.Организация.ИндивидуальныйПредприниматель) Тогда
         ОбластьПодвал.Параметры.ДолжностьРуководителя = "Индивидуальный предприниматель";
      Иначе
         ОбластьПодвал.Параметры.ДолжностьРуководителя = ТРег(Выборка.ДолжностьРуководителя);
      КонецЕсли;
      ТабДок.Вывести(ОбластьПодвал);
      
   КонецЕсли;   
             
   Возврат ТабДок;
   
КонецФункции

&НаСервереБезКонтекста
Функция ФамилияИмяОтчество(Знач ФизЛицо)
      
   Фамилия = ФизЛицо.Фамилия;
   Имя = ФизЛицо.Имя;
   Отчество = ФизЛицо.Отчество;
   
   Если ПустаяСтрока(Имя) Тогда
      Возврат Фамилия;
   КонецЕсли;
   
   Если ПустаяСтрока(Отчество) Тогда
      Возврат СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку("%1 %2", Фамилия, Имя);
   КонецЕсли;
   
   Возврат СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку("%1 %2 %3", Фамилия, Имя, Отчество);
   
КонецФункции

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

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

   |СГРУППИРОВАТЬ ПО
   |   НАЧАЛОПЕРИОДА(УдержанияРаботниковОрганизаций.ПериодРегистрации, МЕСЯЦ)";
      
   
   // Установка параметров запроса

   ЗапросУдержаний.УстановитьПараметр("Организация", Объект.Организация);
   ЗапросУдержаний.УстановитьПараметр("Сотрудник", Объект.Сотрудник.ФизическоеЛицо);
   ЗапросУдержаний.УстановитьПараметр("ДатаНач", Началомесяца(ДатаНачала));
   ЗапросУдержаний.УстановитьПараметр("ДатаКон", Конецмесяца(ДатаОкончания));

   Выборка = ЗапросУдержаний.Выполнить().Выбрать();
   Пока Выборка.Следующий()   Цикл
      
      НоваяСтрока          = ТаблицаНачислений.Добавить();
      НоваяСтрока.Период       = Выборка.ПериодРегистрации;
      НоваяСтрока.Удержаний   = Выборка.Результат;
            
   КонецЦикла;

   //СуммаУдерж = 0;
   //
   //Для ц=1 по Объект.КоличествоМесяцев+1 Цикл
   //   
   //ТекДата = ДобавитьМесяц(ДатаНачала, Ц-1); 
   //Начало = НачалоМесяца(ТекДата);
   //Конец = КонецМесяца(ТекДата);
   //
   //   
   //   
   //Пока Выборка.Следующий() Цикл
   //СуммаУдерж = СуммаУдерж + Выборка.Результат;
   //КонецЦикла;
   //
   
//ЗапросУдержаний.УстановитьПараметр("Организация",   Объект.Организация);
//ЗапросУдержаний.УстановитьПараметр("ФизическоеЛицо",   Объект.Сотрудник.ФизическоеЛицо);
//    Для ц=1 по Месяцев+1 Цикл
//       
//    ТекДата = ДобавитьМесяц(НачПериода, Ц-1); 
//    Начало = НачалоМесяца(ТекДата);
//    Конец = КонецМесяца(ТекДата);
//    Запрос.УстановитьПараметр("НачалоНП", Начало);
//    Запрос.УстановитьПараметр("КонецНП", Конец);
//       
//    Выборка = Запрос.Выполнить().Выбрать();
//    СуммаУдерж = 0;
//    Пока Выборка.Следующий() Цикл
//    СуммаУдерж = СуммаУдер + Выборка.Результат;
//    КонецЦикла;
//   
//    НоваяСтрока          = ТаблицаНачислений.Добавить();
//    НоваяСтрока.Период       = ТекДата;
//    НоваяСтрока.Удержания      = СуммаУдерж;
//    КонецЦикла;


//ЗапросНачисленИтого = Новый Запрос();
//ЗапросНачисленИтого.Текст =





//   ЗапросНачисленИтого.УстановитьПараметр("Сотрудник", Объект.Сотрудник.ФизическоеЛицо);
//   ЗапросНачисленИтого.УстановитьПараметр("ДатаНач", Началомесяца(ДатаНачала));
//   ЗапросНачисленИтого.УстановитьПараметр("ДатаКон", Конецмесяца(ДатаОкончания));
//   ЗапросНачисленИтого.УстановитьПараметр("Организация",   Объект.Организация);

//   Выборка = ЗапросНачисленИтого.Выполнить().Выбрать();
//   Пока Выборка.Следующий()   Цикл
//      
//      НоваяСтрока   = ТаблицаНачислений.Добавить();
//      НоваяСтрока.Период    = Выборка.ПериодРегистрации;
//      НоваяСтрока.НачисленИтого   = Выборка.НачисленДоход;
//КонецЦикла;


    ТаблицаНачислений.Свернуть("Период", "СуммаДохода, НДФЛ, Удержаний, НачисленДоход");
   ТаблицаНачислений.Сортировать("Период");
   
   Возврат ТаблицаНачислений;
   
КонецФункции

&НаКлиенте
Процедура СформироватьСправку(Команда)
   
   ТабличныйДокумент = СформироватьСправкуНаСервере();
   
КонецПроцедуры

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
   
   Объект.ДатаДокумента = ТекущаяДатаСеанса();
   
КонецПроцедуры

&НаСервере
Процедура ПриЗагрузкеДанныхИзНастроекНаСервере(Настройки)
   
   а = 1;
   
КонецПроцедуры



Теги:

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

Рейтинг@Mail.ru

Поиск