Отчеты по датам рождения сотрудников в 1С:Предприятие — одна из самых востребованных задач в кадровом учете. Без такого инструмента сложно планировать поздравления, контролировать возрастные ограничения для должностей или анализировать демографическую структуру коллектива. Однако стандартные конфигурации (например, 1С:Зарплата и Управление Персоналом 3.1 или 1С:Бухгалтерия 8.3) не всегда содержат готовые отчеты с нужной детализацией.

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

Для начинающих пользователей мы подготовили пошаговые инструкции с картинками, а для опытных — примеры оптимизированных запросов с группировкой по месяцам и вычислением возраста. Все методы протестированы на актуальных релизах платформы 1С:Предприятие 8.3.22+ и конфигурациях ЗУП 3.1.20+, Бухгалтерия 3.0.120+.

📊 Как часто вам нужны отчеты по датам рождения в 1С?
Ежемесячно
Раз в квартал
Только перед праздниками
По запросу руководства
Никогда не использовал

1. Быстрый отчет через стандартные инструменты (без программирования)

Если вам срочно нужен список сотрудников с датами рождения, а времени на настройку нет — воспользуйтесь универсальным отчетом Сотрудники организации. Он есть в большинстве типовых конфигураций (ЗУП, Бухгалтерия, Управление торговлей).

Чтобы открыть его:

  1. Перейдите в раздел Кадры → Сотрудники (или Справочники → Физические лица в Бухгалтерии).
  2. Нажмите кнопку Отчеты (обычно в верхней панели) и выберите Сотрудники организации.
  3. В настройках отчета добавьте поле Дата рождения через кнопку Настройки → Добавить поле.

Этот способ подходит для одноразового экспорта данных, но имеет ограничения:

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

Чтобы исключить уволенных сотрудников, в настройках отчета добавьте фильтр по полю Дата увольнения с условием Не заполнено или Больше текущей даты.

2. Настройка отчета через Систему Компоновки Данных (СКД)

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

  • 📅 Группировать сотрудников по месяцам рождения.
  • 🎂 Добавлять вычисляемые поля (например, "Дней до дня рождения").
  • 📊 Строить диаграммы распределения по возрасту.

Пошаговая инструкция:

  1. Откройте Все функции → Отчеты → Создать отчет (или используйте базовый отчет Сотрудники как основу).
  2. В конструкторе СКД перейдите на вкладку Настройки → Структура и добавьте поля:
    ФизическоеЛицо.ДатаРождения
    

    ФизическоеЛицо.ФИО

    Подразделение.Наименование

    Должность.Наименование

  3. На вкладке Группировки создайте группировку по месяцу рождения. Для этого:
    • Добавьте новую группировку.
    • В поле Выражение введите: Формат(ФизическоеЛицо.ДатаРождения, "ММММ") (выведет название месяца).
    • Отсортируйте по месяцам в хронологическом порядке.
  • Добавьте вычисляемое поле "Возраст" с формулой:
    Цел(Год(ТекущаяДата()) - Год(ФизическоеЛицо.ДатаРождения) -
    

    Если(Месяц(ТекущаяДата()) < Месяц(ФизическоеЛицо.ДатаРождения) Или

    (Месяц(ТекущаяДата()) = Месяц(ФизическоеЛицо.ДатаРождения) И

    День(ТекущаяДата()) < День(ФизическоеЛицо.ДатаРождения)),

    1,

    0))

  • Готовый отчет можно сохранить как внешний файл (.erf) и загружать в другие базы. Пример результата:

    МесяцФИОДата рожденияВозрастПодразделение
    ЯнварьИванов И.И.15.01.198539Отдел продаж
    ФевральПетрова А.С.03.02.199034Бухгалтерия
    МартСидоров К.Л.22.03.197846Склад
    АпрельАлексеева М.Д.11.04.199529Маркетинг

    Добавлены все необходимые поля (ФИО, дата рождения, подразделение)

    Настроена группировка по месяцам или возрастным категориям

    Установлен фильтр по актуальным сотрудникам (исключены уволенные)

    Проверены вычисляемые поля (возраст, дни до ДР)

    Сохранен внешний файл (.erf) для резервной копии-->

    3. Отчет с расчетом дней до ближайшего дня рождения

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

    Пример кода для вычисляемого поля "Дней до ДР":

    Если ФизическоеЛицо.ДатаРождения = '00010101' Тогда
    

    0

    Иначе

    ДатаНачалаГода = НачалоГода(ТекущаяДата());

    ДатаДРВЭтомГоду = ДатаНачалаГода +

    ДеньГода(ФизическоеЛицо.ДатаРождения) - 1;

    Если ДатаДРВЭтомГоду < ТекущаяДата() Тогда

    (ДатаНачалаГода + Год(ТекущаяДата()) + 1) -

    ТекущаяДата() +

    ДеньГода(ФизическоеЛицо.ДатаРождения) - 1

    Иначе

    ДатаДРВЭтомГоду - ТекущаяДата()

    КонецЕсли;

    КонецЕсли;

    Этот алгоритм учитывает:

    • 🔄 Перенос даты на следующий год, если день рождения уже прошел в текущем году.
    • ❌ Исключение сотрудников без указанной даты рождения (поле заполнено 00010101).
    • 📅 Точный расчет с учетом високосных лет.
    Почему в 1С даты рождения иногда отображаются как 01.01.0001?

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

    Внимание! Если в вашей базе даты рождения хранятся в справочнике Физические лица, а не в кадровых данных, запрос нужно модифицировать:

    ВЫБРАТЬ
    

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

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

    // остальные поля

    ИЗ

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

    4. Отчет по возрастным категориям (18-30, 31-45, 46+)

    Для HR-аналитики часто требуется сегментация сотрудников по возрасту. В 1С:ЗУП это можно сделать через СКД или запросом с условием ВЫБОР КОГДА.

    Пример запроса для группировки по возрастным категориям:

    ВЫБРАТЬ
    

    ФизическоеЛицо.ФИО,

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

    ВЫБОР

    КОГДА Цел(Год(ТекущаяДата()) - Год(ФизическоеЛицо.ДатаРождения) -

    Если(Месяц(ТекущаяДата()) < Месяц(ФизическоеЛицо.ДатаРождения) ИЛИ

    (Месяц(ТекущаяДата()) = Месяц(ФизическоеЛицо.ДатаРождения) И

    День(ТекущаяДата()) < День(ФизическоеЛицо.ДатаРождения)),

    1,

    0)) < 18 ТОГДА "До 18"

    КОГДА Цел(...) >= 18 И Цел(...) <= 30 ТОГДА "18-30"

    КОГДА Цел(...) >= 31 И Цел(...) <= 45 ТОГДА "31-45"

    ИНАЧЕ "46+"

    КОНЕЦ КАК ВозрастнаяКатегория,

    Подразделение.Наименование КАК Подразделение

    ИЗ

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

    ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ФизическиеЛица КАК ФизическоеЛицо

    ПО Сотрудники.ФизическоеЛицо = ФизическоеЛицо.Ссылка

    ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ПодразделенияОрганизаций КАК Подразделение

    ПО Сотрудники.Подразделение = Подразделение.Ссылка

    ГДЕ

    Сотрудники.ДатаУвольнения ЕСТЬ NULL

    Для визуализации результатов в СКД:

    1. Добавьте поле ВозрастнаяКатегория в структуру отчета.
    2. Настройте группировку по этому полю.
    3. Включите опцию Диаграмма и выберите тип Гистограмма для наглядного сравнения возрастных групп.
    💡

    Группировка по возрастным категориям помогает выявить дисбаланс в коллективе. Например, если в отделе 80% сотрудников старше 45 лет, это может сигнализировать о рисках кадрового голода в будущем.

    5. Автоматическое оповещение о днях рождения (рассылка)

    Чтобы не проверять отчет вручную, настройте автоматическую рассылку уведомлений о предстоящих днях рождения. Для этого:

    1. Создайте регламентное задание в :
      • Перейдите в Администрирование → Поддержка и обслуживание → Регламентные задания.
      • Создайте новое задание с типом Выполнение кода.
      • Установите расписание (например, каждое утро в 9:00).
  • Вставьте код для поиска сотрудников с днем рождения в ближайшие 7 дней:
    Запрос = Новый Запрос;
    

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

    "ВЫБРАТЬ

    | ФизическоеЛицо.ФИО КАК ФИО,

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

    | ФизическоеЛицо.Email КАК Email

    |ИЗ

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

    | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ФизическиеЛица КАК ФизическоеЛицо

    | ПО Сотрудники.ФизическоеЛицо = ФизическоеЛицо.Ссылка

    |ГДЕ

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

    | И (ДеньГода(ФизическоеЛицо.ДатаРождения) - ДеньГода(ТекущаяДата())) МЕЖДУ 0 И 7";

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

    Выборка = Результат.Выбрать();

    Пока Выборка.Следующий() Цикл

    ТекстПисьма = "Уважаемые коллеги! " + Выборка.ФИО + " отмечает день рождения " +

    Формат(Выборка.ДатаРождения, "ДФ='d MMMM'") + ".";

    // Отправка письма (пример для почты через SMTP)

    ПочтовыйПрофиль = ПолучаемПрофильПочты(); // Ваша функция получения профиля

    ОтправкаПисьма(ПочтовыйПрофиль, "admin@company.ru", "Предстоящий день рождения",

    ТекстПисьма, "", "", Истина);

    КонецЦикла;

  • Внимание! Для работы рассылки необходимо:

    • 📧 Настроить почтовый профиль в (Администрирование → Организации и настройки → Почтовые профили).
    • 🔒 Предоставить права на отправку писем пользователю, под которым выполняется регламентное задание.
    • 📅 Учесть, что в выходные дни уведомления могут отправляться с задержкой.
    💡

    Чтобы тестировать рассылку без спама коллегам, замените в коде адреса получателей на свой email или добавьте условие И ФизическоеЛицо.ФИО = "Тестовый Сотрудник".

    6. Типичные ошибки и их решения

    При создании отчетов по датам рождения пользователи часто сталкиваются с следующими проблемами:

    ОшибкаПричинаРешение
    В отчете отсутствуют даты рождения Поле не заполнено в справочнике Физические лица Проверьте заполненность поля ДатаРождения для каждого сотрудника. Используйте запрос:
    ВЫБРАТЬ ФИО ИЗ ФизическиеЛица ГДЕ ДатаРождения = '00010101'
    Некорректный расчет возраста Не учтен текущий месяц/день при вычитании лет Используйте формулу с проверкой месяца и дня (см. раздел 3)
    Отчет долго формируется Слишком много полей или нет индексов на даты Ограничьте выборку только необходимыми полями и добавьте индекс на ДатаРождения в конфигураторе
    Дублируются записи Неправильные соединения таблиц в запросе Используйте РАЗЛИЧНЫЕ или проверьте условия соединений (ЛЕВОЕ СОЕДИНЕНИЕ)

    Если отчет выдает ошибку Поле не найдено: "ДатаРождения", проверьте:

    • 🔍 Правильность имени поля в запросе (в некоторых конфигурациях оно может называться DateOfBirth).
    • 📝 Версию конфигурации — в старых релизах 1С:ЗУП 2.5 структура справочников отличается.
    • 🛠️ Наличие прав у пользователя на чтение данных из справочника ФизическиеЛица.
    Как узнать точную структуру таблиц в вашей конфигурации?

    Откройте конфигуратор (Файл → Конфигуратор), перейдите в Объекты метаданных → Справочники → ФизическиеЛица и посмотрите список реквизитов. Здесь же можно увидеть синонимы полей (например, ДатаРождения может иметь синоним BirthDate).

    7. Экспорт отчета в Excel и интеграция с Outlook

    Готовый отчет по датам рождения можно экспортировать в Excel для дальнейшей обработки или интегрировать с Microsoft Outlook для автоматического создания напоминаний.

    Экспорт в Excel:

    1. Сформируйте отчет в .
    2. Нажмите кнопку Еще → Сохранить как... и выберите формат Excel (.xlsx).
    3. В Excel можно добавить дополнительные столбцы (например, "Подарок" или "Статус поздравления").

    Импорт в Outlook:

    • 📅 Откройте экспортированный файл в Excel.
    • 🔄 Преобразуйте данные в таблицу (Вставка → Таблица).
    • 📤 В Outlook перейдите в Файл → Открыть и экспортировать → Импорт/экспорт → Импорт из другой программы и выберите файл Excel.
    • 🎉 Настройте создание ежегодных событий в календаре на основе дат рождения.

    Важно: При экспорте дат в Excel формат ячеек должен быть "Дата" (а не "Общий" или "Текст"), иначе сортировка и расчеты будут некорректными.

    FAQ: Частые вопросы по отчетам о днях рождения в 1С

    Как сделать отчет только по текущему месяцу?

    Добавьте в запрос условие фильтрации по месяцу:

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

    В СКД настройте отбор по полю ДатаРождения с условием "Месяц равен текущему".

    Можно ли в отчете показать знаки зодиака?

    Да, добавьте вычисляемое поле с функцией:

    Функция ЗнакЗодиака(ДатаРождения)
    

    Месяц = Месяц(ДатаРождения);

    День = День(ДатаРождения);

    Если (Месяц = 1 И День >= 20) Или (Месяц = 2 И День <= 18) Тогда Возврат "Водолей";

    Если (Месяц = 2 И День >= 19) Или (Месяц = 3 И День <= 20) Тогда Возврат "Рыбы";

    // ... остальные знаки

    КонецФункции;

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

    Почему в отчете не показываются уволенные сотрудники?

    Скорее всего, в запросе или настройках СКД установлен фильтр ДатаУвольнения ЕСТЬ NULL. Чтобы включить уволенных, удалите это условие или замените на:

    ГДЕ Сотрудники.ДатаУвольнения ЕСТЬ NULL ИЛИ Сотрудники.ДатаУвольнения > ТекущаяДата()

    Это покажет и действующих сотрудников, и тех, кто уволен менее года назад.

    Как автоматически обновлять отчет каждый день?

    Настройте регламентное задание (см. раздел 5) с расписанием "Ежедневно". В качестве действия укажите:

    • 📄 Формирование отчета и сохранение в файл (например, на сетевой диск).
    • 📧 Отправку файла на email ответственному лицу.

    Пример кода для автоматического сохранения отчета:

    Отчет = ПолучаемОтчетПоДР(); // Ваша функция формирования отчета
    

    Макет = Отчет.СохранитьВФайл("C:\Reports\ДниРождения.xlsx", ТипФайлаОтчета.Excel);

    Где в 1С хранится справочник с датами рождения?

    Данные о датах рождения сотрудников хранятся в двух местах:

    1. Справочник.ФизическиеЛица — основное хранилище (поле ДатаРождения).
    2. Справочник.Сотрудники — ссылка на физическое лицо (поле ФизическоеЛицо).

    Чтобы открыть справочник в пользовательском режиме, перейдите в Справочники → Физические лица.