1С 8.3 Воспроизвести песню - Программист 1С Минск. Автоматизация бизнеса.

Перейти к контенту

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", АдресФайла);
   КонецЕсли;

   Форма.КодЗапускаПесни = СтрШаблон("
  | <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
комментарии
____________________
Copyright©, «Программист 1С в г.Минске», 05.07.2023
Перепечатка текста и фотографий разрешена при наличии прямой ссылки на источник
Назад к содержимому