Как воспроизвести звук в 1с
Здравствуйте, коллеги! Частенько бывает, что нужно оповестить пользователя или обратить его внимание на что-либо, используя звуковой сигнал. В данной публикации описано несколько вариантов активации звука в 1С: от стандартного до не самых тривиальных способов.
1. Стандартный (штатный) вариант использования системы звуковых сигналов
Данная функция не принимает никакие дополнительные параметры, а просто воспроизводит системные звуковые сигналы программ 1С. При этом характер и длительность звука может также зависеть от программно-аппаратного состава ПК и звуковых установок ОС.
Этот способ недоступен на сервере 1С:Предприятие 8 и не используется в модуле внешнего соединения устройств.
2. Код 1C v 8.3
С подключением внешних компонент в коде 1C v 8.3 (с помощью Speech API) можно реализовать голосовое воспроизведение какого-либо текста (функция «Speak», параметр — строка текста). Сама технология поддерживает 26 языков, включая русский, однако для его поддержки необходимо скачивать и устанавливать специальную библиотеку. На сегодняшний день пока только так.
Скрипт = Новый COMОбъект("MSScriptControl.ScriptControl");
|Set oVoice = CreateObject(""SAPI.SpVoice"")
|set oSpFileStream = CreateObject(""SAPI.SpFileStream"")
oVoice = Новый COMObject("SAPI.SpVoice");
oSpFileStream = Новый COMObject("SAPI.SpFileStream");
DynamicWrapper = Новый COMОбъект("DynamicWrapperX");
DynamicWrapper.Register("winmm.dll", "sndPlaySoundA", "i=su");
// Проигрыватель - это ActiveX компонента "Windows Media Player"
3. Поле HTML документа
И еще один способ — при помощи «bgsound» – html-тега в коде. На форме должен быть элемент «Поле HTML документа». Причем этот элемент должен быть именно виден на форме, т.к. звук не воспроизводится, если скрыть его (Видимость=Ложь).
Сама же реализация выглядит следующим образом:
// при помощи html-тега bgsound, на форме должен быть элемент Поле HTML документа
ПолеHTML text-align: justify;">
| window.onl oad = function()
В примере подразумевается, что существует макет с типом двоичные данные, в котором и храниться звуковой файл, а на форме имеется элемент «Поле HTML документа».
Специалист компании «Кодерлайн»
Вас могут заинтересовать следующие статьи:
Информация, получаемая головным мозгом человека от органов чувств, формирует восприятие человеком окружающего мира и самого себя. Однако типовые и общепринятые инструменты используемые при программировании в 1С, ограничивают пользователя только органами зрения, хотя иногда возникает необходимость, в некоторых случаях, использовать звуковые эффекты. В этом случае прграммирование "в лоб" на языке 1С не помогает. Так как 1С не предоставляет инструментов для работы с звуком. Так как же получить необходимый функционал, не выходя за рамки языка 1С?
Первый вопрос, который возникает, - а зачем использовать звуковые эффекты в учетных системах?
В моем случае такая необходимость возникла, когда я разрабатовал конфигурацию для ресторанного бизнеса.
На кухне был установленн компьютер, на который выводилась информация о закладках сырья в те, или иные блюда. И к нему же был подключен "кухонный" принтер для печати подзаказников. При печати подзаказника, необходимо было привлечь внимание поваров. Так возникла необходимость в звуковом оповещении.
В шуме кухни стандартный писк динамика принтера был не слышен. По этому, задачу воспроизведения звука должна была взять на себя 1С. Так и возникла идея "заставить" 1С во всех режимах работы (толстый, тонкий и веб-клинет) проигрывать звуковые файлы.
Единственным местом, где более-менее внятно можно было расширить функционал 1С, без написания внешних компонент, как мне показалось, было стандартное "Поле HTML документа".
Это поле, кроме функционала, предоставляемого самим 1С, дает возможность использовать функции встроенного браузера (для толсто-тонкого режимов) или браузера среды (для Веб-клиента), через использования языка разметки HTML.
У современного стандарта языка разметки HTML5 имеются широкие возможности для использования звуковых эффектов в браузерных приложениях, а значит он вполне пригоден для использования и в 1С.
Первая проблема, которою необходимо было решить - это хранение фалов музыки(звуков) в 1С. При этом такое хранилище должно быть универсальным, не зависящим от конфигурации.
Для этого были использованы макеты двоичных данных.
В обработке извлекались двоичные данные, которые сразу же помещались в ВременноеХранилище:
Процедура ПриСозданииНаСервер е ( Отказ , СтандартнаяОбработка )
ЭтотОбъект = РеквизитФормыВЗначени е ( "Объект" );
Музыка = ЭтотОбъект . П олучитьМакет ( "музыка" );
АдресВХранилище = ПоместитьВоВременноеХранилищ е ( Музыка , УникальныйИдентификатор );
Далее эти данные должны быть сохранены на локальный жесткий диск. Но здесь выяснилась одна неприятная особенность. Браузер, который использует 1С, для отражения HTML-кода, никаким образом не может загрузить файлы с локального жесткого диска!
Что бы обойти это ограничение, связанное с такими настройками безопасности браузера, на локальной машине был открыт доступ из сети к одной из папок на запись и чтение. И в эту папку и производилась запись файла с музыкой:
//Выгружает файлы по временному сетевому пути
ДвоичныеДанные = ПолучитьИзВременногоХранилищ а ( АдресВХранилище );
ДвоичныеДанные . З аписать ( ПутьКфайлуМузыки );
//Выгружает файлы по временному сетевому пути
ПолучитьФай л ( АдресВХранилище , ПутьКфайлуМузыки ,Ложь );
Разделение на серверный и обычный вариант, связан с тем, что в Веб-клиенте при выполнении команды ПолучитьФай л, будет неизбежно открыт диалог сохранения файла, что связанно, повторюсь, с ограничениями безопасности браузера. А значит, необходимо, заранее побеспокоиться, что бы сетевой путь хранения временных файлов был доступен для чтения и записи со стороны сервера 1С.
Так же, необходимо включить ваш сетевой путь (в моем случае это было: file://Intel ) в надежные узлы браузера IE8 или IE9 на клиентских машинах. Это делается через настройки свойств IE ("Свойства обозревателя" --> "Безопасность" --> "Надежные узлы" --> "Узлы" --> "Добавить").
Далее рассмотрим HTML-тэг, необходимый для воспроизведения музыкальных файлов:
Описание HTML-тэга EMBED:
Элемент используется для загрузки и отображения объектов (например, видеофайлов , флэш-роликов , некоторых звуковых файлов и т.д.), которые исходно браузер не понимает. Как правило, такие объекты требуют подключения к браузеру специального модуля, который называется плагин , или запуска вспомогательной программы.
Спецификация HTML 4.0 рекомендует использовать тег для загрузки внешних данных вместо тега < embed >. Однако некоторые браузеры не отображают таким образом нужную информацию, поэтому наилучшим вариантом будет поместить внутрь контейнера .
Вид внедренного объекта зависит от установленных в браузере плагинов , типа загружаемого файла, а также от атрибутов тега .
Синтаксис
Атрибуты
align Определяет как объект будет выравниваться на странице и способ его обтекания текстом.
hidden У казывает, скрыть объект на странице или нет.
hspace Горизонтальный отступ от объекта до окружающего контента .
pluginspage Адрес страницы в Интернете, откуда можно скачать и установить плагин к браузеру.
vspace Вертикальный отступ от объекта до окружающего контента .
Закрывающий тег
Таким образом, заменяя < ПутьКФайлу >, на действительный сетевой путь, нам удается воспроизводить музыкальные файлы в Поле HTML документа управляемой формы 1С.
Приятно то, что в случае использования Веб-клиента, для воспроизведения музыки совсем не обязательно сохранять файл на диск где бы-то ни было, а достаточно заменить в < ПутьКФайлу > на АдресВХранилище.
Файл примера, кроме описанного выше, содержит и еще один подход - это использование flash -проигрывателя для воспроизведения музыки.
Работоспособность обработки проверена в следующих условиях:
Windows 7, IE 9, 1 C версия 8.2.14.519
Частенько бывает, что нужно оповестить или обратить внимание пользователя на оповещение звуком, вот несколько решений:
Стандартный вариант:
Синтаксис: Сигнал()
Описание: Воспроизводит звуковой сигнал. Устройство, воспроизводящее звук, а также характер звукового сигнала зависят от программно-аппаратного состава компьютера и звуковых установок ОС.
Недоступен на сервере 1С:Предприятие. Не используется в модуле внешнего соединения.
С использованием внешних компонент:
Похожие FAQ
Что такое Последовательности Документов? 2
Общее: Механизм последовательности документов предназначен для отслеживания правильной последовательности проведения группы взаимосвязанных документов. Основная идея данного механизма заключается в том, что при своем проведении документ может испо Посмотреть все результаты поиска похожих
Еще в этой же категории
Полезные возможности редактора кода 1С 28
Мне частенько приходится взаимодействовать с 1С-разработчиками, и во время совместной работы над проектами замечаю, что далеко не все из них хорошо знают свой главный инструмент – «Конфигуратор». Причем это не относится к степени крутости девелопера Работа с буфером обмена средствами 1С 19
Копировать из 1С в буфер обмена( без ВК): ЭлементыФормы.Добавить(Тип(" ПолеHTMLДокумента" ), " Поле_HTML_Документа_acb123" , Ложь); Окно = ЭлементыФормы.Поле_HTML_Документа_acb123.Документ.ParentWindow; Окно.ClipboardData.SetData(" Text" , Текст Структура и название таблиц использыемых для хранения данных в БД 1С 8.х 17
Данные, которые определяют логику функционирования системы на базе 1С:Предприятия, относятся к информационной базе. Хранение информационной базы осуществляется в базе данных с виде набора таблиц, для чего 1С:Предприятие 8.1 может использовать одну из Программно получить список активных пользователей 12
Процедура ПолучениеСпискаАктивныхПользователей() ИтогСписокСоединений.Очистить(); СоединенияИнформационнойБазы = ПолучитьСоединенияИнформационнойБазы(); Для Каждого Соединение Из СоединенияИнформационнойБазы Цикл ТЗ=ИтогСпи Как получить ссылку на объект из навигационной ссылки? 7
Процедура ПолучитьСсылкуИзНавигационной(НС) ПерваяТочка = Найти(НС, " e1cib/data/" ); ВтораяТочка = Найти(НС, " ?ref icon-exclamation-sign"> Посмотреть все в категории Полезные, Универсальные Функции
Сегодня попробую рассказать о том, какие методы работы со звуком доступны в 1С.
Штатные средства
На самом деле, штатных средств для работы со звуком, насколько я знаю, в 1С ровно одно — убогая процедура «Сигнал».
Она не принимает никакие параметры и просто издает системный звук.
Штатные методы закончились, а из нештатных есть следующие варианты.
Microsoft Speech API (SAPI)
Разработку Microsoft для синтеза голоса вполне можно использовать для воспроизведения wav-файлов, делается это так:
Кроме этого с помощью Speech API можно реализовать голосовое произнесение какого-либо текста — функция «Speak», параметр — строка текста, сама технология поддерживает 26 языков, включая русский, но, насколько я знаю, для поддержки русского необходимо скачивать и устанавливать специальную библиотеку (возможно, позднее разберусь с этим и напишу статью). Почитать подробнее об функционале Speech API можно на MSDN (на английском).
DynamicWrapperX
DynamicWrapperX — достаточно известная в некоторых кругах библиотека, которая позволяет зарегистрировать и использовать функции какой-либо другой библиотеки. Саму DynamicWrapperX можно скачать на сайте автора.
С помощью DynamicWrapperX можно зарегистрировать «sndPlaySoundA» из библиотеки «winmm.dll» и использовать эту функцию для воспроизведения wav-файлов.
Это может выглядеть так:
В этом примере подразумевается наличие макета «dynwrapx» (тип — двоичные данные). Для успешной регистрации библиотеки (DynamicWrapperX), 1С нужно запустить от имени администратора.
И, наконец, последний на сегодня способ — при помощи html-тега «bgsound». На форме должен быть элемент «Поле HTML документа». Насколько я понял, этот элемент должен именно быть виден на форме, т.к. у меня звук не воспроизводился если я скрывал это элемент (Видимость=Ложь).
Главный плюс этого способа — возможность воспроизвести mp3-файлы (а вот wav-файлы, наоборот нельзя), а в минусы можно записать необходимость присутствия на форме поля HTML документа (если я не ошибаюсь) и зависимость от настроек Internet Explorer-а (в настройках Explorer-а должно быть включено воспроизведение звуков страницы).
Здравствуйте, коллеги! Частенько бывает, что нужно оповестить пользователя или обратить его внимание на что-либо, используя звуковой сигнал. В данной публикации описано несколько вариантов активации звука в 1С: от стандартного до не самых тривиальных способов.
1. Стандартный (штатный) вариант использования системы звуковых сигналов
Данная функция не принимает никакие дополнительные параметры, а просто воспроизводит системные звуковые сигналы программ 1С. При этом характер и длительность звука может также зависеть от программно-аппаратного состава ПК и звуковых установок ОС.
Этот способ недоступен на сервере 1С:Предприятие 8 и не используется в модуле внешнего соединения устройств.
2. Код 1C v 8.3
С подключением внешних компонент в коде 1C v 8.3 (с помощью Speech API) можно реализовать голосовое воспроизведение какого-либо текста (функция «Speak», параметр — строка текста). Сама технология поддерживает 26 языков, включая русский, однако для его поддержки необходимо скачивать и устанавливать специальную библиотеку. На сегодняшний день пока только так.
Скрипт = Новый COMОбъект("MSScriptControl.ScriptControl");
|Set oVoice = CreateObject(""SAPI.SpVoice"")
|set oSpFileStream = CreateObject(""SAPI.SpFileStream"")
oVoice = Новый COMObject("SAPI.SpVoice");
oSpFileStream = Новый COMObject("SAPI.SpFileStream");
DynamicWrapper = Новый COMОбъект("DynamicWrapperX");
DynamicWrapper.Register("winmm.dll", "sndPlaySoundA", "i=su");
// Проигрыватель - это ActiveX компонента "Windows Media Player"
3. Поле HTML документа
И еще один способ — при помощи «bgsound» – html-тега в коде. На форме должен быть элемент «Поле HTML документа». Причем этот элемент должен быть именно виден на форме, т.к. звук не воспроизводится, если скрыть его (Видимость=Ложь).
Сама же реализация выглядит следующим образом:
// при помощи html-тега bgsound, на форме должен быть элемент Поле HTML документа
ПолеHTML text-align: justify;">
| window.onl oad = function()
В примере подразумевается, что существует макет с типом двоичные данные, в котором и храниться звуковой файл, а на форме имеется элемент «Поле HTML документа».
Специалист компании «Кодерлайн»
Вас могут заинтересовать следующие статьи:
Читайте также: