Автоматизация · 10 мин
Как в 1С сделать напоминание о днях рождения
Пошаговая настройка напоминаний о днях рождения в 1С:ЗУП и БСП: запрос по дате рождения, регламентное задание, уведомления по почте. Примеры кода и проверка результата.
Напоминание о днях рождения — одна из самых частых мелких доработок в 1С: кадровикам нужно не забыть поздравить сотрудников, руководителям — подготовить подарки, а бухгалтерии — учесть выплаты. В типовых конфигурациях (1С:ЗУП, 1С:Управление нашей фирмой, 1С:Комплексная автоматизация) готового «будильника» по дням рождения обычно нет, поэтому задачу решают тремя путями: встроенными напоминаниями пользователя, отчётом по датам рождения или регламентным заданием с рассылкой.
Выбор способа зависит от того, где хранятся даты рождения (физлица, сотрудники, контрагенты), кто должен получать напоминание и есть ли у вас доступ к конфигуратору. Ниже разобраны все три варианта с конкретными шагами, примером запроса и кода, а также типичные ошибки, из-за которых напоминания «молчат».
Где в 1С хранятся даты рождения
Прежде чем настраивать напоминание, нужно понять, в каком объекте конфигурации лежит дата рождения. В 1С:ЗУП и 1С:ERP дата рождения сотрудника хранится в справочнике «Физические лица» (реквизит ДатаРождения), а справочник «Сотрудники» ссылается на физлицо. В «Управлении нашей фирмой» и «Бухгалтерии предприятия» структура аналогичная: физлицо — отдельный справочник.
Если нужно поздравлять клиентов или контактных лиц, даты рождения обычно находятся в справочнике «Контактные лица» или в дополнительных реквизитах контрагентов. Проверьте это до написания запроса: откройте карточку объекта и убедитесь, что поле заполнено хотя бы у части записей — пустые даты сделают напоминание бесполезным.
Способ 1. Встроенные напоминания пользователя
В конфигурациях на Библиотеке стандартных подсистем (БСП) есть подсистема «Напоминания пользователя»: пользователь может создать личное напоминание с датой, временем и периодичностью. Оно привязано к конкретному пользователю и не требует доработки конфигурации.
Порядок действий: откройте раздел «Администрирование» → «Настройки работы с файлами и напоминаниями» (в разных конфигурациях путь может отличаться) и убедитесь, что напоминания включены. Затем создайте напоминание: «Сервис» → «Мои напоминания» → «Создать», укажите текст, дату и повтор «ежегодно». Минус способа очевиден: напоминание видит только его автор, и создавать отдельное напоминание на каждого сотрудника при штате больше десятка человек непрактично.
Этот вариант подходит руководителю небольшой компании, которому нужно не забыть про 5–10 ключевых дат. Для кадровой службы и регулярной рассылки он не подходит.
Способ 2. Отчёт по ближайшим дням рождения без доработки конфигурации
Самый быстрый рабочий вариант — произвольный отчёт на СКД или через универсальный отчёт, который показывает физлиц с днём рождения в ближайшие N дней. Кадровик открывает его каждое утро и видит актуальный список.
Суть запроса — сравнить день и месяц даты рождения с текущей датой, игнорируя год. В запросе это делается функциями ДЕНЬ() и МЕСЯЦ():
ВЫБРАТЬ
ФизическиеЛица.Ссылка КАК Физлицо,
ФизическиеЛица.ДатаРождения КАК ДатаРождения
ИЗ
Справочник.ФизическиеЛица КАК ФизическиеЛица
ГДЕ
МЕСЯЦ(ФизическиеЛица.ДатаРождения) = МЕСЯЦ(&ТекущаяДата)
И ДЕНЬ(ФизическиеЛица.ДатаРождения) МЕЖДУ ДЕНЬ(&ТекущаяДата) И ДЕНЬ(&ТекущаяДата) + 7
И НЕ ФизическиеЛица.ПометкаУдаления
В ЗУП дополнительно имеет смысл соединить с регистром сведений о текущих сотрудниках, чтобы в список не попадали уволенные. Признак результата: отчёт за сегодня показывает тех же людей, что и ручная проверка по справочнику физлиц.
- 1Откройте консоль запросов или создайте внешний отчёт на СКД
- 2Напишите запрос по справочнику «Физические лица» с отбором по МЕСЯЦ() и ДЕНЬ() даты рождения
- 3Добавьте параметр «ТекущаяДата» и горизонт в днях (например, 7)
- 4Исключите помеченные на удаление и уволенных сотрудников
- 5Сохраните отчёт и проверьте его на дате, где есть хотя бы один именинник
Способ 3. Регламентное задание с автоматической рассылкой
Полноценная автоматизация — регламентное задание, которое раз в день (обычно утром) формирует список именинников и рассылает уведомления. Это уже доработка конфигурации, поэтому потребуется доступ к конфигуратору и возможность включить объекты в поддержку с изменением либо реализовать логику через расширение.
Общая схема: создаётся общий модуль с процедурой, например ОтправитьНапоминанияОДняхРождения(), в ней выполняется запрос из предыдущего раздела, результат обходится циклом, формируется текст письма и отправляется через РаботаСПочтовымиСообщениями (в конфигурациях на БСП) либо создаётся обсуждение в системе взаимодействия. Затем в разделе «Администрирование» → «Обслуживание» → «Регламентные и фоновые задания» создаётся задание с расписанием, например каждый день в 08:30.
Процедура ОтправитьНапоминанияОДняхРождения() Экспорт
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ ФизическиеЛица.Ссылка КАК Физлицо
|ИЗ Справочник.ФизическиеЛица КАК ФизическиеЛица
|ГДЕ МЕСЯЦ(ФизическиеЛица.ДатаРождения) = МЕСЯЦ(&ТекущаяДата)
| И ДЕНЬ(ФизическиеЛица.ДатаРождения) = ДЕНЬ(&ТекущаяДата)
| И НЕ ФизическиеЛица.ПометкаУдаления";
Запрос.УстановитьПараметр("ТекущаяДата", ТекущаяДатаСеанса());
Результат = Запрос.Выполнить().Выбрать();
Пока Результат.Следующий() Цикл
// Формирование и отправка письма по шаблону
КонецЦикла;
КонецПроцедурыДля отправки почты должен быть настроен системный почтовый аккаунт: «Администрирование» → «Органайзер» → «Системная учётная запись электронной почты». Без него задание будет завершаться с ошибкой, и в журнале регистрации появится соответствующая запись.
Напоминания по клиентам и контактным лицам
Если задача — поздравлять клиентов, логика та же, но источник данных другой. В УНФ и ERP даты рождения контактных лиц хранятся в справочнике «Контактные лица» (реквизит ДатаРождения) либо в дополнительных сведениях контрагента. Если дата рождения хранится как дополнительный реквизит, запрос усложняется: нужно соединяться с табличной частью дополнительных реквизитов и отбирать по свойству.
Практическая рекомендация: для клиентов удобнее не рассылка, а список задач менеджеру. Регламентное задание может создавать документ «Событие» или задачу пользователю с типом «Звонок» на каждого именинника — тогда поздравление встроится в привычный процесс работы с CRM-данными.
Сравнение вариантов
Без доработок, но видит только автор; подходит для 5–10 дат
Быстро настроить, но сотрудник должен сам открывать отчёт каждый день
Полная автоматизация, но требует доработки и настроенной почты
Встраивается в работу менеджеров, требует подсистемы CRM или задач
Проверка результата и расписание
После настройки проверьте работу на контрольной дате. Самый простой приём — временно изменить дату рождения тестового физлица на сегодняшнее число, запустить отчёт или задание вручную и убедиться, что запись попала в выборку, а письмо пришло. Затем верните корректную дату.
Для регламентного задания проверьте журнал регистрации: там должны быть записи об успешном выполнении фонового задания без ошибок. Если задание в файловой базе — помните, что оно выполняется, только когда какой-либо пользователь работает в программе; в клиент-серверном варианте задания исполняет сервер 1С независимо от пользователей.
Как проверить результат
Именинники за нужный период присутствуют, уволенные отсутствуют
Пустой список при наличии дат рождения или попадание уволенных
Запись об успешном выполнении регламентного задания
Ошибки отправки почты или «задание не выполнялось»
Письмо пришло на адрес ответственного в заданное время
Письма нет — проверить системную учётную запись почты
Типичные ошибки и ограничения
Чаще всего напоминания «молчат» из-за незаполненных дат рождения, неправильного сравнения дат (сравнение целиком с годом вместо дня и месяца) и ненастроенной почты. Отдельная проблема — переход через конец месяца: условие «день между сегодня и сегодня + 7» на 28-е число не захватит 1–3 число следующего месяца. Для длинных горизонтов корректнее добавлять дни к дате функцией ДОБАВИТЬКДАТЕ и сравнивать пары «месяц-день» списком.
Ещё одно ограничение: в файловых базах регламентные задания выполняются только при работающих сеансах. Если программу закрывают на ночь, утреннее задание на 08:30 может не выполниться — назначайте его на время, когда база гарантированно открыта, или переносите базу в клиент-серверный режим.
FAQ
Можно ли сделать напоминание без доступа к конфигуратору?
Да. Личные напоминания пользователя и отчёт через универсальный отчёт или консоль СКД не требуют изменения конфигурации. Автоматическая рассылка без доработки невозможна, но её частично заменяет сохранённый отчёт, который ответственный открывает каждое утро.
Как учесть дни рождения, выпадающие на выходные?
В запросе в понедельник дополнительно выбирайте именинников за субботу и воскресенье: проверяйте день недели текущей даты и при понедельнике расширяйте диапазон назад на два дня. Либо настройте горизонт «ближайшие 7 дней» вместо «только сегодня».
Работают ли регламентные задания в файловой базе?
Работают, но только пока в базе есть активный сеанс пользователя. Если все вышли из программы, задание не выполнится. Для гарантированного исполнения по расписанию нужен клиент-серверный режим работы.
Как отправлять напоминания не по почте, а внутри 1С?
Если включена система взаимодействия, регламентное задание может создавать сообщение в обсуждении или задачу пользователю через стандартные механизмы БСП. Это удобно, когда сотрудники целый день работают в 1С и не следят за почтой.
Почему в список попадают уволенные сотрудники?
Потому что запрос обращается только к справочнику физлиц без проверки трудовых отношений. Добавьте соединение с регистром сведений о текущих кадровых данных (в ЗУП — «Кадровая история сотрудников» или аналог) и отбор по признаку «не уволен».
Можно ли поздравлять контрагентов, а не сотрудников?
Да, если даты рождения заполнены у контактных лиц или в дополнительных реквизитах контрагентов. Запрос строится по соответствующему справочнику, а результат удобнее оформлять как задачи менеджерам, а не общую рассылку.
Что важно запомнить
Для небольшого числа дат хватит личных напоминаний или отчёта с запросом по дню и месяцу даты рождения. Автоматическая рассылка делается регламентным заданием через расширение конфигурации с настроенной системной почтой. Всегда исключайте уволенных, проверяйте переход через конец месяца и контролируйте выполнение задания по журналу регистрации.