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

10.06.26

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

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

Файлы

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование Скачано Купить файл
Воспроизведение звука в 1С. Доступно и всерьез. 8.3.14:
.epf 1,40Mb
76 2 500 руб. Купить
Бухгалтерские счеты
.epf 11,41Kb
8 2 500 руб. Купить
Элементы управления звуком в 1С.
.epf 730,32Kb
33 2 500 руб. Купить

Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний

Оформите подписку на компанию для решения рабочих задач

Оформить подписку и скачать решение со скидкой

Вы можете заказать платную доработку или адаптацию этой разработки под вашу конфигурацию на «Бирже заказов».

  • 0% комиссии — оплата напрямую исполнителю;
  • Исполнители любого масштаба — от отдельных специалистов до команд под проект;
  • Прямой обмен контактами между заказчиком и исполнителем;
  • Безопасная сделка — при необходимости;
  • Рейтинги, кейсы и прозрачная система откликов.

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

С момента предыдущей публикации //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.

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

В конце есть решение через Поместить во временное хранилище! Можно им пользоваться!

Проверено на следующих конфигурациях и релизах:

  • Бухгалтерия предприятия, редакция 3.0, релизы 3.0.199.13, 3.0.180.14
  • Управление торговлей, редакция 11, релизы 11.5.27.49

Вступайте в нашу телеграмм-группу Инфостарт

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

См. также

Инструментарий разработчика Чистка данных Свертка базы Инструменты администратора БД Системный администратор Программист Руководитель проекта 1С:Предприятие 8 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 Россия Платные (руб)

Инструмент представляет собой обработку для проведения свёртки или обрезки баз данных. Работает на ЛЮБЫХ конфигурациях (УТ, БП, ERP, УНФ, КА и т.д.). Поддерживаются серверные и файловые базы, управляемые и обычные формы, интерфейс 8.5. Может выполнять свертку одновременно в несколько потоков, а также без непосредственного участия пользователя. Решение в Реестре отечественного ПО.

24900 руб.

20.08.2024    75329    380    170    

325

Инструментарий разработчика Роли и права Запросы СКД Программист Руководитель проекта 1С:Предприятие 8 Платные (руб)

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

10000 руб.

02.09.2020    268691    1495    421    

1179

Пакетная печать Печатные формы Инструментарий разработчика Программист 1С:Предприятие 8 Платные (руб)

Расширение для создания и редактирования печатных форм в системе 1С:Предприятие 8.3. Благодаря конструктору можно значительно снизить затраты времени на разработку печатных форм, повысить качество и прозрачность разработки, а также навести порядок в многообразии корпоративных печатных форм. Обновление версии от 21.04.26

22570 руб.

06.10.2023    40235    113    54    

126

Инструментарий разработчика Нейросети Платные (руб)

Первые попытки разработки на 1С с использованием больших языковых моделей (LLM) могут разочаровать. LLMки сильно галлюцинируют, потому что не знают устройства конфигураций 1С, не знают нюансов синтаксиса. Но если дать им подсказки с помощью MCP, то результат получается кардинально лучше. Далее в публикации: MCP для поиска по метаданным 1С, справке синтакс-помощника и проверки синтаксиса.

15250 руб.

25.08.2025    64008    130    36    

138

Инструментарий разработчика Разработка Администрирование веб-серверов Системный администратор Программист Бизнес-аналитик Руководитель проекта 1С 8.3 Платные (руб)

Analyzer 1C сводит выгрузку 1С — основную конфигурацию и все расширения — в единый граф знаний. Любой запрос по связям за доли секунды, с пометками «Доб.» / «Заимств.» / «Переопределено». Новое в 2.0 — обновление поставки: сравнение и объединение версий деревом «как в Конфигураторе» с выгрузкой плана решений; поиск конфликтов из-за перехватов расширений и висячих ссылок; загрузка из бинарных .cf/.cfe; циклические зависимости. Плюс анализ влияния, запросы BSL, роли и RLS, граф вызовов. Минута на развёртывание через Docker без необходимости подключения к Интернет. Любая 1С:Предприятие 8.3+.

14000 руб.

17.04.2026    9002    38    46    

52

Инструменты администратора БД Инструментарий разработчика Роли и права Программист 1С:Предприятие 8 1C:Бухгалтерия Россия Платные (руб)

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

17000 руб.

10.11.2023    26469    98    46    

104

Информационная безопасность Инструменты администратора БД Инструментарий разработчика Учет документов Системный администратор Программист Бизнес-аналитик Бухгалтер Пользователь Руководитель проекта 1С 8.3 1С 8.5 Розничная и сетевая торговля (FMCG) Платные (руб)

Контроль ввода данных в 1С: проверка заполнения реквизитов, обязательные поля, контроль перед записью и проведением, запрет проведения документа. Позволяет настраивать любые проверки данных в 1С 8.3/8.5 от обязательных полей до сложных условий – без открытия конфигуратора и написания кода. Готовое расширение, которое подключается и работает сразу.

6000 руб.

15.04.2026    2661    6    0    

21

Инструментарий разработчика Программист 1С:Предприятие 8 Платные (руб)

Инструмент для написания и отладки кода в режиме «1С:Предприятие». Представляет собой консоль кода с возможностью пошаговой отладки, просмотра значений переменных любых типов, использования процедур и функций, просмотра стека вызовов, вычисления произвольных выражений на встроенном языке в контексте точки останова, синтаксического контроля и остановки по ошибке. В консоли используется удобный редактор кода с подсветкой, контекстной подсказкой, возможностью вызова конструкторов запроса и форматной строки. 1.3.11 Доработан механизм контекстной подсказки по метаданным

9500 руб.

17.05.2024    54854    187    63    

220
Отзывы
18. Dimel 07.10.24 19:07 Сейчас в теме
Для потомков:
Прикрепленные файлы:
ВоспроизведениеЗвука.epf
poyson; KamranV21; EmptyLogin; user2080644; Maxx79; mevgenym; GrigoryYanshin; Valador; sikuda; +9 Ответить
Остальные комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. uno-c 272 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 686 03.08.20 09:14 Сейчас в теме
(1) Совместить WebKit и IE если необходимо это здоровая идея. А проблема кэшировния она другая. Если Вы выведите стандарный элемент управления Аудио в 1С тонкий клиент, то при нажатии второго раза на воспроизведение или прослушать с середины у Вас может не получиться(8.3.15). поэтому и предлагается решение внешного плеера. Для моего случая это сработало.
4. uno-c 272 03.08.20 10:14 Сейчас в теме
(3)Проблема кеширования - она разная. Мне нужно было воспроизвести звук при определенном событии, не нужен не только значок плеера, но даже поле HTML хотелось бы совсем спрятать. И в моей ситуации звук воспроизводился только один раз - если код HTML не менять.
5. sikuda 686 03.08.20 11:43 Сейчас в теме
(4) Есть особенность построения управляемого 1С интерфейса. Флаг видимость = флаг существования на форме!
Поэтому либо маленький прямоугольник, либо типа показать его в недоступной закладке(как в предыдущей публикации)
2. uno-c 272 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 686 03.08.20 11:44 Сейчас в теме
(2) Было бы интересно найти работающий вариант из ПоместитьВоВременноеХранилище, а то в Web не понимает file://
13. bloodydiman 2 04.10.22 21:36 Сейчас в теме
(6)
&НаСервереБезКонтекста
Функция ПолучитьАдресФайла()
	 Возврат ПоместитьВоВременноеХранилище(Документы.ОтгрузочныйЛист.ПолучитьМакет("Ошибка"));
КонецФункции
 
&НаКлиенте
Процедура СохранитьФайлОшибки()
	Если ПустаяСтрока(ФайлОшибки) Тогда
		Файл = ПолучитьИзВременногоХранилища(ПолучитьАдресФайла());
		ФайлОшибки = ПолучитьИмяВременногоФайла(".mp3");
		Файл.Записать(ФайлОшибки);
	КонецЕсли;
КонецПроцедуры
Показать
19. Dimel 12.10.24 02:05 Сейчас в теме
(6) Чего то заморочился с задачей и вот какие результаты:

1) Объект Audio в WebKite чувствителен к переносам строк в Base64, поэтому необходимо использовать функцию ПолучитьBase64СтрокуИзДвоичныхДанных() при передаче данных в JS, а не использовать функцию Base64Строка()!
В таком случае код будет по воспроизведению звука такой:

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)

ОбъектОбработка = РеквизитФормыВЗначение("Объект");
Данные = ОбъектОбработка.ПолучитьМакет("sound_ball");

Base64Строка = ПолучитьBase64СтрокуИзДвоичныхДанных(Данные);
АдресВХранилище = ПоместитьВоВременноеХранилище("dat a:audio/mpeg;base64," + Base64Строка, Новый УникальныйИдентификатор);

HTML =
"<!DO CTYPE html>
|<head>
|<met a http-equiv='Cache-Control' content='no-store'>
|</head>
|<ht ml>
| <body>
| <sc ript>
| var myAudio = new Audio();
| </sc ript>
| </body>
|</html>";

КонецПроцедуры

&НаКлиенте
Процедура Проиграть(Команда)

Base64Строка = ПолучитьИзВременногоХранилища(АдресВХранилище);

ОбъектHTML = Элементы.HTML.Документ.DefaultView;

ОбъектHTML.myAudio.src = Base64Строка;
ОбъектHTML.myAudio.play();

КонецПроцедуры

Где "АдресВХранилище" - это реквизит формы.

Этот вариант работает и в тонком и в ВебКлиенте.

2) Напрямую установить ссылку на хранилище нельзя из за того, что при получении данных из него возможны только следующие типы:
content-type: application/octet-strem - если помещаешь двоичные данные.
content-type: text/plain - если помещаешь строку.
content-type: image/bmp (и другие форматы картинок) - если помещаешь объект картинку.

А объект Audio требует только свои форматы audio/mpeg и т.п.

Воздействовать на формат типа возвращаемых данных, мы не можем... (Если только фирма 1С не изменит механизм помещения, давно народ мучается с JS библиотеками, собирает веб паками и инлайн вставляет или делает выгрузку на локальный компьютер. Перспективно конечно использовать возможности Help сервиса, но там тоже только картинки и текст. Да и могут урезать как в свое время с общими картинками.)

Но можно сделать вариацию передачи Base64 на JS (конечно ересь, но показываю как можно обойти):

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
	
	ОбъектОбработка = РеквизитФормыВЗначение("Объект");
	Данные = ОбъектОбработка.ПолучитьМакет("sound_ball");
		
	Base64Строка = ПолучитьBase64СтрокуИзДвоичныхДанных(Данные);
	
	АдресВХранилище = ПоместитьВоВременноеХранилище("dat a:audio/mpeg;base64," + Base64Строка, Новый УникальныйИдентификатор);
			
	HTML = 
	"<!DO CTYPE html>
	|<head>
	|</head>
	|<ht ml>
	| <body>
	|   <sc ript>
	|	var myAudio = new Audio();
	|
	|	let xhr = new XMLHttpRequest();
	|
	|	xhr.on load = function() {
	|		if (xhr.status != 200) { // анализируем HTTP-статус ответа, если статус не 200, то произошла ошибка
	|    		alert(`Ошибка ${xhr.status}: ${xhr.statusText}`); // Например, 404: Not Found
	|  		} else { // если всё прошло гладко, выводим результат
	|    		let str = xhr.response;
	|		myAudio.src = str;
	|		myAudio.play();
	|  		}
	|	};
	|   </sc ript>
	| </body>
	|</html>";

КонецПроцедуры

&НаКлиенте
Процедура ПроигратьИзХранилища(Команда)
	
	ОбъектHTML = Элементы.HTML.Документ.DefaultView;
	
	ОбъектHTML.xhr.open("GET", АдресВХранилище);
	ОбъектHTML.xhr.send();

КонецПроцедуры
Показать


Т.е. делаем HTTP запрос сами и подставляем полученный ответ в качестве src. (Там та же Base64 строка). Могу сказать только, что во временном хранилище все и так лежит в этом формате, так что разницы нет.

Этот вариант будет работать в тонком клиенте, но не работает на Web клиенте!.

Оба варианта не нуждаются в переформировании HTML для повторного воспроизведения.
7. ironn 6 16.10.20 13:06 Сейчас в теме
Приветствую!
Скачал третью обработку и столкнулся с проблемой.
Есть обработка на обычных формах, платформа 8.3.16.1063. В обработке список аудио файлов. Из нее вызывается форма воспроизведения с плеером "plyr" в ПолеHTMLДокумента. проигрываемый файл аудио скачивается на локальный виндовый сервер nbgf "file:////DC/Шара/файл.mp3".
На первый взгляд все нормально работает, но после проигрывания нескольких (3-5) файлов, при открытии следующего файла, черный квадрат... Иногда, перед черным квадратом на предыдущем файле, перестают работать элементы управления проигрывателя. Далее, если повезет, то можно закрыть 1С и открыть заново, а если нет, то она вылетает с ошибкой, или окно с 1С становится недоступным и приходится убивать процесс.
Может есть соображения по этому поводу?
8. sikuda 686 16.10.20 22:20 Сейчас в теме
(7) Жаль похоже внутренний урезанный движок V8Webkit тупо теряет ресурсы...
9. ironn 6 20.10.20 01:53 Сейчас в теме
(8) Такое впечатление, что он их не освобождает... Вернее освобождает после закрытия 1С. Сделал чтобы форма воспроизведения не закрывалась, а только обновлялся текст в поле хтмл - не помогло.
А движок в управляемых формах такой-же?
10. unknown181538 166 26.10.21 12:58 Сейчас в теме
(0) После переустановки ОС перестало у меня опять работать.
Выковырял html из вашей обработки.
В хроме корректно открывается с элементами управления.
В IE - пустая страница.
Подскажите, что в настройках IE нужно ставить? не смог подобрать.
Я правильно понимаю, что 1с IE вызывает?
11. sikuda 686 26.10.21 18:19 Сейчас в теме
(10) Нет. Статья как раз о том что 1С сделала по другом доступ в вэб движку.
Раньше это было - https://infostart.ru/public/248770/
А теперь у нас Webkit оригинальной версии в самой платформе...
12. unknown181538 166 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 686 02.05.23 09:28 Сейчас в теме
(15) Это в браузере или в тонком клиенте? Как правило внутри 1С тонкого клиента совместимость с вэб-стандартами не прозрачна. Только методом тыка..
17. Dimel 07.10.24 16:53 Сейчас в теме
(0) А в чем сложность с методом из Base64 строки? У меня работает и на клиенте и на web?
ЧЯДНТ?
18. Dimel 07.10.24 19:07 Сейчас в теме
Для потомков:
Прикрепленные файлы:
ВоспроизведениеЗвука.epf
poyson; KamranV21; EmptyLogin; user2080644; Maxx79; mevgenym; GrigoryYanshin; Valador; sikuda; +9 Ответить
20. user2080644 24.06.25 18:22 Сейчас в теме
(18) Респект. Все работает. Причем на всех остальных ресурсах неработающие варианты.
21. Tatitutu 3857 08.06.26 15:05 Сейчас в теме
(0) я тебя в свой статье отметил (только первую твою статью) и меня на РЕТРО потянуло

[РЕТРО] Бухгалтерские счеты

Звук настраивается и воспроизводиться одним из вариантов

* файл

СредстваМультимедиа.ВоспроизвестиАудио(ПолучитьОбщийМакет("ЗвукМонеты"),0,Неопределено,Истина);

или дрожь фишек

СредстваМультимедиа.ВоспроизвестиЗвуковоеОповещение(ЗвуковоеОповещение.Нет,МассЗвуков);
22. sikuda 686 10.06.26 13:54 Сейчас в теме
(21) Для любителей ретро - делаем счеты масштабируемыми и с градиентом цвета в web.
23. Tatitutu 3857 11.06.26 14:10 Сейчас в теме
(22) Все уже сделано и прекрасно встроилось в головное приложение ТуТиТоG
первое мобильное приложение на Платформе 8.5
24. sikuda 686 13.07.26 08:30 Сейчас в теме
(23) В случае с отрисовкой ретро-счет:
Нас как технических специалистов больше интересует понимание технологий, чем конкретная реализация в закрытой платформе.
Поэтому технология векторной графики SVG меня интересует больше, даже если она в 1С Платформе не полностью реализована.
Tatitutu; +1 Ответить
25. Tatitutu 3857 14.07.26 09:11 Сейчас в теме
Главное, чтобы был выбор и мозг не застаивался.
Интересная задача - не тривиальное решение
Для отправки сообщения требуется регистрация/авторизация