Воспроизведение звука в 1С. Доступно и всерьез. 8.3.14

Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. uno-c 158 02.08.20 18:24 Сейчас в теме
Я так понял это проблема кэширования самой 1С html поля с этим сложно бороться.

С этим несложно бороться. Работает не только при первом нажатии на кнопку. Работает не только на 8.3.17 (WebKit), но и на и 8.3.13 (IE7):
&НаКлиенте
Процедура ВоспроизвестиЗвукIEилиWebKit(Команда)
	
	мФайл = "file://C:/tmp/snd.mp3";
	Генератор = Новый ГенераторСлучайныхЧисел();
	rnd = XMLСтрока(Генератор.СлучайноеЧисло());
	id="sound_" + rnd;

	ПолеHTML = "
	|<!DO CTYPE html>
	| <ht ml>
	| <body>
	| <BGSOUND id='"+ id + "' balance=0 volume='-1000'></BGSOUND>
	| 
	| <sc ript>
	| function PlaySound() {
	| if (!window.HTMLAudioElement) {
	| document.all."+ id + ".volume=0; 
	| document.all." + id + ".src = '"+мФайл+"';
	| }
	| }
	| window.on load = function(){
	| PlaySound();
	| }
	| </sc ript>
	|
	|<audio autoplay=''>
	|<source src='"+мФайл+"' type='audio/mpeg'>
	|</audio>
	|
	| </body>
	| </html>";
	
КонецПроцедуры
Показать

*пробелы в тэгах (типа "DO CTYPE", "ht ml", "sc ript") - Инфостарт автоматом вставляет, нужно поубирать.
3. sikuda 638 03.08.20 09:14 Сейчас в теме
(1) Совместить WebKit и IE если необходимо это здоровая идея. А проблема кэшировния она другая. Если Вы выведите стандарный элемент управления Аудио в 1С тонкий клиент, то при нажатии второго раза на воспроизведение или прослушать с середины у Вас может не получиться(8.3.15). поэтому и предлагается решение внешного плеера. Для моего случая это сработало.
4. uno-c 158 03.08.20 10:14 Сейчас в теме
(3)Проблема кеширования - она разная. Мне нужно было воспроизвести звук при определенном событии, не нужен не только значок плеера, но даже поле HTML хотелось бы совсем спрятать. И в моей ситуации звук воспроизводился только один раз - если код HTML не менять.
5. sikuda 638 03.08.20 11:43 Сейчас в теме
(4) Есть особенность построения управляемого 1С интерфейса. Флаг видимость = флаг существования на форме!
Поэтому либо маленький прямоугольник, либо типа показать его в недоступной закладке(как в предыдущей публикации)
2. uno-c 158 02.08.20 18:40 Сейчас в теме
В общем, основная идея - в коде HTML сделать что-то меняющееся. Если нужен звук только на WebKit - то можно например покороче:
&НаКлиенте
Процедура ВоспроизвестиЗвукТолькоWebKit(Команда)
	
	мФайл = "file://C:/tmp/snd.mp3";
	
	ПолеHTML = "
	|<!DO CTYPE html>
	| <ht ml>
	| <body>
	| <!-- " + ТекущаяДата() + "  -->
	|<audio autoplay=''>
	|<source src='" + мФайл + "' type='audio/mpeg'>
	|</audio>
	|
	| </body>
	| </html>";

КонецПроцедуры
Показать
6. sikuda 638 03.08.20 11:44 Сейчас в теме
(2) Было бы интересно найти работающий вариант из ПоместитьВоВременноеХранилище, а то в Web не понимает file://
Оставьте свое сообщение
Вопросы с вознаграждением