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