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