Оповещение клиентских сеансов 1С о событиях, произошедших на сервере — классическая задача, возникающая при необходимости быстрой реакции на изменения данных (например, при поступлении команды с ТСД или обновлении документа). Рассмотрим подробнее доступные инструменты и методы, которые позволяют организовать этот процесс эффективно.
Одним из самых доступных способов является использование РегистрСведений. Суть метода заключается в записи информации о событии в регистр, которую клиент периодически считывает.
ПодключитьОбработчикОжидания, который с заданным интервалом (например, 10–15 секунд) выполняет проверку регистра.GUID или ДатаСобытия).Разберем пример запроса, который клиент отправляет к серверу:
// Запрос к регистру на наличие новых записей
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ Первые 1
| События.Ссылка КАК Событие
|ИЗ РегистрСведений.ОчередьСобытий КАК События
|ГДЕ События.Дата > &ПоследняяПроверка
|УПОРЯДОЧИТЬ ПО События.Дата УБЫВ";
Запрос.УстановитьПараметр("ПоследняяПроверка", ПоследняяДата);
Если задача состоит в отслеживании изменения конкретного справочника или документа, можно использовать метод БлокировкаДанных. Блокировка выступает как «маячок»: если один сеанс захватил блокировку объекта, остальные могут получить информацию об этом. Преимущество в том, что при аварийном завершении сеанса блокировка автоматически снимается платформой, что избавляет нас от проблем с «фантомными» записями в регистрах.
Для задач, требующих реакции быстрее чем через 3 секунды, стандартный опрос может быть избыточным. В таких случаях программисты часто прибегают к использованию внешних компонент (ВК), которые поднимают TCP-сервер на клиентской машине или позволяют подключаться к брокерам сообщений.
Рассмотрим преимущества такого подхода:
Если инфраструктура компании позволяет, стоит рассмотреть СистемаВзаимодействия. Это встроенный в платформу механизм, который предназначен именно для обмена сообщениями между пользователями и сеансами. Хотя он требует настройки или покупки лицензии, он является «родным» решением от фирмы 1С для задач обмена оповещениями, чатов и уведомлений.
Проанализировав ситуацию, выделим несколько советов для выбора метода:
В заключение отметим, что для большинства типовых задач достаточно классического регистра сведений с правильной индексацией. Не стоит усложнять архитектуру внешними сервисами, если задача не требует работы в режиме жесткого реального времени.