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

04.08.20

Разработка - Инструментарий разработчика

Продолжение статьи https://infostart.ru/public/248770/

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

Наименование Файл Версия Размер
Воспроизведение звука в 1С. Доступно и всерьез. 8.3.14:
.epf 1,40Mb
48
.epf 1,40Mb 48 Скачать
Бухгалтерские счеты
.epf 10,73Kb
7
.epf 10,73Kb 7 Скачать
Элементы управления звуком в 1С.
.epf 730,32Kb
26
.epf 730,32Kb 26 Скачать

Доброго времени суток!

С момента предыдущей публикации //infostart.ru/public/248770/ прошло много времени. И честно говоря, если вы запустите старую обработку на  Windows 10 и новой платформе  8.3.14, то звук уже не будет воспроизводиться. За это время многие уже перебрались на платформу выше 8.3.14, а значит, и html поле теперь всегда новое и это не зависит от режима совместимости ;) и режима классических форм. Все старое перестало работать! Значит, есть основание сделать мир лучше!

Можно пойти путем использования функций операционной системы (внешняя компонента) или взаимодействия с другой системой, которая сумеет воспроизвести звук.  Это правильный подход и я его рекомендую в сложных проектах. Но если вам дано добавить два, три звукового сопровождения к существующей доработке, то предлагаю действующий метод.

Прежде всего скажем, что будем использовать поле html, интернет стандарты это единственное, на чем можно основываться в нашем проприоритетном мире. И конечно если мы доделываем для Web клиента, то других вариантов у нас просто нет.

Итак начнем с самых основ звука в html5 и тега audio (https://www.w3schools.com/html/tryit.asp?filename=tryhtml5_audio_all):

<!DOCTYPE html>
<html>
<body>

<audio controls>
  <source src="horse.ogg" type="audio/ogg">
  <source src="horse.mp3" type="audio/mpeg">
Your browser does not support the audio element.
</audio>

</body>
</html>

Проблема номер один ссылка на файл в контексте сервера. Где должен быть расположен файл по отношению сервера 1С, локального компьютера ил того подобного.

Ответ 1: полная ссылка на звуковой файл типа - https://blog.sikuda.ru/1c/sound1c.mp3 - ВСЕ ПРЕКРАСНО и для Вэб-клиента это пока единственный вариант.

Ответ 2: Прописывание звука в тело html типа - src='data:audio/mpeg;base64 НЕ ПРОХОДИТ 1С клиент.

Ответ 3: Указание ссылки Адрес во временном хранилище у меня НЕ ЗАРАБОТАЛО.

Ответ 4: Использовать временные локальные файлы на клиенте file:// вместе с ПолучитьИмяВременногоФайла - РАБОТАЕТ даже в тонком клиенте.

 

И вторая проблема с которой я столкнулся, это однократное воспроизведение звука. Я так понял это проблема кэширования самой 1С html поля с этим сложно бороться. Если Вы выведите стандарный элемент управления Аудио в 1С тонкий клиент, то при нажатии второго раза на воспроизведение или прослушать с середины у Вас может не получиться.

Простое решение работает если перезагружать страницу с кодом:

<script>
   var aud = new Audio('"+АдресЗвукаНаСтранице+"');
   aud.play();
</script>

Ну а тем кто хочет использовать элементы управления звуком и не получить в стандартном 1С черный прямоугольник, рекомендую воспользоваться сторонним плеером (мне понравился https://plyr.io/#audio и третья обработка)

Ну вот и все. Тестируем, критикуем, комментируем. Если найдете лучший метод не стесняйтесь рассказывайте.

 

Р.S.

Вторая обработка - Щелкающие счеты - в качестве приятного бонуса ;)

Обязательно расскажите если у кого получится сделать через Поместить во временное хранилище! Скачаю и прорекламирую Вас.

Звук Sound Сказать Сигнал Воспроизведение Beep

См. также

Infostart Toolkit: Инструменты разработчика 1С 8.3 на управляемых формах

Инструментарий разработчика Роли и права Запросы СКД Платформа 1С v8.3 Управляемые формы Запросы Система компоновки данных Конфигурации 1cv8 Платные (руб)

Набор инструментов программиста и специалиста 1С для всех конфигураций на управляемых формах. В состав входят инструменты: Консоль запросов, Консоль СКД, Консоль кода, Редактор объекта, Анализ прав доступа, Метаданные, Поиск ссылок, Сравнение объектов, Все функции, Подписки на события и др. Редактор запросов и кода с раскраской и контекстной подсказкой. Доработанный конструктор запросов тонкого клиента. Продукт хорошо оптимизирован и обладает самым широким функционалом среди всех инструментов, представленных на рынке.

13000 руб.

02.09.2020    119908    656    389    

701

Infostart PrintWizard

Пакетная печать Печатные формы Инструментарий разработчика Платформа 1С v8.3 Запросы 1С:Зарплата и кадры бюджетного учреждения 1С:Конвертация данных 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 Платные (руб)

Инструмент, позволяющий абсолютно по-новому взглянуть на процесс разработки печатных форм. Благодаря конструктору можно значительно снизить затраты времени на разработку печатных форм, повысить качество и "прозрачность" разработки, а также навести порядок в многообразии корпоративных печатных форм.

18000 руб.

06.10.2023    7007    20    6    

37

Infostart УДиФ: Управление данными и формами

Инструменты администратора БД Инструментарий разработчика Роли и права Платформа 1С v8.3 Конфигурации 1cv8 Россия Платные (руб)

Расширение позволяет без изменения кода конфигурации выполнять проверки при вводе данных, скрывать от пользователя недоступные ему данные, выполнять код в обработчиках. Не изменяет данные конфигурации, легко устанавливается практически на любую конфигурацию на управляемых формах.

10000 руб.

10.11.2023    3242    10    1    

31

PowerTools

Инструментарий разработчика Инструменты администратора БД Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Россия Платные (руб)

Универсальный инструмент программиста для администрирования конфигураций. Сборник наиболее часто используемых обработок под единым интерфейсом.

3600 руб.

14.01.2013    177340    1070    0    

846

Многопоточность. Универсальный «Менеджер потоков» 2.1

Инструментарий разработчика Платформа 1С v8.3 Конфигурации 1cv8 Россия Платные (руб)

Восстановление партий или взаиморасчетов, расчет зарплаты, пакетное формирование документов или отчетов - теперь все это стало доступнее. * Есть желание повысить скорость работы медленных алгоритмов! Но... * Нет времени думать о реализации многопоточности? * о запуске и остановке потоков? * о поддержании потоков в рабочем состоянии? * о передаче данных в потоки и как получить ответ из потока? * об организации последовательности? Тогда ЭТО - то что надо!!!

5000 руб.

07.02.2018    99202    239    97    

296

[ЕХТ] Фреймворк для Расширений 1С

Инструментарий разработчика Платформа 1С v8.3 Управляемые формы Платные (руб)

"Фреймворк для Расширений 1С" это универсальное и многофункциональное решение, упрощающее разработку и поддержку создаваемых Расширений. Поставляется в виде комплекта из нескольких Расширений с открытым исходным кодом. Работает в любых Конфигурациях в режиме Управляемого приложения с режимом совместимости 8.3.12 и выше без необходимости внесения изменений в Конфигурацию.

3000 руб.

27.08.2019    17909    6    8    

38

1С HTML Шаблоны / HTML Templates

Инструментарий разработчика Платформа 1С v8.3 Конфигурации 1cv8 Платные (руб)

Быстрая и удобная обработка для работы с шаблонами HTML. Позволяет легко и быстро формировать код HTML.

2040 руб.

27.12.2017    27945    3    10    

14

Выполнение произвольного кода или запроса с параметрами через Web-сервис (замена COM-подключений)

Инструментарий разработчика Обмен между базами 1C Платформа 1С v8.3 Платные (руб)

В процессе работы в 1С часто возникает потребность получить данные из другой базы.  Обычно это делается через COM-соединение, и время выполнения запроса при этом оставляет желать лучшего. В данной публикации представлено универсальное решение, позволяющее практически моментально выполнить произвольный код или запрос с параметрами в другой информационной базе через Web-сервис.

2400 руб.

24.09.2019    23486    15    15    

31
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. uno-c 234 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 673 03.08.20 09:14 Сейчас в теме
(1) Совместить WebKit и IE если необходимо это здоровая идея. А проблема кэшировния она другая. Если Вы выведите стандарный элемент управления Аудио в 1С тонкий клиент, то при нажатии второго раза на воспроизведение или прослушать с середины у Вас может не получиться(8.3.15). поэтому и предлагается решение внешного плеера. Для моего случая это сработало.
4. uno-c 234 03.08.20 10:14 Сейчас в теме
(3)Проблема кеширования - она разная. Мне нужно было воспроизвести звук при определенном событии, не нужен не только значок плеера, но даже поле HTML хотелось бы совсем спрятать. И в моей ситуации звук воспроизводился только один раз - если код HTML не менять.
5. sikuda 673 03.08.20 11:43 Сейчас в теме
(4) Есть особенность построения управляемого 1С интерфейса. Флаг видимость = флаг существования на форме!
Поэтому либо маленький прямоугольник, либо типа показать его в недоступной закладке(как в предыдущей публикации)
2. uno-c 234 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>";

КонецПроцедуры
Показать
user788280; Irwin; blackjack666; ivanleb; +4 Ответить
6. sikuda 673 03.08.20 11:44 Сейчас в теме
(2) Было бы интересно найти работающий вариант из ПоместитьВоВременноеХранилище, а то в Web не понимает file://
13. bloodydiman 1 04.10.22 21:36 Сейчас в теме
(6)
&НаСервереБезКонтекста
Функция ПолучитьАдресФайла()
	 Возврат ПоместитьВоВременноеХранилище(Документы.ОтгрузочныйЛист.ПолучитьМакет("Ошибка"));
КонецФункции
 
&НаКлиенте
Процедура СохранитьФайлОшибки()
	Если ПустаяСтрока(ФайлОшибки) Тогда
		Файл = ПолучитьИзВременногоХранилища(ПолучитьАдресФайла());
		ФайлОшибки = ПолучитьИмяВременногоФайла(".mp3");
		Файл.Записать(ФайлОшибки);
	КонецЕсли;
КонецПроцедуры
Показать
7. ironn 5 16.10.20 13:06 Сейчас в теме
Приветствую!
Скачал третью обработку и столкнулся с проблемой.
Есть обработка на обычных формах, платформа 8.3.16.1063. В обработке список аудио файлов. Из нее вызывается форма воспроизведения с плеером "plyr" в ПолеHTMLДокумента. проигрываемый файл аудио скачивается на локальный виндовый сервер nbgf "file:////DC/Шара/файл.mp3".
На первый взгляд все нормально работает, но после проигрывания нескольких (3-5) файлов, при открытии следующего файла, черный квадрат... Иногда, перед черным квадратом на предыдущем файле, перестают работать элементы управления проигрывателя. Далее, если повезет, то можно закрыть 1С и открыть заново, а если нет, то она вылетает с ошибкой, или окно с 1С становится недоступным и приходится убивать процесс.
Может есть соображения по этому поводу?
8. sikuda 673 16.10.20 22:20 Сейчас в теме
(7) Жаль похоже внутренний урезанный движок V8Webkit тупо теряет ресурсы...
9. ironn 5 20.10.20 01:53 Сейчас в теме
(8) Такое впечатление, что он их не освобождает... Вернее освобождает после закрытия 1С. Сделал чтобы форма воспроизведения не закрывалась, а только обновлялся текст в поле хтмл - не помогло.
А движок в управляемых формах такой-же?
10. unknown181538 151 26.10.21 12:58 Сейчас в теме
(0) После переустановки ОС перестало у меня опять работать.
Выковырял html из вашей обработки.
В хроме корректно открывается с элементами управления.
В IE - пустая страница.
Подскажите, что в настройках IE нужно ставить? не смог подобрать.
Я правильно понимаю, что 1с IE вызывает?
11. sikuda 673 26.10.21 18:19 Сейчас в теме
(10) Нет. Статья как раз о том что 1С сделала по другом доступ в вэб движку.
Раньше это было - https://infostart.ru/public/248770/
А теперь у нас Webkit оригинальной версии в самой платформе...
12. unknown181538 151 26.10.21 18:30 Сейчас в теме
(11) а. точно. а я думал, что у мен уже новая версия... сейчас потестим
да, и он у меня тоже не работает. В чем может быть причина, и что проверять?
14. user1855774 19.04.23 15:35 Сейчас в теме
Привет! Очень благодарен всем причастным за объяснение по этой теме, искал варианты для воспроизведения звука на форме.
Сначала начал пользовать:

spVoice = Новый COMОбъект("SAPI.SpVoice");
spfStream = Новый COMОбъект("SAPI.SpFileStream");

Но при воспроизведении, блокируется форма. А у нас звук может идти каждые 13 секунд из-за этого юзеры жаловались на "глюки и подвисания 1С".

Благодаря этому способу, форма не блокируется при воспроизведении. Единственный минус, это лишнее поле ХТМЛ на форме, но, с учетом альтернативы описанной выше - это ерунда.
15. SaDLiF 01.05.23 22:51 Сейчас в теме
Ребята, кто подскажет. Почему при выводе audio control в html. Сам плеер черный и кнопок не видно, тыкаю наугад на кнопку "Play".
Какие варианты есть?

ПолеHTML = "<!DOCTYPE html>
	|<html>
	|<body>
	|
	|<audio controls>
	|<source src=""horse.ogg"" type=""audio/ogg"">
	|<source src=""horse.mp3"" type=""audio/mpeg"">
	|Your browser does not support the audio element.
	|</audio>
	|
	|</body>
	|</html>";
Показать
Прикрепленные файлы:
16. sikuda 673 02.05.23 09:28 Сейчас в теме
(15) Это в браузере или в тонком клиенте? Как правило внутри 1С тонкого клиента совместимость с вэб-стандартами не прозрачна. Только методом тыка..
Оставьте свое сообщение