Как в 1С:Зарплата и управление персоналом 3.1 добавить подразделения в отчет «Резервы отпусков по сотрудникам»?

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

В типовой конфигурации «1С:Зарплата и управление персоналом 3.1» отчет «Резервы отпусков по сотрудникам» (или «Справка-расчет резервов отпусков») предоставляет подробную информацию о накопленных обязательствах. Однако пользователи часто сталкиваются с проблемой: в данном отчете отсутствует возможность группировки или фильтрации по Подразделениям. Это связано с тем, что данные о резервах хранятся в регистре накопления ОценочныеОбязательстваПоСотрудникам, где измерение «Подразделение» попросту отсутствует.

В этой статье мы подробно разберем, как модифицировать отчет, чтобы получить данные в разрезе структуры предприятия, какие регистры использовать и как правильно настроить систему компоновки данных (СКД), чтобы итоги считались корректно.

Анализ источников данных и структуры регистров

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

Чтобы добавить в отчет Подразделение, нам необходимо обратиться к другому источнику — регистру сведений КадроваяИсторияСотрудников (или его интервальному аналогу). Сложность заключается в том, что сотрудник может перемещаться между подразделениями в течение периода. Поэтому простое соединение «Сотрудник — Подразделение» без учета даты может привести к искажению данных.

Способ 1. Сохранение типового отчета как внешнего

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

  1. Откройте базу в режиме Конфигуратор.
  2. Найдите в дереве метаданных нужный отчет. В зависимости от версии это может быть РезервыОтпусковПоСотрудникам или СправкаРасчетРезервыОтпусков.
  3. Нажмите на него правой кнопкой мыши и выберите пункт «Сохранить как внешний отчет».
  4. Теперь этот файл можно открывать через «Файл — Открыть» или подключить в справочник «Дополнительные отчеты и обработки».

Важно: Типовые отчеты в ЗУП 3.1 активно используют механизмы Библиотеки стандартных подсистем (БСП). При сохранении как внешний, отчет может потерять связь с общими модулями конфигурации, которые динамически достраивают запрос. Если при запуске внешнего отчета возникают ошибки, логику придется переносить внутрь схемы компоновки данных (СКД) вручную.

Способ 2. Модификация запроса в СКД

Разберем, как изменить текст запроса, чтобы «прикрутить» подразделение к данным о резервах. Нам необходимо выполнить левое соединение основной таблицы резервов с кадровыми данными. Рассмотрим примерный алгоритм изменения запроса:

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


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

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

Способ 3. Использование программных механизмов ЗУП

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

Рассмотрим, как профессиональные разработчики рекомендуют получать подразделение. Вместо прямого обращения к регистрам, можно использовать временную таблицу ВТКадроваяИсторияСотрудников. Это гарантирует, что временные переводы и изменения подразделений в течение месяца будут учтены корректно.

Настройка итогов и ресурсов в СКД

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

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

Если после добавления группировки суммы «двоятся» или исчезают, проверьте параметры соединения в запросе. Обычно это происходит, если на одну дату по сотруднику в кадровой истории найдено более одной записи (например, изменение должности и подразделения в один день).

Практические советы при работе с резервами

Проанализируем важный методологический нюанс. В ЗУП 3.1 учет резервов ведется по сотруднику в целом в рамках организации. Если сотрудник в середине года перешел из «Отдела продаж» в «Администрацию», накопленный резерв в регистре не переносится автоматически между подразделениями (так как там нет такого измерения).

Поэтому при формировании отчета за период (с оборотами) вы можете увидеть странную картину: списание резерва может произойти в новом подразделении, хотя накоплен он был в старом. Наиболее достоверным вариантом отчета в разрезе подразделений является отчет на точку времени (Остатки), который показывает, в каком подразделении числится сотрудник «сейчас» и какая сумма резерва за ним закреплена.

Если же требуется строгий учет затрат по подразделениям, рекомендуется обратить внимание на документ «Начисление оценочных обязательств по отпускам». На закладке «Расчет обязательств» подразделения заполняются в момент расчета документа. Это может служить альтернативным источником данных для построения аналитики.

Таким образом, мы разобрали основные пути модификации отчета: от простого изменения настроек СКД во внешнем отчете до использования сложных запросов к кадровой истории. Выбор метода зависит от ваших требований к точности данных при кадровых переводах.

← На главную