Частенько бывает, что нужно оповестить пользователя или обратить его внимание на что-либо, используя звуковой сигнал. В данной публикации описано несколько вариантов активации звука в 1С: от стандартного до не самых тривиальных способов.
1. Стандартный (штатный) вариант использования системы звуковых сигналов
Синтаксис: Сигнал()
Данная функция не принимает никакие дополнительные параметры, а просто воспроизводит системные звуковые сигналы программ 1С. При этом характер и длительность звука может также зависеть от программно-аппаратного состава ПК и звуковых установок ОС.
Этот способ недоступен на сервере 1С:Предприятие 8 и не используется в модуле внешнего соединения устройств.
2. Код 1C v 8.3
&НаКлиенте
Процедура Команда(Команда)
Сигнал();
КонецПроцедуры
С подключением внешних компонент в коде 1C v 8.3 (с помощью Speech API) можно реализовать голосовое воспроизведение какого-либо текста (функция «Speak», параметр - строка текста). Сама технология поддерживает 26 языков, включая русский, однако для его поддержки необходимо скачивать и устанавливать специальную библиотеку. На сегодняшний день пока только так.
// Способ №1
файл = "C:\1.wav";
Скрипт = Новый COMОбъект("MSScriptControl.ScriptControl");
Скрипт.Language="vbscript";
Скрипт.AddCode("
|Function Main()
|Set oVoice = CreateObject(""SAPI.SpVoice"")
|set oSpFileStream = CreateObject(""SAPI.SpFileStream"")
|oSpFileStream.Open """+файлз+"""
|oVoice.SpeakStream oSpFileStream
|End Function");
Скрипт.Run("Main");
// Способ №2
файлз = "C:\1.wav";
oVoice = Новый COMObject("SAPI.SpVoice");
oSpFileStream = Новый COMObject("SAPI.SpFileStream");
oSpFileStream.Open(файлз);
oVoice.SpeakStream(oSpFileStream);
oSpFileStream.Close();
// Способ №3
файлз = "C:\1.wav";
DynamicWrapper = Новый COMОбъект("DynamicWrapperX");
DynamicWrapper.Register("winmm.dll", "sndPlaySoundA", "i=su");
DynamicWrapper.sndPlaySoundA(файлз, 1);
// Способ №4
// Проигрыватель - это ActiveX компонента "Windows Media Player"
Процедура КнопкаВыполнитьНажатие(Кнопка)
ПроигратьЗвук("D:\Звуки\123.wav");
КонецПроцедуры
Процедура ПроигратьЗвук(Путь)
Попытка
ЭлементыФормы.Проигрыватель.settings.autostart = Истина;
ЭлементыФормы.Проигрыватель.settings.volume = 100;
ЭлементыФормы.Проигрыватель.URL = Путь;
Исключение
КонецПопытки;
КонецПроцедуры
3. Поле HTML документа
И еще один способ - при помощи «bgsound» - html-тега в коде. На форме должен быть элемент «Поле HTML документа». Причем этот элемент должен быть именно виден на форме, т.к. звук не воспроизводится, если скрыть его (Видимость=Ложь).
Сама же реализация выглядит следующим образом:
/ Способ №5
// при помощи html-тега bgsound, на форме должен быть элемент Поле HTML документа
&НаКлиенте
Процедура ВоспроизвестиMP3()
мФайл = ПолучитьАдресФайла();
ПолеHTML = "
|
|
|
|
|
|
| ";
&НаСервере
Функция ПолучитьАдресФайла()
Возврат ПоместитьВоВременноеХранилище(Обработки.ЗвукВ1С.ПолучитьМакет("sound"));
КонецФункции
В примере подразумевается, что существует макет с типом двоичные данные, в котором и храниться звуковой файл, а на форме имеется элемент «Поле HTML документа».
Смотрите также:
Электронный учебник по программированию в 1С Рекомендации по изучению программирования 1С с нуля Игра "Кто хочет стать миллионером?" с вопросами на определенную тематику (язык программирования JavaScript, английские, немецкие, французские, испанские, португальские, нидерландские, итальянские слова, электробезопасность, промышленная безопасность, бокс и т.п.), написанная на 1С Программирование в 1С 8.3 с нуля - краткий самоучитель Комплексная подготовка программистов 1С:Предприятие 8.2 Сайты с уроками программирования и со справочниками Youtube-каналы с уроками программирования Сайты для обучения программированию Лекции и уроки