Асинхронное воспроизведение звука в 1С

Программирование - Практика программирования

Достаточно простой пример как в 1С:Предприятие запустить воспроизведение звука и не ждать его окончания

Идея метода

Идея заключается в том, чтобы запустить приложение SndRec32 с ключами  -play -embedding -close методом ЗапуститьПриложение() с параметром ДожидатьсяОкончанияВыполнения = Ложь. это приводит к тому, что запускается программа с невидимым окном, воспроизводится звук, затем программа закрывается.

SndRec32 вопроизводит только файлы формата .wav, но это не мешает пожать звук кодеком mp3

Для работы требуется следующее:

  1. Программа SndRec32(есть среди стандартных программ в Windows XP, нет в Windows 7)
  2. Сам звуковой файл, который нужно вопроизвести в формате Wave(.wav) 

Пример программы

// Распаковываем ресурсы
ФайлSndRec32	= ПолучитьИмяВременногоФайла(".exe");
ПолучитьМакет("SndRec32").Записать(ФайлSndRec32);

ФайлЗвукМонетка = ПолучитьИмяВременногоФайла(".wav");
ПолучитьМакет("ЗвукМонетка").Записать(ФайлЗвукМонетка);
	
// Запускаем SndRec32 и не дожидаемся окончания выполнения
ЗапуститьПриложение(ФайлSndRec32 + " """ + ФайлЗвукМонетка + """ -play -embedding -close ",, Ложь);

Приложена обработка-пример для обычного приложения

Так же советую почитать комментарии к этой публикации - в них размещены интересные методы

Скачать файлы

Наименование Файл Версия Размер
Асинхронное воспроизведение звука в 1С(обычное приложение)
.epf 100,35Kb
28.07.17
1
.epf 100,35Kb 1 Скачать
Наш телефон 223-322.wav
.wav 26,88Kb
28.07.17
0
.wav 26,88Kb Скачать

См. также

Комментарии
1. Виктор Назаров (androgin) 28.07.17 21:13 Сейчас в теме
то есть штатными средствами винды уже никак не воспроизвести файл?
тем более используя асинхронность 1С ))))
2. Информационно-технического развития Служба (SITR-utyos) 587 29.07.17 07:04 Сейчас в теме
(1) Поясните свою мысль.
Я искал решение как сделать то же, что в этой публикации(пустить звук так чтобы 1С продолжала работать) и нашел разные решения, которые позволяют воспроизвести звук, но во время его воспроизведения 1С ждет. Исключением возможно, является использование поляHTML документа на форме и тэг BgSound, но меня это не устравает
3. Николай Беляев (freez1301) 148 31.07.17 21:21 Сейчас в теме
(2) у поля html есть тэг audio. Решает Вашу задачу, но только поле хтмл должно быть видно на форме.
4. Валерий М (VmvLer) 31.07.17 21:37 Сейчас в теме
ЗапуститьПриложение()?
с ключами запуска?
.ехе?
.wav?

только когда совсем шарики за ролики заедут буду пихать эту крамолу в код 1С, имхо

такие решения подкупают простотой и позволяют, как говорят, на хромой козе выехать, но чаще эта коза боком выходит
ipoloskov; +1 Ответить
5. Александр Жиличев (alexzhilichev) 141 01.08.17 09:06 Сейчас в теме
Пользуйтесь:
// Проигрываем звуковой файл
WMPlayer = Новый ComОбъект("WMPlayer.OCX");
WMPlayer.Settings.Volume = 20;
WMPlayer.Settings.Rate = 1;
WMPlayer.URL = ИмяФайла;
		
WMPlayer.Controls.Play();
...Показать Скрыть
6. Денис Лопато (Terve!R) 02.08.17 12:08 Сейчас в теме
Я думал воспроизведение для асинхронности в фоновое задание поместят, а тут...)
7. Allexey (alex_4x) 72 11.08.17 12:26 Сейчас в теме
Прикольно.
Сделать оповещение можно пользователя о поступивших событиях, перед выгонянием из 1С, да и вообще полезная штука ;-)
Спасибо, буду пробовать ;-)
Оставьте свое сообщение