gifts2017

Запрос для выбора категорий сотрудников по физ лицу для ЗиУП 2.5

Опубликовал Тимофей Бугаевский (boogie) в раздел Программирование - Практика программирования

Запрос позволяет выбрать физ. лицо, организацию, категории сотрудников и коэффициент, на который нужно умножить значения сумм (например начисленного НДФЛ для физ.лица). Мы используем категории сотрудников для разделения зарплаты по проектам. В результат включаются только сотрудники, работавшие за заданный период как по трудовому договору, так и по договорам ГПХ.

Просто, чтобы не забыть, может кому-то пригодится:

 

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

        ОБЪЕДИНИТЬ
        выбрать Сотрудник
        ИЗ РегистрСведений.РаботникиОрганизаций.СрезПоследних(&КонецПериода) КАК РаботающиеНаКонецПериода
        ГДЕ РаботающиеНаКонецПериода.ПричинаИзмененияСостояния = &Увольнение И  РаботающиеНаКонецПериода.Период МЕЖДУ &НачалоПериода И &КонецПериода

        ОБЪЕДИНИТЬ
        ВЫБРАТЬ Сотрудник
        ИЗ Документ.ДоговорНаВыполнениеРаботСФизЛицом КАК РаботающиеПоДоговорамГПХ
        ГДЕ РаботающиеПоДоговорамГПХ.ДатаНачала <= &КонецПериода И РаботающиеПоДоговорамГПХ.ДатаОкончания >= &НачалоПериода
    ) КАК РаботающиеСотрудники
    ЛЕВОЕ СОЕДИНЕНИЕ
        РегистрСведений.КатегорииОбъектов КАК КатегорииОбъектов
        ПО КатегорииОбъектов.Объект = РаботающиеСотрудники.Сотрудник
    СГРУППИРОВАТЬ ПО
       
РаботающиеСотрудники.Сотрудник
) КАК Работники
ЛЕВОЕ СОЕДИНЕНИЕ
    РегистрСведений.КатегорииОбъектов КАК КатегорииОбъектовРаботники
    ПО КатегорииОбъектовРаботники.Объект = Работники.Сотрудник
упорядочить по Работники.Коэффициент

 

Вариант для отчётов типа Анализ начисленных налогов и взносов, - чтобы попадали доначисленные суммы по уволенным людям, добавлен "взгляд назад" на 3 месяца, а чтобы они не множились, немного усложнён расчёт коэффициента:

 

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

            ОБЪЕДИНИТЬ
            выбрать Сотрудник
            ИЗ РегистрСведений.РаботникиОрганизаций.СрезПоследних(&КонецПериода) КАК РаботающиеНаКонецПериода
            ГДЕ РаботающиеНаКонецПериода.ПричинаИзмененияСостояния = &Увольнение И  РаботающиеНаКонецПериода.Период МЕЖДУ ДобавитьКДате(&НачалоПериода,Месяц,-3) И &КонецПериода

            ОБЪЕДИНИТЬ
            ВЫБРАТЬ Сотрудник
            ИЗ Документ.ДоговорНаВыполнениеРаботСФизЛицом КАК РаботающиеПоДоговорамГПХ
            ГДЕ РаботающиеПоДоговорамГПХ.ДатаНачала <= &КонецПериода И РаботающиеПоДоговорамГПХ.ДатаОкончания >= &НачалоПериода
        ) КАК РаботающиеСотрудники
        ЛЕВОЕ СОЕДИНЕНИЕ
            РегистрСведений.КатегорииОбъектов КАК КатегорииОбъектов
            ПО КатегорииОбъектов.Объект = РаботающиеСотрудники.Сотрудник
        СГРУППИРОВАТЬ ПО
           
РаботающиеСотрудники.Сотрудник
    ) КАК Подгруппа
    СГРУППИРОВАТЬ ПО
       
Подгруппа.Организация,
       
Подгруппа.ФизЛицо
) КАК Работники
ЛЕВОЕ СОЕДИНЕНИЕ
    РегистрСведений.КатегорииОбъектов КАК КатегорииОбъектовРаботники
    ПО КатегорииОбъектовРаботники.Объект = Работники.Сотрудник



См. также

Подписаться Добавить вознаграждение

Комментарии

1. Алексей Константинов (alexk-is) 14.10.10 08:53
Текст запроса в публикации можно раскрасить
2. Артур Аюханов (artbear) 03.11.10 16:40
(0) "Объединить все" побыстрее будет :) Да и временные таблицы лучше юзать вместо нескольких уровней вложенности.

А вообще нафига выкладывать на сайт подобный запрос?
У каждого разработчика подобных запросов целая корзина :)
3. Тимофей Бугаевский (boogie) 03.11.10 17:09
(2) я ж говорю для себя, мне часто бывает надо для кадров.
4. Тимофей Бугаевский (boogie) 03.11.10 17:11
5. Александр Евстафьев (Filys_Fog) 04.05.11 09:02
Незнаю кому как а мне пригодилось. спасибо...
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа