Задача передачи звукового сигнала или текстового оповещения с одного рабочего места на другое в рамках одной информационной базы 1С часто возникает при автоматизации производственных или складских процессов. Рассмотрим, как можно решить эту задачу, используя встроенные возможности платформы и системные компоненты операционной системы.
Если ваши рабочие станции работают под управлением ОС Windows, самым быстрым способом реализовать «голосовое» уведомление является использование объекта SAPI.SpVoice. Этот метод позволяет не просто воспроизвести аудиофайл, а проговорить переданный текст через колонки на удаленном компьютере.
Для реализации этого метода мы будем использовать COMОбъект. Разберем по шагам, как это выглядит в коде:
// Пример кода для воспроизведения голосового сообщения
Процедура ОзвучитьСообщение(ТекстДляОзвучки)
Попытка
oVoice = Новый COMОбъект("SAPI.SpVoice");
oVoice.Rate = 3; // Настройка скорости речи от -10 до 10
oVoice.Speak(ТекстДляОзвучки, 1);
Исключение
ЗаписьЖурналаРегистрации("Озвучка", УровеньЖурналаРегистрации.Ошибка,,, ОписаниеОшибки());
КонецПопытки;
КонецПроцедуры
Важно помнить, что этот код должен выполняться на клиентской стороне, так как именно к клиентской машине подключены звуковые устройства (колонки или наушники). Выполнение COMОбъект на сервере 1С не приведет к результату, так как сервер не имеет доступа к периферийному оборудованию пользователя.
Для того чтобы уведомление дошло до конкретного сотрудника, необходимо внедрить механизм идентификации рабочих мест. Рассмотрим построение такой системы:
ПодключитьОбработчикОжидания(). Это позволит нам периодически (например, раз в 5 секунд) проверять наличие новых записей в регистре для данного компьютера.Разберем, как выглядит логика клиента:
// В модуле управляемой формы
Процедура ПриОткрытии()
ПодключитьОбработчикОжидания("ПроверитьОповещения", 5);
КонецПроцедуры
Процедура ПроверитьОповещения()
// Запрос к регистру сведений по текущему компьютеру
// Если есть записи, вызываем функцию озвучки или воспроизведения звука
// После успешного воспроизведения помечаем запись как прочитанную
КонецПроцедуры
Если ваша версия платформы поддерживает Систему взаимодействия, это наиболее предпочтительный и штатный метод. Она исключает необходимость постоянного опроса базы данных через РегистрСведений. Механизм Системы взаимодействия позволяет отправлять мгновенные сообщения пользователю, которые сопровождаются встроенным звуковым сигналом платформы. Это решение работает кроссплатформенно и не требует написания сложного кода для обработки внешних событий.
Помимо перечисленных, существуют и другие методы привлечения внимания:
Сигнал(): Если вам не нужно передавать осмысленное сообщение, а достаточно лишь привлечь внимание оператора, используйте глобальный метод Сигнал(). Это самый простой способ воспроизвести стандартный звук системного уведомления 1С.ЗапуститьПриложение() можно вызвать системный медиаплеер с указанным файлом. Однако, этот метод требует наличия файла на диске локальной машины, что может усложнить процесс, если звук нужно динамически менять.ПолеHTMLДокумента, вы можете встроить веб-плеер, который будет воспроизводить звук из временного хранилища, что актуально для веб-клиентов и кроссплатформенных решений (Linux).Проанализировав все варианты, мы рекомендуем начинать с Системы взаимодействия как наиболее стабильного и современного способа, а при необходимости специфического синтеза речи — использовать SAPI.SpVoice с обязательным выполнением на стороне клиента.