Как в расчетную ведомость добавить колонку «Должность» в 1С:ЗУП?

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

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

Разберем по шагам, почему возникает эта сложность, как вывести должность отдельной колонкой стандартными настройками отчета и как корректно отобразить должность сотрудника за прошлые периоды с учетом кадровых перемещений.

Причина поведения отчета и архитектурные особенности

Рассмотрим, как устроен вывод данных в отчете и где программа хранит информацию:

  1. Статическое поле справочника: Реквизит ТекущаяДолжностьОрганизации в справочнике СотрудникиОрганизаций хранит только текущее значение должности на момент формирования отчета. Если сотрудник был переведен на другую должность в текущем месяце, а ведомость формируется за прошлый период, обращение к справочнику вернет актуальную на сегодня должность, а не историческую.
  2. Периодический регистр сведений: Вся история кадровых изменений хранится в регистре сведений РаботникиОрганизаций. В типовой схеме компоновки данных (СКД) произвольной расчетной ведомости прямое соединение с историческим срезом регистра не всегда заложено в базовые поля вывода.
  3. Механизм группировки колонок СКД: Чтобы реквизит сотрудника отобразился в отдельном столбце рядом с группировкой по сотруднику, компоновщику требуется указание на создание группы дополнительных полей с размещением в отдельной колонке.

Способ 1. Пользовательская настройка отчета без доработки конфигурации

Выясним, как настроить отображение должности в стандартном режиме отчета. Если нам достаточно видеть актуальную должность сотрудника, выполним следующую последовательность действий:

  1. Открываем отчет «Расчетная ведомость в произвольной форме».
  2. Нажимаем кнопку «Настройка» (или переходим в режим расширенной настройки структуры отчета).
  3. Переходим на вкладку «Дополнительные поля».
  4. Нажимаем кнопку добавления новой группы полей (значок создания группы) и задаем тип размещения — «В отдельной колонке».
  5. Внутрь созданной группы добавляем поле: Сотрудник.ТекущаяДолжностьОрганизации (либо реквизит Сотрудник.Текущая должность).
  6. Нажимаем кнопку «Сформировать».

Важное замечание: При таком способе в ведомость попадет должность, актуальная на текущую дату работы в базе. Если кадровые перемещения в организации происходят редко или отчет формируется строго в конце текущего расчетного месяца, этот способ полностью закрывает задачу без привлечения программиста.

Способ 2. Доработка схемы компоновки данных (СКД) для вывода исторической должности

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

Разберем по шагам доработку запроса в схеме СКД:

  1. Сохраняем отчет как внешний через конфигуратор или выгружаем схему компоновки.
  2. В наборе данных-запросе добавляем левое соединение с виртуальной таблицей среза последних регистра сведений РаботникиОрганизаций:
    
    ЛЕВОЕ СОЕДИНЕНИЕ 
        РегистрСведений.РаботникиОрганизаций.СрезПоследних(&ПериодСреза, ) КАК РаботникиОрганизацийСрезПоследних
    ПО 
        ОсновныеНачисления.Сотрудник = РаботникиОрганизацийСрезПоследних.Сотрудник
        И ОсновныеНачисления.Организация = РаботникиОрганизацийСрезПоследних.Организация
    
  3. В выражении параметра &ПериодСреза на вкладке «Параметры» задаем: КонецПериода(&КонецПериода, "Месяц")
  4. Проанализируем ситуацию с временными кадровыми перемещениями. Если в базе используются временные переводы с указанием даты завершения, в поле выборки должности используем условие:
    
    ВЫБОР 
        КОГДА РаботникиОрганизацийСрезПоследних.ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1) 
             И РаботникиОрганизацийСрезПоследних.ПериодЗавершения <= &КонецПериода 
        ТОГДА РаботникиОрганизацийСрезПоследних.ДолжностьЗавершения 
        ИНАЧЕ РаботникиОрганизацийСрезПоследних.Должность 
    КОНЕЦ КАК ДолжностьНаКонецПериода
    
  5. На вкладке «Настройки» в выбранных полях добавляем полученное поле ДолжностьНаКонецПериода в группировку к сотруднику с типом размещения в отдельной колонке.

Типовые альтернативы

Посмотрим на стандартные отчеты, в которых получение должности на историческую дату уже реализовано разработчиками конфигурации:

  1. Унифицированная форма «Расчетная ведомость (Т-51)»: Алгоритм формирования унифицированной печатной формы Т-51 изначально запрашивает срез кадровых данных на дату окончания расчетного периода.
  2. Отчет «Свод начисленной зарплаты»: Позволяет настраивать группировки и поля с учетом кадровых срезов на расчетный месяц без изменения конфигурации.
← На главную