Другое · 10 мин
Как в 1С сделать список сотрудников с возрастом
Как вывести в 1С:ЗУП список сотрудников с возрастом: отчёт «Штатные сотрудники», универсальный отчёт, настройка вычисляемого поля «Возраст» и проверка результата.
Задача получить список сотрудников с указанием возраста возникает регулярно: для юбилейных поздравлений, кадровой отчётности, анализа возрастной структуры персонала или подготовки данных для руководства. В 1С:ЗУП и 1С:Бухгалтерии возраст не хранится как отдельный реквизит — он вычисляется из даты рождения, которая есть в карточке физического лица. Поэтому список формируется отчётом, а не просмотром справочника.
Есть несколько рабочих способов: типовой отчёт «Штатные сотрудники» с добавлением поля «Возраст», универсальный отчёт по физическим лицам, консоль отчётов с произвольным запросом или СКД-отчёт собственной разработки. Выбор зависит от вашей конфигурации, прав доступа и того, нужен ли список разово или на постоянной основе.
Ниже разобраны все варианты с пошаговыми действиями, настройкой вычисляемого поля и контролем корректности расчёта возраста.
Где в 1С хранится дата рождения и почему возраст нужно вычислять
Дата рождения сотрудника указывается в карточке физического лица: раздел «Кадры» → «Сотрудники» → откройте сотрудника → поле «Дата рождения» в шапке или по ссылке «Личные данные». Это единственный источник для расчёта возраста — отдельного реквизита «Возраст» в конфигурациях 1С нет, потому что хранимое значение устаревало бы каждый день.
Из этого следует главное правило: любой список с возрастом — это отчёт с вычисляемым полем. Возраст рассчитывается на дату формирования отчёта как разница в полных годах между датой рождения и текущей датой. Если вам нужен возраст на конкретное число (например, на конец года), дату расчёта нужно задавать в параметрах отчёта или формуле.
Перед построением списка проверьте полноту данных: если у части сотрудников дата рождения не заполнена, в отчёте они получат пустой возраст или ноль. Быстро найти такие карточки можно тем же отчётом с отбором «Дата рождения не заполнена».
Способ 1. Отчёт «Штатные сотрудники» с полем «Возраст»
Самый простой путь в 1С:ЗУП 3.1 — доработать типовой кадровый отчёт через пользовательские настройки, без изменения конфигурации. Откройте «Кадры» → «Кадровые отчёты» → «Штатные сотрудники» (в некоторых релизах — «Сотрудники (списком)» или «Списки работников»).
Нажмите «Настройки» и перейдите в расширенный режим (кнопка «Расширенный» или соответствующий пункт меню «Ещё»). Дальше порядок такой:
- 1Откройте отчёт «Штатные сотрудники» и нажмите «Настройки» → расширенный режим
- 2Перейдите на вкладку «Пользовательские поля» и нажмите «Добавить» → «Новое поле выражение»
- 3Задайте заголовок «Возраст» и формулу: РазностьДат(ДатаРождения, ТекущаяДата(), "Год")
- 4На вкладке «Выбранные поля» добавьте поле «Возраст» в список колонок рядом с ФИО
- 5Нажмите «Закрыть и сформировать» и проверьте результат
Если формула на языке выражений СКД недоступна в вашем релизе, используйте вариант с функцией Год: Год(ТекущаяДата()) - Год(ДатаРождения). Он менее точен (не учитывает, был ли день рождения в этом году), но для статистики часто достаточен.
Готовую настройку сохраните через «Ещё» → «Сохранить вариант отчёта», назвав, например, «Сотрудники с возрастом». Тогда список будет доступен в один клик всем, кому вы откроете доступ к варианту.
Способ 2. Универсальный отчёт по физическим лицам
Если нужны не только штатные, но и уволенные сотрудники, либо вы работаете в 1С:Бухгалтерии, где кадровые отчёты ограничены, подойдёт «Универсальный отчёт» (раздел «Отчёты» или «Администрирование» → «Печатные формы, отчёты и обработки»).
Постройте отчёт по справочнику «Физические лица» с выводом полей «Наименование» (ФИО) и «Дата рождения». Далее два варианта: выгрузить список в Excel и добавить там формулу возраста, либо открыть настройки отчёта и добавить пользовательское поле с той же формулой разности дат, что описана выше.
Универсальный отчёт удобен как «запасной» инструмент, но помните: он показывает всех физлиц без привязки к трудовым отношениям. Чтобы получить именно работающих сотрудников, добавьте отбор или используйте справочник «Сотрудники» с полем «Физическое лицо.Дата рождения» и отбором по признаку оформленности.
Сравнение способов
Подходит для 1С:ЗУП, показывает только работающих, настройка без программирования. Ограничение: нужен доступ к кадровым отчётам.
Работает в любой конфигурации, гибкий отбор. Ограничение: не отличает работающих от уволенных без дополнительных отборов.
Быстро для разовой задачи, возраст считается формулой Excel. Ограничение: данные устаревают, расчёт не в 1С.
Полный контроль над формулой и составом полей. Ограничение: требует навыков разработки или помощи программиста.
Способ 3. Выгрузка в Excel и расчёт возраста формулой
Для разовой задачи (например, список к юбилею) часто быстрее выгрузить данные и посчитать возраст в Excel. Сформируйте любой список сотрудников с датой рождения, сохраните его в Excel через кнопку «Сохранить» или Ctrl+S.
В Excel добавьте столбец с формулой =РАЗНДАТ(B2;СЕГОДНЯ();"Y"), где B2 — ячейка с датой рождения. Функция РАЗНДАТ корректно считает полные года с учётом того, наступил ли день рождения в текущем году. Протяните формулу на весь список и при необходимости отсортируйте по возрасту.
Учтите риск: выгруженный файл с персональными данными (ФИО + дата рождения) подпадает под требования о защите персональных данных. Храните файл в защищённой папке, не пересылайте по открытым каналам и удаляйте после использования, если он больше не нужен.
Способ 4. Свой отчёт на СКД с точным расчётом возраста
Если список нужен регулярно и с особыми требованиями (возраст на заданную дату, группировка по подразделениям, возрастные интервалы), рационально создать внешний отчёт на системе компоновки данных. Это работа для программиста или продвинутого пользователя в режиме конфигуратора.
Запрос отчёта берёт данные из регистра кадровой истории и справочника физических лиц, а возраст вычисляется выражением. Пример выражения для вычисляемого поля на языке запросов:
РАЗНОСТЬДАТ(ФизическиеЛица.ДатаРождения, &ДатаОтчета, ГОД) КАК Возраст
Точный расчёт «с учётом дня рождения» в запросе делается через ВЫБОР: если день и месяц рождения ещё не наступили в текущем году — вычитаем единицу. В СКД это проще реализовать вычисляемым полем на языке 1С в событии «ПриКомпоновкеРезультата» либо формулой языка выражений:
ВЫБОР
КОГДА МЕСЯЦ(&ТекущаяДата) 100 + ДЕНЬ(&ТекущаяДата) >= МЕСЯЦ(ДатаРождения) 100 + ДЕНЬ(ДатаРождения)
ТОГДА ГОД(&ТекущаяДата) - ГОД(ДатаРождения)
ИНАЧЕ ГОД(&ТекущаяДата) - ГОД(ДатаРождения) - 1
КОНЕЦ
Готовый внешний отчёт подключается через «Дополнительные отчеты и обработки» и не требует изменения конфигурации — это безопасно для обновлений.
Проверка результата и типичные ошибки
После формирования списка обязательно сверьте несколько строк вручную: возьмите 2–3 сотрудников, откройте их карточки и посчитайте возраст от даты рождения. Особое внимание — тем, у кого день рождения приходится на текущий месяц: именно там проявляется ошибка «грубой» формулы.
Как проверить результат
Совпадает с расчётом вручную от даты рождения
Завышен на год — формула не учитывает день и месяц
Поле возраста пустое, сотрудников мало или нет
Много пустых значений — не заполнены карточки физлиц
Только работающие сотрудники (если это требовалось)
В списке уволенные или дубликаты физлиц
Возраст посчитан на нужную дату (текущую или заданную)
Возраст «на сегодня», хотя нужен на конец года
Отдельная ситуация — дубли физических лиц. Если при внедрении сотрудников заводили повторно, один человек может попасть в список дважды с разным возрастом или без него. Перед сдачей отчёта проверьте дубли через «Администрирование» → «Обслуживание» → «Поиск и удаление дублей».
Частые вопросы
Можно ли вывести возраст прямо в списке справочника «Сотрудники»?
Нет, список справочника показывает только хранимые реквизиты, а возраст не хранится. Используйте отчёт с вычисляемым полем — это штатный и правильный путь.
Как получить возраст не на сегодня, а на конкретную дату?
В формуле вычисляемого поля замените ТекущаяДата() на параметр, например &ДатаОтчета, и задайте значение параметра в настройках отчёта. В Excel вместо СЕГОДНЯ() укажите ссылку на ячейку с нужной датой.
Почему в отчёте у некоторых сотрудников возраст пустой?
Не заполнена дата рождения в карточке физического лица. Откройте сотрудника, перейдите в личные данные и внесите дату рождения, затем пересформируйте отчёт.
Как сделать список сотрудников по возрастным группам (до 30, 30–50, старше 50)?
В настройках отчёта добавьте ещё одно пользовательское поле с формулой ВЫБОР, которая по значению возраста возвращает название группы, и сгруппируйте отчёт по этому полю. Альтернатива — выгрузить в Excel и использовать сводную таблицу с группировкой.
Нужны ли права администратора для добавления поля «Возраст»?
Нет. Настройка пользовательских полей в типовом отчёте доступна обычному пользователю с правами на кадровые отчёты. Права программиста нужны только для создания собственного внешнего отчёта на СКД.
Работает ли этот способ в 1С:Бухгалтерии?
Да, но набор кадровых отчётов там меньше. Используйте «Универсальный отчёт» по справочнику «Сотрудники» с полем «Физическое лицо.Дата рождения» и пользовательским полем возраста либо выгрузку в Excel.
Что важно запомнить
Возраст в 1С всегда вычисляется из даты рождения, а не хранится. Быстрее всего получить список через отчёт «Штатные сотрудники» с пользовательским полем РазностьДат(ДатаРождения, ТекущаяДата(), "Год"). Для точности используйте формулу с учётом дня и месяца, проверяйте незаполненные даты рождения и соблюдайте режим защиты персональных данных при выгрузках.