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