1С 8.3 Произнести текст голосом
Данные > Примеры кода 1С > 1С 8.3 Диалоги
Перейти в раздел примеры кода 1С 8.3:

Аудио звук в 1С 8.3:
&НаКлиенте
Процедура АудиоКоманда(Команда)
// Работает по умолчанию во всех современных ОС, которые поддерживают .NET Framework 4
АудиоГолос = Новый COMObject("SAPI.SpVoice");
АудиоГолос.Speak("Я верю, друзья, караваны ракет.
|Помчат нас вперед, от звезды до звезды.
|На пыльных тропинках далеких планет.
|Останутся наши следы.");
КонецПроцедуры
Процедура АудиоКоманда(Команда)
// Работает по умолчанию во всех современных ОС, которые поддерживают .NET Framework 4
АудиоГолос = Новый COMObject("SAPI.SpVoice");
АудиоГолос.Speak("Я верю, друзья, караваны ракет.
|Помчат нас вперед, от звезды до звезды.
|На пыльных тропинках далеких планет.
|Останутся наши следы.");
КонецПроцедуры
Чтение аудио файла (асинхронно) в 1С 8.3:
&НаКлиенте
Процедура ВоспроизвестиАсинхронноАудиоФайл(Команда, ПутьКФайлу)
//Flags: https://docs.microsoft.com/en-us/previous-versions/windows/desktop/ms720892(v=vs.85)
АудиоГолос = Новый COMОбъект("SAPI.SpVoice");
ВоспроизвестиАсинхронно = Истина;
SVSFlagsAsync = 1;
SVSFIsFilename = 4;
Flags = ?(ВоспроизвестиАсинхронно, SVSFlagsAsync, 0) + SVSFIsFilename;
АудиоГолос.Speak(ПутьКФайлу, Flags);
КонецПроцедуры
Процедура ВоспроизвестиАсинхронноАудиоФайл(Команда, ПутьКФайлу)
//Flags: https://docs.microsoft.com/en-us/previous-versions/windows/desktop/ms720892(v=vs.85)
АудиоГолос = Новый COMОбъект("SAPI.SpVoice");
ВоспроизвестиАсинхронно = Истина;
SVSFlagsAsync = 1;
SVSFIsFilename = 4;
Flags = ?(ВоспроизвестиАсинхронно, SVSFlagsAsync, 0) + SVSFIsFilename;
АудиоГолос.Speak(ПутьКФайлу, Flags);
КонецПроцедуры
Пример реализации объявлений электронной очереди с помощью COMObject("SAPI.SpVoice") в 1С 8.3:
&НаСервере
Процедура ЗаполнитьТабло()
//Заполним вызванных
Запрос=Новый Запрос;
Запрос.Текст="ВЫБРАТЬ
| ЭлектроннаяОчередь.Услуга КАК Услуга,
| Электроннаябчередь.Талон КАК Талон,
| Электроннаябчередь.Окно КАК Окно,
| ЭлектроннаяОчередь.Вызов КАК Вызов
| ИЗ
| РегистрСведений.ЭлектроннаяОчередь КАК ЭлектроннаяОчередь
| ГДЕ
| ЭлектроннаяОчередь.Услуга В (&СписокУслуг)
| И ЭлектроннаяОчередь Организация = &Организация
| И ЭлектроннаяОчередь Окно В (&СписокОкон)
| И ЭлектроннаяОчередь.Терминал В (&СписокТерминалов)
| Вызов УБЫВ";
Запрос.УстановитьПараметр ("Организация", Объект.Табло.Организация);
Запрос.УстановитьПараметр ("СписокУслуг", СписокУслуг);
Запрос.УстановитьПараметр ("СписокОкон", СписокОкон);
Запрос.УстановитьПараметр ("СписокТерминалов" , СписокТерминалов);
ТаблицаОбрабатываемых=Запрос.Выполнить().Выгрузить();
ТекущиеВызовы.Очистить();
Для Каждого Стр Из ТаблицаОбрабатываемых Цикл
Если ТекущийВызов<>""+Стр.Услуга.Префикс+Стр.талон+"=>"Стр.Окно Тогда
ТекущийВызов=""+Стр.Услуга.Префикс+Стр.талон+"=>"Стр.Окно;
ДатьСигнал=Истина;
ДатьСигнал=Истина;
ДатьСигнал=Истина;
АудиоГолос = Новый COMObject("SAPI.SpVoice");
АудиоГолос.Rate = 3;
АудиоГолос.Volume = 100;
АудиоГолос.Speak("Талон номер " + ""+Стр.Услуга.Префикс+Стр.талон + ". Пройдите к - "+ Стр.Окно);
АудиоГолос.Speak("Талон номер " + ""+Стр.Услуга.Префикс+Стр.талон + ". Пройдите к - "+ Стр.Окно);
КонецЕсли;
НоваяСтрока=текущиеВызовы.Добавить();
НоваяСтрока.Услуга=Стр.Услуга;
НоваяСтрока.Талон=Стр.Талон;
НоваяСтрока.ПредставлениеТалона=""+Стр.Услуга.Префикс+Стр. талон;
НоваяСтрока.окно=Стр.Окно;
//НоваяСтрока.разделитель="=>";
КонецЦикла;
Процедура ЗаполнитьТабло()
//Заполним вызванных
Запрос=Новый Запрос;
Запрос.Текст="ВЫБРАТЬ
| ЭлектроннаяОчередь.Услуга КАК Услуга,
| Электроннаябчередь.Талон КАК Талон,
| Электроннаябчередь.Окно КАК Окно,
| ЭлектроннаяОчередь.Вызов КАК Вызов
| ИЗ
| РегистрСведений.ЭлектроннаяОчередь КАК ЭлектроннаяОчередь
| ГДЕ
| ЭлектроннаяОчередь.Услуга В (&СписокУслуг)
| И ЭлектроннаяОчередь Организация = &Организация
| И ЭлектроннаяОчередь Окно В (&СписокОкон)
| И ЭлектроннаяОчередь.Терминал В (&СписокТерминалов)
|
| УПОРЯДОЧИТЬ ПО | Вызов УБЫВ";
Запрос.УстановитьПараметр ("Организация", Объект.Табло.Организация);
Запрос.УстановитьПараметр ("СписокУслуг", СписокУслуг);
Запрос.УстановитьПараметр ("СписокОкон", СписокОкон);
Запрос.УстановитьПараметр ("СписокТерминалов" , СписокТерминалов);
ТаблицаОбрабатываемых=Запрос.Выполнить().Выгрузить();
ТекущиеВызовы.Очистить();
Для Каждого Стр Из ТаблицаОбрабатываемых Цикл
Если ТекущийВызов<>""+Стр.Услуга.Префикс+Стр.талон+"=>"Стр.Окно Тогда
ТекущийВызов=""+Стр.Услуга.Префикс+Стр.талон+"=>"Стр.Окно;
ДатьСигнал=Истина;
ДатьСигнал=Истина;
ДатьСигнал=Истина;
АудиоГолос = Новый COMObject("SAPI.SpVoice");
АудиоГолос.Rate = 3;
АудиоГолос.Volume = 100;
АудиоГолос.Speak("Талон номер " + ""+Стр.Услуга.Префикс+Стр.талон + ". Пройдите к - "+ Стр.Окно);
АудиоГолос.Speak("Талон номер " + ""+Стр.Услуга.Префикс+Стр.талон + ". Пройдите к - "+ Стр.Окно);
КонецЕсли;
НоваяСтрока=текущиеВызовы.Добавить();
НоваяСтрока.Услуга=Стр.Услуга;
НоваяСтрока.Талон=Стр.Талон;
НоваяСтрока.ПредставлениеТалона=""+Стр.Услуга.Префикс+Стр. талон;
НоваяСтрока.окно=Стр.Окно;
//НоваяСтрока.разделитель="=>";
КонецЦикла;
//...
КонецПроцедуры1
комментарий
Ля
27 фев 2021
Ахха незнал что 1с умеет говорить. Ещё ж такую песню подобрал
____________________
Перепечатка текста и фотографий разрешена при наличии прямой ссылки на источник