К статье
Практический материал

Другое · 10 мин

Как в 1С вывести список с датами рождения

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

Задача вывести список сотрудников или контрагентов с датами рождения возникает регулярно: для поздравлений, отчетности в ПФР, проверки совершеннолетия или выгрузки данных кадровиком. В типовых конфигурациях 1С (ЗУП, Бухгалтерия, Управление торговлей) дата рождения хранится в справочнике «Физические лица», а не в справочнике «Сотрудники», поэтому простого отбора в форме списка недостаточно — нужен отчет или запрос.

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

Ниже разобраны все три подхода с пошаговыми действиями, готовым текстом запроса и проверкой результата. Инструкции применимы к конфигурациям на управляемых формах: 1С:ЗУП 3, 1С:Бухгалтерия 3, 1С:УТ 11, 1С:ERP.

Где хранятся даты рождения в типовых конфигурациях

Перед построением отчета важно понять структуру данных. В 1С:ЗУП и других конфигурациях на базе БСП (библиотека стандартных подсистем) дата рождения — это реквизит справочника «Физические лица» с именем ДатаРождения. Справочник «Сотрудники» ссылается на физлицо через реквизит ФизическоеЛицо, поэтому для списка сотрудников потребуется обращение «через точку»: Сотрудники.ФизическоеЛицо.ДатаРождения.

Для контрагентов-физлиц в 1С:Бухгалтерии данные о дате рождения могут храниться иначе — в регистре сведений «Документы физических лиц» или в расширенных данных контрагента, в зависимости от настроек учета. Проверьте, где реально заполнены данные, прежде чем строить отчет.

Частая ситуация: отчет построен правильно, но поле даты рождения пустое. Это означает, что данные просто не внесены в карточки физлиц. Убедитесь, что кадровый учет ведется корректно и даты рождения заполнены хотя бы у части записей.

Способ 1. Универсальный отчет без программирования

Универсальный отчет — штатный инструмент, который позволяет построить таблицу по любому справочнику или регистру без доработок. В 1С:ЗУП 3 он находится в разделе «Отчеты, справки» → «Универсальный отчет». В 1С:Бухгалтерии 3 — в разделе «Руководителю» или «Отчеты» → «Универсальный отчет».

Порядок действий в универсальном отчете
  1. 1
    Откройте «Отчеты» → «Универсальный отчет»
  2. 2
    В поле типа объекта выберите «Справочник», в поле объекта — «Физические лица»
  3. 3
    Нажмите «Настройки» и на закладке «Поля» добавьте «Наименование» (ФИО) и «Дата рождения»
  4. 4
    При необходимости на закладке «Отбор» задайте условие, например «Дата рождения заполнена»
  5. 5
    Нажмите «Сформировать» и проверьте результат
  6. 6
    Сохраните вариант отчета кнопкой «Сохранить настройки», чтобы не настраивать заново

Если нужен список именно сотрудников (а не всех физлиц, включая бывших и сторонних лиц), выберите справочник «Сотрудники» и добавьте поля «Наименование», «Подразделение», а дату рождения вытяните через связанное поле. В настройках полей универсального отчета доступны реквизиты по ссылкам — найдите «Физическое лицо. Дата рождения».

Результат можно вывести в табличный документ и сохранить в Excel через «Файл» → «Сохранить копию» для дальнейшей обработки — сортировки по месяцам, фильтрации юбиляров и т.д.

Способ 2. Отчет на СКД через консоль или расширение

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

Запрос для СКД выглядит так:

ВЫБРАТЬ

Сотрудники.Наименование КАК Сотрудник,

Сотрудники.ФизическоеЛицо.ДатаРождения КАК ДатаРождения,

Сотрудники.ТекущееПодразделение КАК Подразделение

ИЗ

Справочник.Сотрудники КАК Сотрудники

ГДЕ

НЕ Сотрудники.ВАрхиве

УПОРЯДОЧИТЬ ПО

ДатаРождения

Условие НЕ ВАрхиве отсекает уволенных и неиспользуемые записи — в ЗУП 3 архивные сотрудники помечаются именно так. Если в вашей конфигурации этого реквизита нет, замените отбор на актуальность через регистр сведений о кадровых данных.

В настройках СКД добавьте вычисляемое поле «Возраст» через функцию РАЗНОСТЬДАТ(ДатаРождения, &ТекущаяДата, "ГОД") в запросе или через выражение на языке СКД. Это удобно для отчетов по возрастной структуре персонала.

Сравнение способов

Универсальный отчет

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

СКД / внешний отчет

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

Программный запрос

Подходит для обработок, выгрузок в файл и интеграций. Требует прав на выполнение кода и знания языка запросов.

Способ 3. Программный запрос с выводом списка

Разработчику или администратору с доступом к конфигуратору проще всего получить список программно. Пример кода, который выводит список в табличный документ:

Запрос = Новый Запрос;

Запрос.Текст =

"ВЫБРАТЬ

| ФизическиеЛица.Наименование КАК ФИО,

| ФизическиеЛица.ДатаРождения КАК ДатаРождения

|ИЗ

| Справочник.ФизическиеЛица КАК ФизическиеЛица

|ГДЕ

| НЕ ФизическиеЛица.ПометкаУдаления

| И ФизическиеЛица.ДатаРождения <> ДАТАВРЕМЯ(1,1,1)

|УПОРЯДОЧИТЬ ПО

| ФизическиеЛица.ДатаРождения";

Результат = Запрос.Выполнить().Выбрать();

Пока Результат.Следующий() Цикл

Сообщить(Строка(Результат.ФИО) + " — "

+ Формат(Результат.ДатаРождения, "ДЛФ=D"));

КонецЦикла;

Условие ДатаРождения <> ДАТАВРЕМЯ(1,1,1) исключает записи с пустой датой — без него в список попадут физлица с незаполненными данными, и вы получите лишние строки. Пометка удаления исключается отдельным условием, иначе в выборку попадут и удаленные дубли.

Для выгрузки в Excel оберните результат в табличный документ через ТабличныйДокумент.Вывести() и сохраните методом Записать(ИмяФайла, ТипФайлаТабличногоДокумента.XLSX).

Отбор по месяцу или дню рождения

Типовая практическая задача — список именинников текущего месяца для поздравлений. В запросе это решается функцией МЕСЯЦ():

ГДЕ

МЕСЯЦ(ФизическиеЛица.ДатаРождения) = &Месяц

Параметр &Месяц передается числом от 1 до 12. Аналогично работает отбор по дню: ДЕНЬ(ДатаРождения) = &День. Учтите, что при отборе по дате «сегодня» сравнивать нужно именно месяц и день, а не полную дату — год рождения у всех разный.

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

Типичные ошибки
01
Искать дату рождения в справочнике «Сотрудники» напрямую — поле хранится в «Физические лица», поэтому список выходит пустым или без даты
02
Забыть отбор по непомеченным на удаление записям — в список попадают дубли и устаревшие карточки
03
Сравнивать дату рождения с текущей датой целиком вместо отбора по месяцу и дню — именинники не находятся
04
Не проверить заполненность данных — отчет формально работает, но половина строк с пустой датой

Проверка результата и контроль полноты данных

После формирования списка сверьте количество строк с ожидаемой численностью. Если сотрудников в штате 150, а в списке 140 — найдите записи с пустой датой рождения: добавьте в отчет группировку или отсортируйте по полю даты, пустые значения окажутся в начале.

Проверьте формат вывода даты: в табличном документе дата должна отображаться в привычном виде ДД.ММ.ГГГГ. Если вместо даты видны странные числа — при выгрузке в Excel столбец распознан как текст, измените формат ячеек.

Контрольные точки

Как проверить результат

Количество строк в списке
Норма

Совпадает с числом актуальных сотрудников или физлиц

Тревожный признак

Строк заметно меньше или больше — проверьте отборы и архивность

Поле «Дата рождения»
Норма

У всех строк заполнено, формат ДД.ММ.ГГГГ

Тревожный признак

Пустые значения или дата 01.01.0001 — данные не внесены в карточки

Отбор именинников
Норма

В списке только сотрудники с нужным месяцем рождения

Тревожный признак

Попадают лишние — проверьте условие МЕСЯЦ() в запросе

Часто задаваемые вопросы

Почему в универсальном отчете нет поля «Дата рождения» у сотрудников?

Потому что поле хранится в связанном справочнике «Физические лица». В настройках полей отчета раскройте реквизит «Физическое лицо» и выберите вложенное поле «Дата рождения», либо стройте отчет сразу по справочнику физлиц.

Как вывести список сотрудников, у которых день рождения на этой неделе?

Используйте СКД-отчет с отбором по месяцу и дню или обработку с запросом, где вычисляется сочетание МЕСЯЦ() и ДЕНЬ() и сравнивается с диапазоном дат текущей недели. В универсальном отчете такой произвольный интервал не задать.

Можно ли вывести даты рождения контрагентов-физлиц в 1С:Бухгалтерии?

Да, но сначала проверьте, где заполнены данные: в карточке контрагента, в связанном справочнике физлиц или в регистре документов физлиц. Отчет строится по тому объекту, где данные реально внесены.

Как сохранить настройки отчета, чтобы не настраивать каждый раз?

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

Что делать, если даты рождения не заполнены у большинства сотрудников?

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

Можно ли автоматически рассылать список именинников по расписанию?

Да, если отчет создан на СКД: настройте рассылку отчетов в разделе «Администрирование» → «Рассылка отчетов», укажите вариант отчета, расписание и получателей. Отчет будет приходить на почту автоматически.

Итог

Что важно запомнить

Дата рождения хранится в справочнике «Физические лица». Для разового списка используйте универсальный отчет, для регулярных и сложных выборок — СКД или запрос с функциями МЕСЯЦ() и ДЕНЬ(). Проверяйте заполненность данных и отсекайте помеченные на удаление записи.