Объявление для всех, кто работает в базе 1С: штатные средства, код и расписание

· 9 мин

Содержание

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

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

Какой способ выбрать для массовой рассылки

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

СпособКогда подходитДоработкаОграничения
💬 Обсуждения (система взаимодействия)Обычные объявления, перепискаНетНужна регистрация базы и доступ к серверу взаимодействия
🔒 Блокировка работы пользователейПредупредить перед обновлениемНетСообщение привязано к блокировке входа
🧩 Внешняя обработкаРазовая рассылка «по кнопке»Обработка .epfНужны права администратора
⏰ Планировщик Windows / регламентное заданиеНапоминания по расписаниюОбработка или расширениеОтдельный пользователь и лицензия на время запуска
🖥 Команда msg WindowsВсе работают на одном терминальном сервереНетНе связано с 1С, видят все сеансы RDP
✉️ Почта, мессенджерНужно достать тех, кто не в базеНастройка учётной записи или ботаНе видно внутри программы
Что вам нужно сделать?

Обсуждения: штатный способ написать всем пользователям 1С

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

Подключение базы

  1. Войдите под пользователем с полными правами.
  2. Откройте Администрирование → Общие настройки.
  3. В группе «Обсуждения» нажмите ссылку подключения и укажите адрес электронной почты администратора.
  4. Введите код подтверждения из письма.

По умолчанию база регистрируется на бесплатном сервере 1С:Диалог (1cdialog.com). Компьютерам пользователей нужен выход в интернет к этому серверу. Если интернета на рабочих местах нет, разворачивают собственный «1С:Сервер взаимодействия» во внутренней сети.

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

Отправка объявления всем

  1. На панели инструментов откройте «Обсуждения» (значок с облачком).
  2. Создайте новое обсуждение, назовите его, например, «Объявления администратора».
  3. Добавьте участников — всех сотрудников базы.
  4. Напишите сообщение и отправьте.

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

Предупреждение пользователей через блокировку базы

Перед обновлением конфигурации или закрытием месяца надо, чтобы все вышли из программы. Для этого в БСП есть блокировка с сообщением.

  1. Откройте Администрирование → Обслуживание.
  2. В группе «Обслуживание» откройте «Блокировка работы пользователей».
  3. Заполните текст сообщения: «В 19:00 обновление программы. Сохраните документы и выйдите из базы».
  4. Укажите время начала и окончания блокировки.
  5. Установите блокировку.

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

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

Что написать в тексте предупреждения

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

  • 🕖 Когда: точное время начала и примерное окончание — «с 19:00 до 20:30».
  • 🛠 Что: «обновление программы», «закрытие месяца », «перезагрузка сервера».
  • ✅ Что сделать: «провести и записать документы, закрыть 1С».

Пример: «С 19:00 до 20:30 обновление 1С. Запишите документы и выйдите из программы до 18:55. Вопросы — Ивану, доб. 214».

Как зайти самому, пока база заблокирована

В форме блокировки можно задать код разрешения. Администратор запускает базу с ключом /UC<код> (например, /UC12345 в строке запуска или в дополнительных параметрах запуска в списке баз) и входит, несмотря на блокировку. Остальные пользователи до окончания блокировки зайти не смогут.

В клиент-серверном варианте форма блокировки попросит пароль администратора кластера, если он задан. Без него платформа не сможет завершить чужие сеансы.

Права и роли для отправки уведомлений

Права зависят от выбранного способа. Ставить «Полные права» всем подряд не нужно.

ДействиеКто может
Подключить базу к обсуждениямПользователь с полными правами
Создать обсуждение и написать в негоЛюбой пользователь, если базу подключили
Установить блокировку работыАдминистратор (роль «Администратор системы» или «Полные права»)
Получить список всех пользователей в кодеНужно право администрирования, иначе ПользователиИнформационнойБазы.ПолучитьПользователей() вернёт ошибку
Получить данные из собственного регистра объявленийРоль с правом чтения этого регистра

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

Для отдельного «редактора объявлений» в своей доработке заведите отдельную роль: запись в регистр объявлений и ничего лишнего. Остальным сотрудникам — только чтение.

Рассылка сообщений кодом: обработка и расширение

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

Вариант 1. Сообщение через систему взаимодействия

Код ниже создаёт групповое обсуждение, добавляет всех пользователей ИБ и пишет в него сообщение. Его можно поместить во внешнюю обработку и запускать из Файл → Открыть (или через раздел дополнительных обработок).

&НаСервере
Процедура ОтправитьВсемНаСервере(ТекстСообщения)

	Если Не СистемаВзаимодействия.ИспользованиеДоступно() Тогда
		ВызватьИсключение "База не подключена к системе взаимодействия";
	КонецЕсли;

	Обсуждение = СистемаВзаимодействия.СоздатьОбсуждение();
	Обсуждение.Заголовок = "Объявления администратора";
	Обсуждение.Групповое = Истина;

	Для Каждого ПользовательИБ Из ПользователиИнформационнойБазы.ПолучитьПользователей() Цикл
		Попытка
			Ид = СистемаВзаимодействия.ПолучитьИдентификаторПользователя(
				ПользовательИБ.УникальныйИдентификатор);
			Обсуждение.Участники.Добавить(Ид);
		Исключение
			// Сотрудник ещё не входил в базу после подключения обсуждений
		КонецПопытки;
	КонецЦикла;

	Обсуждение.Записать();

	Сообщение = СистемаВзаимодействия.СоздатьСообщение(Обсуждение.Идентификатор);
	Сообщение.Текст = Новый ФорматированнаяСтрока(ТекстСообщения);
	Сообщение.Записать();

КонецПроцедуры

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

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

Вариант 2. Свой регистр объявлений и обработчик ожидания

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

  • 🗂 регистр сведений «Объявления»: текст, дата, срок показа;
  • ⏱ в клиентском коде при запуске программы подключается обработчик ожидания, раз в 60–120 секунд;
  • 🔔 обработчик спрашивает у сервера новое объявление и показывает его через ПоказатьОповещениеПользователя.
// Модуль управляемого приложения (в расширении)
Процедура ПроверитьОбъявления() Экспорт
	Текст = ОбъявленияВызовСервера.НовоеОбъявление();
	Если ЗначениеЗаполнено(Текст) Тогда
		ПоказатьОповещениеПользователя("Сообщение администратора", , Текст);
	КонецЕсли;
КонецПроцедуры

// В обработчике начала работы системы:
// ПодключитьОбработчикОжидания("ПроверитьОбъявления", 60);

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

Делайте такую доработку в расширении конфигурации. Тогда типовая конфигурация останется на поддержке и будет обновляться без сравнения-объединения.

Не ставьте интервал опроса меньше 30 секунд: при 100 пользователях это сотни лишних серверных вызовов в минуту.

Отправка по расписанию: Планировщик заданий Windows и регламентные задания

Планировщик Windows

Платформа умеет при запуске открыть внешнюю обработку параметром /Execute, а строку параметров передать ключом /C. На этом строится запуск по расписанию.

"C:\Program Files\1cv8\<версия>\bin\1cv8.exe" ENTERPRISE /S "srv1c\buh" /N "Робот" /P "пароль" /Execute "C:\1c\scripts\Объявление.epf" /C "Сегодня в 19:00 обновление 1С" /DisableStartupMessages

Порядок настройки:

  1. Сохраните строку в файл notify.bat.
  2. В обработке при открытии прочитайте текст из глобального свойства ПараметрЗапуска, вызовите серверную процедуру рассылки и завершите работу: ЗавершитьРаботуСистемы(Ложь).
  3. Откройте «Планировщик заданий» Windows, создайте задачу, на вкладке «Триггеры» задайте расписание, на вкладке «Действия» укажите notify.bat.
  4. Отметьте запуск независимо от входа пользователя в систему.

Пароль в bat-файле лежит открытым текстом. Ограничьте доступ к папке со скриптом. Для файловой базы путь указывают ключом /F "D:\Bases\Buh" вместо /S. Каждый запуск занимает клиентскую лицензию, пока сеанс открыт.

Регламентное задание вместо планировщика

В клиент-серверной базе надёжнее регламентное задание: оно выполняется на сервере 1С по расписанию, без запуска клиента и без пароля в файле. Его добавляют в расширение, указывают процедуру общего модуля с кодом рассылки (вариант 1 или запись в регистр объявлений для варианта 2) и задают расписание.

Включённость и расписание потом меняют в Администрирование → Обслуживание → Регламентные операции → Регламентные и фоновые задания.

Клиент-серверный и файловый режим: что меняется

На сервере 1С нет экрана пользователя. Регламентное задание или фоновое задание не может показать окно — ПоказатьОповещениеПользователя и Предупреждение там не работают. Сервер может только записать сообщение: в систему взаимодействия или в регистр. Показ остаётся за клиентом.

ЧтоКлиент-серверФайловая база
Регламентные заданияВыполняет сервер 1С по расписаниюВыполняются, только пока открыт хотя бы один клиентский сеанс
Блокировка работыМожет запросить пароль администратора кластераПароль кластера не нужен
ОбсужденияРаботают одинаковоРаботают одинаково
Запуск из планировщикаКлюч /S сервер\базаКлюч /F путь_к_каталогу

В клиент-серверном режиме список активных сеансов видно в консоли администрирования серверов 1С или командой rac session list. Из консоли можно завершить сеанс, но это не способ «отправить сообщение»: человек просто вылетит из базы. Параметры команд rac для завершения сеансов смотрите в справке rac help session для вашей версии платформы.

Сообщения вне 1С: msg, почта, мессенджеры

Иногда нужно, чтобы сообщение увидели и те, кто сейчас не в программе.

  • 🖥 Терминальный сервер . Если все работают в 1С через RDP на одном сервере, администратор может отправить сообщение всем сеансам Windows: msg * /time:300 "В 19:00 обновление 1С, выйдите из программы". Окно висит 300 секунд или до нажатия «ОК». Команду выполняют на самом терминальном сервере от имени администратора.
  • ✉️ Почта. В типовых конфигурациях есть учётные записи электронной почты и подсистема рассылки отчётов. Из кода письмо отправляют через объекты ИнтернетПочтовоеСообщение и ИнтернетПочта или через почтовые процедуры БСП. Нужна почта у каждого пользователя в карточке.
  • 🤖 Telegram или корпоративный мессенджер. Обработка отправляет HTTP-запрос к боту (HTTPСоединение и HTTPЗапрос). Токен бота храните в защищённом хранилище, а не в коде.
  • 📱 «1С:Предприятие — Обсуждения» на телефоне. Для зарегистрированной базы есть мобильное приложение: объявления из обсуждений придут и на смартфон.

Для срочных работ комбинируйте: объявление в обсуждениях за день, письмо утром и блокировка с сообщением за 15–20 минут до начала.

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

Можно ли отправить сообщение конкретному пользователю, а не всем?
Да. В «Обсуждениях» откройте личную переписку с сотрудником или упомяните его в групповом обсуждении через @. В коде добавьте в обсуждение только его идентификатор.
Почему пользователь не получил сообщение в обсуждениях?
Чаще всего он не входил в базу после её подключения к системе взаимодействия или с его компьютера нет доступа к серверу взаимодействия. Пусть перезапустит 1С и проверит, открывается ли панель «Обсуждения».
Как сделать, чтобы объявление не пропало через несколько секунд?
Всплывающее оповещение ПоказатьОповещениеПользователя исчезает само, но остаётся в центре оповещений. Для важного текста в своём обработчике ожидания используйте модальное окно ПоказатьПредупреждение: его надо закрыть кнопкой.
Можно ли отправить сообщение пользователям из конфигуратора?
Нет. В конфигураторе для 8.3 такой функции нет. Сообщение отправляют из режима «1С:Предприятие» — через обсуждения, блокировку или свою обработку.
Увидят ли сообщение пользователи веб-клиента?
Да, обсуждения и оповещения работают и в веб-клиенте, и в тонком клиенте. Команда msg Windows до браузерных пользователей не дойдёт.