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

Автоматизация · 10 мин

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

Пошаговая настройка напоминаний о днях рождения в 1С:ЗУП и БСП: запрос по дате рождения, регламентное задание, уведомления по почте. Примеры кода и проверка результата.

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

Выбор способа зависит от того, где хранятся даты рождения (физлица, сотрудники, контрагенты), кто должен получать напоминание и есть ли у вас доступ к конфигуратору. Ниже разобраны все три варианта с конкретными шагами, примером запроса и кода, а также типичные ошибки, из-за которых напоминания «молчат».

Где в 1С хранятся даты рождения

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

Если нужно поздравлять клиентов или контактных лиц, даты рождения обычно находятся в справочнике «Контактные лица» или в дополнительных реквизитах контрагентов. Проверьте это до написания запроса: откройте карточку объекта и убедитесь, что поле заполнено хотя бы у части записей — пустые даты сделают напоминание бесполезным.

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

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

Порядок действий: откройте раздел «Администрирование» → «Настройки работы с файлами и напоминаниями» (в разных конфигурациях путь может отличаться) и убедитесь, что напоминания включены. Затем создайте напоминание: «Сервис» → «Мои напоминания» → «Создать», укажите текст, дату и повтор «ежегодно». Минус способа очевиден: напоминание видит только его автор, и создавать отдельное напоминание на каждого сотрудника при штате больше десятка человек непрактично.

Этот вариант подходит руководителю небольшой компании, которому нужно не забыть про 5–10 ключевых дат. Для кадровой службы и регулярной рассылки он не подходит.

Способ 2. Отчёт по ближайшим дням рождения без доработки конфигурации

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

Суть запроса — сравнить день и месяц даты рождения с текущей датой, игнорируя год. В запросе это делается функциями ДЕНЬ() и МЕСЯЦ():

ВЫБРАТЬ

ФизическиеЛица.Ссылка КАК Физлицо,

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

ИЗ

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

ГДЕ

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

И ДЕНЬ(ФизическиеЛица.ДатаРождения) МЕЖДУ ДЕНЬ(&ТекущаяДата) И ДЕНЬ(&ТекущаяДата) + 7

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

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

Порядок создания отчёта
  1. 1
    Откройте консоль запросов или создайте внешний отчёт на СКД
  2. 2
    Напишите запрос по справочнику «Физические лица» с отбором по МЕСЯЦ() и ДЕНЬ() даты рождения
  3. 3
    Добавьте параметр «ТекущаяДата» и горизонт в днях (например, 7)
  4. 4
    Исключите помеченные на удаление и уволенных сотрудников
  5. 5
    Сохраните отчёт и проверьте его на дате, где есть хотя бы один именинник

Способ 3. Регламентное задание с автоматической рассылкой

Полноценная автоматизация — регламентное задание, которое раз в день (обычно утром) формирует список именинников и рассылает уведомления. Это уже доработка конфигурации, поэтому потребуется доступ к конфигуратору и возможность включить объекты в поддержку с изменением либо реализовать логику через расширение.

Общая схема: создаётся общий модуль с процедурой, например ОтправитьНапоминанияОДняхРождения(), в ней выполняется запрос из предыдущего раздела, результат обходится циклом, формируется текст письма и отправляется через РаботаСПочтовымиСообщениями (в конфигурациях на БСП) либо создаётся обсуждение в системе взаимодействия. Затем в разделе «Администрирование» → «Обслуживание» → «Регламентные и фоновые задания» создаётся задание с расписанием, например каждый день в 08:30.

bsl
Процедура ОтправитьНапоминанияОДняхРождения() Экспорт
	Запрос = Новый Запрос;
	Запрос.Текст =
	"ВЫБРАТЬ ФизическиеЛица.Ссылка КАК Физлицо
	|ИЗ Справочник.ФизическиеЛица КАК ФизическиеЛица
	|ГДЕ МЕСЯЦ(ФизическиеЛица.ДатаРождения) = МЕСЯЦ(&ТекущаяДата)
	| И ДЕНЬ(ФизическиеЛица.ДатаРождения) = ДЕНЬ(&ТекущаяДата)
	| И НЕ ФизическиеЛица.ПометкаУдаления";
	Запрос.УстановитьПараметр("ТекущаяДата", ТекущаяДатаСеанса());
	Результат = Запрос.Выполнить().Выбрать();
	Пока Результат.Следующий() Цикл
		// Формирование и отправка письма по шаблону
	КонецЦикла;
КонецПроцедуры

Для отправки почты должен быть настроен системный почтовый аккаунт: «Администрирование» → «Органайзер» → «Системная учётная запись электронной почты». Без него задание будет завершаться с ошибкой, и в журнале регистрации появится соответствующая запись.

Напоминания по клиентам и контактным лицам

Если задача — поздравлять клиентов, логика та же, но источник данных другой. В УНФ и ERP даты рождения контактных лиц хранятся в справочнике «Контактные лица» (реквизит ДатаРождения) либо в дополнительных сведениях контрагента. Если дата рождения хранится как дополнительный реквизит, запрос усложняется: нужно соединяться с табличной частью дополнительных реквизитов и отбирать по свойству.

Практическая рекомендация: для клиентов удобнее не рассылка, а список задач менеджеру. Регламентное задание может создавать документ «Событие» или задачу пользователю с типом «Звонок» на каждого именинника — тогда поздравление встроится в привычный процесс работы с CRM-данными.

Сравнение вариантов

Личные напоминания пользователя

Без доработок, но видит только автор; подходит для 5–10 дат

Отчёт по ближайшим дням рождения

Быстро настроить, но сотрудник должен сам открывать отчёт каждый день

Регламентное задание с рассылкой

Полная автоматизация, но требует доработки и настроенной почты

Создание задач или событий

Встраивается в работу менеджеров, требует подсистемы CRM или задач

Проверка результата и расписание

После настройки проверьте работу на контрольной дате. Самый простой приём — временно изменить дату рождения тестового физлица на сегодняшнее число, запустить отчёт или задание вручную и убедиться, что запись попала в выборку, а письмо пришло. Затем верните корректную дату.

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

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

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

Выборка отчёта
Норма

Именинники за нужный период присутствуют, уволенные отсутствуют

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

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

Журнал регистрации
Норма

Запись об успешном выполнении регламентного задания

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

Ошибки отправки почты или «задание не выполнялось»

Получение письма
Норма

Письмо пришло на адрес ответственного в заданное время

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

Письма нет — проверить системную учётную запись почты

Типичные ошибки и ограничения

Чаще всего напоминания «молчат» из-за незаполненных дат рождения, неправильного сравнения дат (сравнение целиком с годом вместо дня и месяца) и ненастроенной почты. Отдельная проблема — переход через конец месяца: условие «день между сегодня и сегодня + 7» на 28-е число не захватит 1–3 число следующего месяца. Для длинных горизонтов корректнее добавлять дни к дате функцией ДОБАВИТЬКДАТЕ и сравнивать пары «месяц-день» списком.

Ещё одно ограничение: в файловых базах регламентные задания выполняются только при работающих сеансах. Если программу закрывают на ночь, утреннее задание на 08:30 может не выполниться — назначайте его на время, когда база гарантированно открыта, или переносите базу в клиент-серверный режим.

Типичные ошибки
01
Сравнение даты рождения с текущей датой целиком — совпадение невозможно из-за разных годов, нужно сравнивать день и месяц
02
Забытые уволенные сотрудники — в рассылку попадают бывшие работники
03
Неучтённый переход через конец месяца — именинники первых чисел выпадают из недельного горизонта
04
Ненастроенная системная почта — задание падает с ошибкой, а никто не смотрит журнал регистрации
05
Прямая правка типового модуля вместо расширения — доработка слетает при обновлении

FAQ

Можно ли сделать напоминание без доступа к конфигуратору?

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

Как учесть дни рождения, выпадающие на выходные?

В запросе в понедельник дополнительно выбирайте именинников за субботу и воскресенье: проверяйте день недели текущей даты и при понедельнике расширяйте диапазон назад на два дня. Либо настройте горизонт «ближайшие 7 дней» вместо «только сегодня».

Работают ли регламентные задания в файловой базе?

Работают, но только пока в базе есть активный сеанс пользователя. Если все вышли из программы, задание не выполнится. Для гарантированного исполнения по расписанию нужен клиент-серверный режим работы.

Как отправлять напоминания не по почте, а внутри 1С?

Если включена система взаимодействия, регламентное задание может создавать сообщение в обсуждении или задачу пользователю через стандартные механизмы БСП. Это удобно, когда сотрудники целый день работают в 1С и не следят за почтой.

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

Потому что запрос обращается только к справочнику физлиц без проверки трудовых отношений. Добавьте соединение с регистром сведений о текущих кадровых данных (в ЗУП — «Кадровая история сотрудников» или аналог) и отбор по признаку «не уволен».

Можно ли поздравлять контрагентов, а не сотрудников?

Да, если даты рождения заполнены у контактных лиц или в дополнительных реквизитах контрагентов. Запрос строится по соответствующему справочнику, а результат удобнее оформлять как задачи менеджерам, а не общую рассылку.

Итог

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

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