Как получить список сотрудников по договору подряда в запросе 1С:ЗУП 2.5

Программист 1С v8.3 (Обычные формы)
← На главную

Работа с гражданско-правовыми договорами (ГПХ) в конфигурации «Зарплата и Управление Персоналом 2.5» (ЗУП 2.5) имеет свои особенности. В отличие от штатных сотрудников, данные о которых хранятся в кадровых регистрах сведений, информация о «подрядчиках» часто завязана на специфических начислениях или специализированных документах. В этой статье мы подробно разберем, как правильно составить запрос, чтобы получить список работающих по договору подряда в выбранном месяце или тех, чей договор продолжает действовать после указанной даты.

Метод 1. Анализ через регистр плановых начислений

Самый распространенный способ в ЗУП 2.5 — это обращение к регистру сведений ПлановыеНачисленияРаботниковОрганизаций. В этой конфигурации договор подряда обычно регистрируется как плановое начисление с определенным видом расчета. Рассмотрим ситуацию, когда нам нужно найти сотрудников, у которых в выбранном периоде (месяце) действует договор.

Для получения корректных данных нам необходимо объединить результаты из виртуальной таблицы СрезПоследних и физической таблицы регистра, чтобы не упустить изменения, произошедшие внутри самого месяца. Разберем этот запрос по шагам.

Шаг 1. Получение данных на начало периода. Мы используем СрезПоследних на начало выбранного месяца, чтобы увидеть тех, у кого договор уже действовал. При этом важно проверять условие ПериодЗавершения, чтобы отсеять уже закрытые договоры.

Шаг 2. Получение данных о новых договорах внутри месяца. Мы обращаемся к основной таблице регистра, чтобы найти записи, период которых попадает в выбранный интервал.

Проанализируем итоговый код запроса:


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

ОБЪЕДИНИТЬ ВСЕ

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

В данном примере мы используем фильтрацию по полю Сотрудник.ВидДоговора. Это поле в справочнике СотрудникиОрганизаций позволяет быстро идентифицировать тип трудовых отношений. Однако стоит помнить, что в некоторых внедрениях ЗУП 2.5 вид договора может не заполняться, и тогда ориентироваться нужно на ВидРасчетаИзмерение.

Метод 2. Использование документа-источника «Договор на выполнение работ»

Рассмотрим альтернативный, зачастую более надежный подход. Регистр плановых начислений может содержать информацию только о факте выплаты, в то время как юридические сроки прописываются в документе ДоговорНаВыполнениеРаботСФизЛицом. Если нам нужно получить список тех, чей договор продолжает действовать после выбранного месяца, запрос к документам будет эффективнее.

Проанализируем логику такого запроса:

  1. Выбираем данные из шапки документа ДоговорНаВыполнениеРаботСФизЛицом.
  2. Устанавливаем фильтр по организации.
  3. Проверяем условие завершения: ДатаОкончания > КОНЕЦПЕРИОДА(&ВыбранныйМесяц, МЕСЯЦ).

Пример реализации такого условия в блоке ГДЕ:


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

Важный нюанс: Не забудьте, что кроме обычных договоров подряда в ЗУП 2.5 существуют «Договоры авторского заказа». Если ваша цель — собрать всех сотрудников ГПХ, стоит добавить объединение с таблицей документа ДоговорАвторскогоЗаказа.

Метод 3. Фильтрация по виду занятости

Выясним причину, по которой иногда запросы выдают пустой результат или лишних людей. У справочника СотрудникиОрганизаций есть реквизит ВидЗанятости. Для договорников он принимает значение Договор ГПХ. Если ваша задача — просто вывести список активных элементов справочника, которые помечены как «договорники», можно использовать простой запрос к справочнику с проверкой на дату.

Однако помните: наличие записи в справочнике не означает, что договор действует прямо сейчас. Именно поэтому комбинация фильтра по ВидЗанятости и данных из регистра ПлановыеНачисленияРаботниковОрганизаций (как в первом методе) является наиболее точной для ЗУП 2.5.

Подведение итогов

Подводя итог, можно сказать, что выбор метода зависит от ваших целей:

Мы надеемся, что эти примеры помогут вам быстро и качественно построить нужные отчеты в 1С:ЗУП 2.5. Удачной разработки!

← На главную