Всплывающие напоминания 1С изнутри: где хранятся, почему молчат и как написать свои

· 9 мин

Содержание

Напоминания в 1С работают только при открытом клиенте. Это главное, что путают пользователи: окно с напоминанием показывает программа на компьютере сотрудника, а не сервер. Если 1С закрыта, напоминание не придёт ни в 18:00, ни позже — оно всплывёт при следующем входе как просроченное.

В типовых конфигурациях на 8.3 (Бухгалтерия 3.0, ЗУП 3.1, УТ 11, ERP) механизм взят из Библиотеки стандартных подсистем (БСП) и называется «Напоминания пользователя». Его включает администратор, затем каждый сотрудник ставит напоминания себе сам: к документу, контрагенту или просто к времени. Почта и SMS — отдельные механизмы, их подключают дополнительно.

Какие бывают напоминания в 1С и чем они отличаются

Под словом «напоминание» в 1С скрываются разные вещи. Их полезно различать, иначе настройка одного не помогает с другим.

ВидКто создаётГде видноНужен ли открытый клиент
🔔 Пользовательское напоминаниеСам сотрудникВсплывающее окно «Напоминания»Да
📅 Задачи и сроки отчётностиПрограмма по данным учётаСписок задач, календарь на начальной страницеДа, при входе
📋 Текущие делаПрограмма (подсистема БСП)Панель на начальной страницеДа
⚙️ Регламентное заданиеАдминистратор или разработчикЖурнал регистрации, почтаНет (в клиент-серверном варианте)
✉️ Письмо или SMSКод или рассылкаПочтовый ящик, телефонНет

Системные напоминания программа формирует сама: в Бухгалтерии 3.0 это список задач бухгалтера со сроками отчётов и уплаты налогов на Главное → Список задач. Сотрудник их не создаёт, а только отмечает выполненными.

Пользовательские — те, что ставит конкретный человек: «перезвонить поставщику в 15:00», «проверить оплату по счёту в понедельник». Видит их только автор.

Как устроен механизм напоминаний внутри

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

Логика работы такая:

  1. 🖥️ При запуске клиент получает с сервера напоминания текущего пользователя на ближайший период.
  2. ⏱️ Дальше клиент сам раз в минуту сверяет время и, когда срок наступил, открывает окно «Напоминания».
  3. 🔄 Время от времени список обновляется с сервера — так подтягиваются напоминания, созданные в другом сеансе.
  4. ✅ Когда пользователь отключает напоминание, запись удаляется. Периодическое переносится на следующий срок по расписанию.

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

Время срабатывания считается по часам сеанса. Если у пользователя и сервера разные часовые пояса, а в базе не задан часовой пояс сеанса, напоминание сдвигается на разницу поясов.

Способы задать время

В карточке напоминания обычно доступны варианты:

  • 🕐 в конкретную дату и время;
  • ⏳ через интервал от текущего момента (через 10 минут, через час);
  • 📆 относительно даты в самом предмете — например, за день до срока оплаты, указанного в счёте;
  • 🔁 периодически по расписанию (каждый понедельник, первого числа месяца).

Вариант «относительно даты предмета» удобен: если в документе сдвинули срок, напоминание пересчитается.

Настройка напоминаний пользователя: пошагово

Шаг 1. Включить механизм в базе

Это делает администратор один раз. В типовых конфигурациях флажок «Напоминания пользователя» находится в Администрирование → Органайзер. Если в вашем релизе раздела нет, найдите флажок поиском по слову «напоминания» в разделе Администрирование.

После включения в формах документов и справочников появляется команда «Напомнить», а в личных настройках — параметры напоминаний.

Шаг 2. Проверить личные настройки

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

  • показывать ли напоминания вообще;
  • время напоминания по умолчанию для новых записей.

Шаг 3. Создать напоминание к документу

  1. Откройте документ или карточку, о которой нужно напомнить.
  2. В командной панели формы найдите команду «Напомнить» (часто она в меню Ещё).
  3. Выберите вариант времени: через интервал, в указанное время или относительно даты предмета.
  4. Допишите текст — по нему потом проще понять, зачем вы это ставили.
  5. Сохраните. Предмет напоминания станет ссылкой во всплывающем окне.

Шаг 4. Работать с всплывшим окном

Когда срок наступил, открывается окно со списком сработавших напоминаний. Из него можно:

  • 🔗 открыть предмет двойным щелчком;
  • ⏸️ отложить на выбранный интервал;
  • ❌ отключить, если дело сделано.

Окно не закрывает напоминание само по себе. Если просто закрыть окно крестиком, напоминание останется и всплывёт снова.

Почему напоминание не появилось: проверьте по порядку
Выполнено: 0 / 6

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

В БСП есть программный интерфейс подсистемы: общие модули с именами, начинающимися на НапоминанияПользователя. Через них из кода ставят напоминание «в указанное время» или «по расписанию». Точный состав и параметры процедур зависят от версии БСП в вашей конфигурации — смотрите описание программного интерфейса в самих модулях, раздел ПрограммныйИнтерфейс.

Если нужен свой механизм — например, для доработки в расширении, — проще всего собрать его на объектах платформы. Ниже — два рабочих куска.

Всплывающее оповещение на клиенте

Простейшее напоминание без хранения: через 15 минут после открытия формы показать оповещение в правом нижнем углу.

&НаКлиенте
Процедура ПриОткрытии(Отказ)
	// 900 секунд = 15 минут, однократно
	ПодключитьОбработчикОжидания("ПоказатьНапоминание", 900, Истина);
КонецПроцедуры

&НаКлиенте
Процедура ПоказатьНапоминание() Экспорт
	ПоказатьОповещениеПользователя(
		"Напоминание",
		,
		"Проверьте поступление оплаты по счёту",
		БиблиотекаКартинок.Информация);
КонецПроцедуры

Обработчик ожидания живёт, пока открыта форма. Закрыли форму — напоминания не будет. Для долгих сроков такой способ не годится.

Своё хранение и проверка по расписанию

Для напоминаний, которые должны пережить перезапуск, нужен регистр. Пусть в расширении создан регистр сведений НапоминанияОтдела с измерениями Пользователь и ВремяСобытия и ресурсом Текст (строка). Серверная функция возвращает наступившие напоминания текущего пользователя:

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

	Результат = Новый Массив;
	Выборка = Запрос.Выполнить().Выбрать();
	Пока Выборка.Следующий() Цикл
		Результат.Добавить(Формат(Выборка.ВремяСобытия, "ДФ=HH:mm") + " — " + Выборка.Текст);
	КонецЦикла;
	Возврат Результат;
КонецФункции

&НаКлиенте
Процедура ПроверитьНапоминания() Экспорт
	Для Каждого Строка Из НаступившиеНапоминания() Цикл
		ПоказатьОповещениеПользователя("Напоминание", , Строка);
	КонецЦикла;
КонецПроцедуры

Проверку подключают раз в 60 секунд: ПодключитьОбработчикОжидания("ПроверитьНапоминания", 60). После показа запись нужно удалить или сдвинуть время, иначе оповещение будет приходить каждую минуту. Пользователи.ТекущийПользователь() — функция БСП; в конфигурации без БСП берите пользователя из своего справочника.

Не создавайте новые объекты в типовой конфигурации напрямую. Регистр и формы держите в расширении — тогда обновление конфигурации пройдёт без ручного сравнения.

Напоминания по почте и SMS: когда клиент закрыт

Всплывающее окно бесполезно для сотрудника, который сидит не за компьютером. Тогда напоминание отправляют письмом или SMS из регламентного задания на сервере.

Схема такая:

  1. Регламентное задание запускается по расписанию, например каждые 10 минут.
  2. Оно выбирает наступившие напоминания из регистра.
  3. Отправляет письмо через учётную запись почты базы или SMS через подключённого провайдера.
  4. Помечает напоминание отправленным, чтобы не слать повторно.

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

Минимальная отправка письма средствами платформы:

Профиль = Новый ИнтернетПочтовыйПрофиль;
Профиль.АдресСервераSMTP = "smtp.example.ru";
Профиль.ПортSMTP = 465;
Профиль.ИспользоватьSSLSMTP = Истина;
Профиль.ПользовательSMTP = "robot@example.ru";
Профиль.ПарольSMTP = ПарольИзБезопасногоХранилища; // не храните пароль в коде

Письмо = Новый ИнтернетПочтовоеСообщение;
Письмо.Отправитель = "robot@example.ru";
Письмо.Получатели.Добавить("buh@example.ru");
Письмо.Тема = "Напоминание: срок оплаты по счёту";
Письмо.Тексты.Добавить("Сегодня последний день оплаты по счёту № 145.",
	ТипТекстаПочтовогоСообщения.ПростойТекст);

Почта = Новый ИнтернетПочта;
Почта.Подключиться(Профиль);
Почта.Послать(Письмо);
Почта.Отключиться();

В типовой конфигурации лучше вызывать почтовые процедуры БСП: они сами берут настройки учётной записи и пишут ошибки в журнал регистрации.

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

Готовые напоминания в разных конфигурациях

Прежде чем писать код, посмотрите, что уже есть «из коробки». Часто нужное напоминание реализовано.

КонфигурацияЧто напоминаетГде искать
Бухгалтерия 3.0Сроки отчётов и налогов, закрытие месяцаГлавное → Список задач, календарь на начальной странице
ЗУП 3.1Кадровые и расчётные дела по сотрудникамПанель «Текущие дела» на начальной странице
УТ 11, ERPВзаимодействия, задачи, сроки по сделкамРаздел CRM, задачи по бизнес-процессам
Любая на БСПЛичные напоминания к объектамКоманда «Напомнить» в формах

Отдельный сценарий — бизнес-процессы и задачи. Задача с назначенным исполнителем и сроком сама по себе работает как напоминание: она висит в списке задач исполнителя и подсвечивается при просрочке. Для поручений между сотрудниками это удобнее личных напоминаний, потому что видно, кто и когда выполнил.

Нагрузка при большом числе напоминаний

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

Что помогает:

  • 🧹 Чистить отработанные. Отключённые напоминания удаляются, а забытые копятся. Раз в месяц полезно удалять записи старше 30–60 дней.
  • 🎯 Ставить одно периодическое вместо сотни разовых. «Каждый понедельник в 9:00 проверить дебиторку» — одна запись.
  • ⏱️ Не опрашивать сервер каждую секунду. Интервал обработчика ожидания 60 секунд и больше. Запрос к серверу раз в секунду от 50 пользователей — это 3 000 обращений в минуту на пустом месте.
  • 📦 Отправлять пачками. Регламентное задание выбирает все наступившие напоминания одним запросом, а не делает запрос в цикле по пользователям.
  • 🔑 Отбирать по измерениям регистра. Условие по пользователю и времени события использует индекс; отбор по тексту — нет.

Частые ошибки и как их избежать

Диагностика: выберите симптом

Частые вопросы

Видит ли руководитель напоминания сотрудников?
Нет. Пользовательские напоминания личные. Для поручений с контролем используйте задачи бизнес-процессов.
Можно ли поставить напоминание другому пользователю?
Через стандартную команду «Напомнить» — нет, только себе. Программно запись в регистр можно сделать на любого пользователя.
Работают ли напоминания в веб-клиенте?
Да, пока открыта вкладка с базой. Закрыли вкладку — проверка останавливается, как и в тонком клиенте.
Сохранятся ли напоминания после обновления конфигурации?
Да. Они лежат в регистре сведений, обновление данные не удаляет.
Приходят ли напоминания на телефон?
Сами по себе нет. Нужна отправка SMS через провайдера или письма, которое пользователь получает на телефон.