1С 8.3 Воспроизвести песню
Данные > Примеры кода 1С > 1С 8.3 Диалоги
Перейти в раздел примеры кода 1С 8.3:
Воспроизвести аудио файл в 1С 8.3 (1С и точка):
#Область ОбработчикиСобытийФормы
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
ВоспроизведениеПесни_ПриСозданииНаСервере(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ПередЗакрытием(Отказ, ЗавершениеРаботы, ТекстПредупреждения, СтандартнаяОбработка)
ВоспроизведениеПесни_ПередЗакрытием(ЭтотОбъект);
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиКомандФормы
&НаКлиенте
Процедура ВоспроизвестиПесню(Команда)
ВоспроизведениеПесни_ЗапуститьПесню(ЭтотОбъект);
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
#Область ВоспроизведениеПесни
// Функция - Воспроизведение песни данные песни по умолчанию
//
// Параметры:
// Форма - ФормаКлиентскоеПриложение - Форма объекта.
//
// Возвращаемое значение:
// Структура - Описание расположения файла.
//
&НаСервереБезКонтекста
Функция ВоспроизведениеПесни_ДанныеПесниПоУмолчанию(Форма)
Результат = Новый Структура("АдресВоВременномХранилище, ПутьКФайлу, ТипФайла");
// В зависимости от способа хранения данных песни необходимо расскоментировать участок.
// Начало Файл размещается на веб ресурсе
Результат.ПутьКФайлу = "https://koder.by/videos/Adminskie_pesni_Pesnya_pro_staryh_Programmistov_1Cnik.by.mp3";
// Конец Файл размещается на веб ресурсе
// Начало Файл подсистемы БСП
// ФайлПесни можно определять из константы или любым другим способом.
//ФайлПесни = Константы.рестПесняЗвуковогоОповещенияДоставка.Получить();
//ДанныеФайла = РаботаСФайлами.ДанныеФайла(ФайлПесни, Форма.УникальныйИдентификатор);
//Если НЕ ДанныеФайла = Неопределено Тогда
// Результат.АдресВоВременномХранилище = ДанныеФайла.СсылкаНаДвоичныеДанныеФайла;
// Результат.ТипФайла = ДанныеФайла.Расширение;
//КонецЕсли;
// Конец Файл подсистемы БСП
// Начало Файл хранится локально
// ПутьКФайлу = "C:\Adminskie_pesni_Pesnya_pro_staryh_Programmistov_1Cnik.by.mp3";
//ФайлПесни = Новый Файл(ПутьКФайлу);
//ДвоичныеДанныеПесни = Новый ДвоичныеДанные(ФайлПесни.ПолноеИмя);
//Результат.АдресВоВременномХранилище = ПоместитьВоВременноеХранилище(ДвоичныеДанныеПесни, Форма.УникальныйИдентификатор);
//Результат.ТипФайла = ФайлПесни.Расширение;
//
// Конец Файл хранится локально
// Начало Данные хранятся в макете
//Обработка = Форма.РеквизитФормыВЗначение("Объект");
//
//ДвоичныеДанныеПесни = Обработка.ПолучитьМакет("ДанныеПесни");
//Результат.АдресВоВременномХранилище = ПоместитьВоВременноеХранилище(ДвоичныеДанныеПесни, Форма.УникальныйИдентификатор);
//Результат.ТипФайла = "wav"; // Расширение должно соответствовать помещенному.
//
// Конец Файл хранится локально
Возврат Результат;
КонецФункции
// Процедура - Подготовка каркаса запуска песни.
//
// Параметры:
// Форма - ФормаКлиентскогоПриложения - Основная форма.
// Страницы - Произвольный - Страницы в которой будет размещаться скрытая страница.
// ФайлПесни - ДвоичныеДанные - Двоичные данные файла.
//
&НаСервереБезКонтекста
Процедура ВоспроизведениеПесни_ПриСозданииНаСервере(Форма, Страницы = Неопределено) Экспорт
// Расположим страницу где будет размещаться поле html.
Элементы = Форма.Элементы;
// Подготовим массив новых реквизитов.
ДобавляемыеРеквизиты = Новый Массив;
// Реквизит "КодЗапускаПесни".
НовыйРеквизит = Новый РеквизитФормы("КодЗапускаПесни", Новый ОписаниеТипов("Строка"),,"");
ДобавляемыеРеквизиты.Добавить(НовыйРеквизит);
НовыйРеквизит = Новый РеквизитФормы("ДанныеФайлаПесни", Новый ОписаниеТипов(Неопределено));
ДобавляемыеРеквизиты.Добавить(НовыйРеквизит);
Форма.ИзменитьРеквизиты(ДобавляемыеРеквизиты);
ДанныеФайлаПесни = ВоспроизведениеПесни_ДанныеПесниПоУмолчанию(Форма);
Форма.ДанныеФайлаПесни = ДанныеФайлаПесни;
// Страница, где будет размешаться поле.
РасположениеПоляHTML = Форма;
Если НЕ Страницы = Неопределено Тогда
НоваяСтраница = Элементы.Добавить("СтраницаЗапускаПесни",Тип("ГруппаФормы"),Страницы);
НоваяСтраница.Заголовок = "";
НоваяСтраница.Вид = ВидГруппыФормы.Страница;
НоваяСтраница.ТолькоПросмотр = Ложь;
НоваяСтраница.Доступность = Ложь;
РасположениеКодаЗапуска = Элементы.СтраницаЗапускаПесни;
КонецЕсли;
// Элемент поля, который и будет воспроизводить.
НовыйЭлемент = Элементы.Добавить("ПолеЗапускаПесни",Тип("ПолеФормы"), РасположениеПоляHTML);
НовыйЭлемент.Вид = ВидПоляФормы.ПолеHTMLДокумента;
НовыйЭлемент.Заголовок = "";
НовыйЭлемент.ПоложениеЗаголовка = ПоложениеЗаголовкаЭлементаФормы.Нет;
НовыйЭлемент.ПутьКДанным = "КодЗапускаПесни";
НовыйЭлемент.ТолькоПросмотр = Ложь;
НовыйЭлемент.РастягиватьПоГоризонтали = Ложь;
НовыйЭлемент.РастягиватьПоВертикали = Ложь;
НовыйЭлемент.Высота = 1;
НовыйЭлемент.Ширина = 1;
КонецПроцедуры
// Процедура - Запустить песню.
//
// Параметры:
// Форма - ФормаКлиентскогоПриложения - Форма.
//
&НаКлиенте
Процедура ВоспроизведениеПесни_ЗапуститьПесню(Форма) Экспорт
Если Форма.ДанныеФайлаПесни = Неопределено Тогда
Возврат;
КонецЕсли;
Если НЕ ЗначениеЗаполнено(Форма.ДанныеФайлаПесни.ПутьКФайлу) Тогда
ВоспроизведениеПесни_ПодготовитьФайлПесниНаКлиенте(Форма);
КонецЕсли;
Если НЕ ЗначениеЗаполнено(Форма.ДанныеФайлаПесни.ПутьКФайлу) Тогда
// Что то пошло не так.
Возврат;
КонецЕсли;
АдресФайла = Форма.ДанныеФайлаПесни.ПутьКФайлу;
Если НЕ СтрНачинаетсяС(НРег(АдресФайла), "http") Тогда
// Считаем, что файл располагается локально.
АдресФайла = СтрЗаменить(АдресФайла,"\","/");
АдресФайла = СтрШаблон("file://%1", АдресФайла);
КонецЕсли;
Форма.КодЗапускаПесни = СтрШаблон("
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
ВоспроизведениеПесни_ПриСозданииНаСервере(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ПередЗакрытием(Отказ, ЗавершениеРаботы, ТекстПредупреждения, СтандартнаяОбработка)
ВоспроизведениеПесни_ПередЗакрытием(ЭтотОбъект);
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиКомандФормы
&НаКлиенте
Процедура ВоспроизвестиПесню(Команда)
ВоспроизведениеПесни_ЗапуститьПесню(ЭтотОбъект);
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
#Область ВоспроизведениеПесни
// Функция - Воспроизведение песни данные песни по умолчанию
//
// Параметры:
// Форма - ФормаКлиентскоеПриложение - Форма объекта.
//
// Возвращаемое значение:
// Структура - Описание расположения файла.
//
&НаСервереБезКонтекста
Функция ВоспроизведениеПесни_ДанныеПесниПоУмолчанию(Форма)
Результат = Новый Структура("АдресВоВременномХранилище, ПутьКФайлу, ТипФайла");
// В зависимости от способа хранения данных песни необходимо расскоментировать участок.
// Начало Файл размещается на веб ресурсе
Результат.ПутьКФайлу = "https://koder.by/videos/Adminskie_pesni_Pesnya_pro_staryh_Programmistov_1Cnik.by.mp3";
// Конец Файл размещается на веб ресурсе
// Начало Файл подсистемы БСП
// ФайлПесни можно определять из константы или любым другим способом.
//ФайлПесни = Константы.рестПесняЗвуковогоОповещенияДоставка.Получить();
//ДанныеФайла = РаботаСФайлами.ДанныеФайла(ФайлПесни, Форма.УникальныйИдентификатор);
//Если НЕ ДанныеФайла = Неопределено Тогда
// Результат.АдресВоВременномХранилище = ДанныеФайла.СсылкаНаДвоичныеДанныеФайла;
// Результат.ТипФайла = ДанныеФайла.Расширение;
//КонецЕсли;
// Конец Файл подсистемы БСП
// Начало Файл хранится локально
// ПутьКФайлу = "C:\Adminskie_pesni_Pesnya_pro_staryh_Programmistov_1Cnik.by.mp3";
//ФайлПесни = Новый Файл(ПутьКФайлу);
//ДвоичныеДанныеПесни = Новый ДвоичныеДанные(ФайлПесни.ПолноеИмя);
//Результат.АдресВоВременномХранилище = ПоместитьВоВременноеХранилище(ДвоичныеДанныеПесни, Форма.УникальныйИдентификатор);
//Результат.ТипФайла = ФайлПесни.Расширение;
//
// Конец Файл хранится локально
// Начало Данные хранятся в макете
//Обработка = Форма.РеквизитФормыВЗначение("Объект");
//
//ДвоичныеДанныеПесни = Обработка.ПолучитьМакет("ДанныеПесни");
//Результат.АдресВоВременномХранилище = ПоместитьВоВременноеХранилище(ДвоичныеДанныеПесни, Форма.УникальныйИдентификатор);
//Результат.ТипФайла = "wav"; // Расширение должно соответствовать помещенному.
//
// Конец Файл хранится локально
Возврат Результат;
КонецФункции
// Процедура - Подготовка каркаса запуска песни.
//
// Параметры:
// Форма - ФормаКлиентскогоПриложения - Основная форма.
// Страницы - Произвольный - Страницы в которой будет размещаться скрытая страница.
// ФайлПесни - ДвоичныеДанные - Двоичные данные файла.
//
&НаСервереБезКонтекста
Процедура ВоспроизведениеПесни_ПриСозданииНаСервере(Форма, Страницы = Неопределено) Экспорт
// Расположим страницу где будет размещаться поле html.
Элементы = Форма.Элементы;
// Подготовим массив новых реквизитов.
ДобавляемыеРеквизиты = Новый Массив;
// Реквизит "КодЗапускаПесни".
НовыйРеквизит = Новый РеквизитФормы("КодЗапускаПесни", Новый ОписаниеТипов("Строка"),,"");
ДобавляемыеРеквизиты.Добавить(НовыйРеквизит);
НовыйРеквизит = Новый РеквизитФормы("ДанныеФайлаПесни", Новый ОписаниеТипов(Неопределено));
ДобавляемыеРеквизиты.Добавить(НовыйРеквизит);
Форма.ИзменитьРеквизиты(ДобавляемыеРеквизиты);
ДанныеФайлаПесни = ВоспроизведениеПесни_ДанныеПесниПоУмолчанию(Форма);
Форма.ДанныеФайлаПесни = ДанныеФайлаПесни;
// Страница, где будет размешаться поле.
РасположениеПоляHTML = Форма;
Если НЕ Страницы = Неопределено Тогда
НоваяСтраница = Элементы.Добавить("СтраницаЗапускаПесни",Тип("ГруппаФормы"),Страницы);
НоваяСтраница.Заголовок = "";
НоваяСтраница.Вид = ВидГруппыФормы.Страница;
НоваяСтраница.ТолькоПросмотр = Ложь;
НоваяСтраница.Доступность = Ложь;
РасположениеКодаЗапуска = Элементы.СтраницаЗапускаПесни;
КонецЕсли;
// Элемент поля, который и будет воспроизводить.
НовыйЭлемент = Элементы.Добавить("ПолеЗапускаПесни",Тип("ПолеФормы"), РасположениеПоляHTML);
НовыйЭлемент.Вид = ВидПоляФормы.ПолеHTMLДокумента;
НовыйЭлемент.Заголовок = "";
НовыйЭлемент.ПоложениеЗаголовка = ПоложениеЗаголовкаЭлементаФормы.Нет;
НовыйЭлемент.ПутьКДанным = "КодЗапускаПесни";
НовыйЭлемент.ТолькоПросмотр = Ложь;
НовыйЭлемент.РастягиватьПоГоризонтали = Ложь;
НовыйЭлемент.РастягиватьПоВертикали = Ложь;
НовыйЭлемент.Высота = 1;
НовыйЭлемент.Ширина = 1;
КонецПроцедуры
// Процедура - Запустить песню.
//
// Параметры:
// Форма - ФормаКлиентскогоПриложения - Форма.
//
&НаКлиенте
Процедура ВоспроизведениеПесни_ЗапуститьПесню(Форма) Экспорт
Если Форма.ДанныеФайлаПесни = Неопределено Тогда
Возврат;
КонецЕсли;
Если НЕ ЗначениеЗаполнено(Форма.ДанныеФайлаПесни.ПутьКФайлу) Тогда
ВоспроизведениеПесни_ПодготовитьФайлПесниНаКлиенте(Форма);
КонецЕсли;
Если НЕ ЗначениеЗаполнено(Форма.ДанныеФайлаПесни.ПутьКФайлу) Тогда
// Что то пошло не так.
Возврат;
КонецЕсли;
АдресФайла = Форма.ДанныеФайлаПесни.ПутьКФайлу;
Если НЕ СтрНачинаетсяС(НРег(АдресФайла), "http") Тогда
// Считаем, что файл располагается локально.
АдресФайла = СтрЗаменить(АдресФайла,"\","/");
АдресФайла = СтрШаблон("file://%1", АдресФайла);
КонецЕсли;
Форма.КодЗапускаПесни = СтрШаблон("
| <HTML>
| <BODY scroll='no'> обт
| <BGSOUND id='sound_think' balance=0 volume='-1000'></BGSOUND>
| <div id='id_%2'</div>
| <script>
| window.onload = new Audio('%1').play();
| </script>
| </BODY>
| </HTML>", АдресФайла, Новый УникальныйИдентификатор);
КонецПроцедуры
// Процедура - Звуковое оповещение _ подготовить файлы на клиенте.
//
// Параметры:
// Форма - ФормаКлиентскогоПриложения - Форма.
//
&НаКлиенте
Процедура ВоспроизведениеПесни_ПодготовитьФайлПесниНаКлиенте(Форма) Экспорт
#Если НЕ ВебКлиент Тогда
Если Форма.ДанныеФайлаПесни = Неопределено
ИЛИ НЕ ЗначениеЗаполнено(Форма.ДанныеФайлаПесни.АдресВоВременномХранилище) Тогда
Возврат;
КонецЕсли;
ДвоичныеДанные = ПолучитьИзВременногоХранилища(Форма.ДанныеФайлаПесни.АдресВоВременномХранилище);
Попытка
Форма.ДанныеФайлаПесни.ПутьКФайлу = ПолучитьИмяВременногоФайла(Форма.ДанныеФайлаПесни.ТипФайла);
ДвоичныеД анные.Записать(Форма.ДанныеФайлаПесни.ПутьКФайлу);
Исключение
Форма.ДанныеФайлаПесни.ПутьКФайлу = "";
ТекстОшибки = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке());
КонецПопытки;
#КонецЕсли
КонецПроцедуры
// Процедура - Звуковое оповещение _ перед закрытием.
//
// Параметры:
// Форма - ФормаКлиентскогоПриложения - Форма.
//
&НаКлиенте
Процедура ВоспроизведениеПесни_ПередЗакрытием(Форма) Экспорт
#Если НЕ ВебКлиент Тогда
Если Форма.ДанныеФайлаПесни = Неопределено
ИЛИ НЕ ЗначениеЗаполнено(Форма.ДанныеФайлаПесни.ПутьКФайлу) Тогда
Возврат;
КонецЕсли;
Попытка
НачатьУдалениеФайлов(Неопределено, Форма.ДанныеФайлаПесни.ПутьКФайлу);
Исключение
ТекстОшибки = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке());
КонецПопытки;
#КонецЕсли
КонецПроцедуры
#КонецОбласти
#КонецОбласти
КонецПроцедуры
// Процедура - Звуковое оповещение _ подготовить файлы на клиенте.
//
// Параметры:
// Форма - ФормаКлиентскогоПриложения - Форма.
//
&НаКлиенте
Процедура ВоспроизведениеПесни_ПодготовитьФайлПесниНаКлиенте(Форма) Экспорт
#Если НЕ ВебКлиент Тогда
Если Форма.ДанныеФайлаПесни = Неопределено
ИЛИ НЕ ЗначениеЗаполнено(Форма.ДанныеФайлаПесни.АдресВоВременномХранилище) Тогда
Возврат;
КонецЕсли;
ДвоичныеДанные = ПолучитьИзВременногоХранилища(Форма.ДанныеФайлаПесни.АдресВоВременномХранилище);
Попытка
Форма.ДанныеФайлаПесни.ПутьКФайлу = ПолучитьИмяВременногоФайла(Форма.ДанныеФайлаПесни.ТипФайла);
ДвоичныеД анные.Записать(Форма.ДанныеФайлаПесни.ПутьКФайлу);
Исключение
Форма.ДанныеФайлаПесни.ПутьКФайлу = "";
ТекстОшибки = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке());
КонецПопытки;
#КонецЕсли
КонецПроцедуры
// Процедура - Звуковое оповещение _ перед закрытием.
//
// Параметры:
// Форма - ФормаКлиентскогоПриложения - Форма.
//
&НаКлиенте
Процедура ВоспроизведениеПесни_ПередЗакрытием(Форма) Экспорт
#Если НЕ ВебКлиент Тогда
Если Форма.ДанныеФайлаПесни = Неопределено
ИЛИ НЕ ЗначениеЗаполнено(Форма.ДанныеФайлаПесни.ПутьКФайлу) Тогда
Возврат;
КонецЕсли;
Попытка
НачатьУдалениеФайлов(Неопределено, Форма.ДанныеФайлаПесни.ПутьКФайлу);
Исключение
ТекстОшибки = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке());
КонецПопытки;
#КонецЕсли
КонецПроцедуры
#КонецОбласти
#КонецОбласти
0
комментарии
____________________
Перепечатка текста и фотографий разрешена при наличии прямой ссылки на источник