Все таки "Новый COMObject" и "без ActiveX" - взаимоисключающие параграфы.
Я бы "без ActiveX" убрал из названия публикации.
А то такое чувство, что повелся на "без голоданий и диет", но понял, что чудес не бывает.
(4)
А русский язык понимает? И в частности не нормативную лексику???
А то я нарулю в 1С-ке всяких проверок,
если юзер чё не то нажмет -
- она его тремя буквами и тремя этажами!!!!!
Нет, на нынешней работе не прокатит - тогда придется на все компы колонки покупать...
Фин.директор - удавится. Он и так всех заставил печатать договора с двух сторон печатать,
не взирая на замяте бумаги и повышенный износ принтеров.
;))))
(6) yuraos, у меня русский не держит, на Windows Server, только по английски. Но у меня просто русский MUI установлен. Возможно на полной русской версии и заговорит по русски. Должен, по идее, так как говорилка встроена для поддержки людей с ограниченными возможностями.
А то! Сейчас такие студенты пошли, что ого-го! Что напишут на русском - то комп и выполняет.
Без дураков.
(9) zsrg,
Новый COMObject прямого отношения к ActiveX не имеет
Браво!
БравО!!!
А к чему COM, реализованный в 1С, имеет отношение?
Автор, а что "опустил", что этот "SAPI.SpVoice" должен быть установлен прежде всего?
И, наконец, "решение простое и 100% работающее" - это воспроизведение звуковых файлов посредством открытия через 1С.
И как в анекдоте с динозавром: "50 на 50 - либо заиграет (если есть драйвера и звуковуха), либо нет" :)
Так чисто для прикола, наверное можно поюзать, но в реальных базах врядли.
Говорилку пользователи отключают или сразу или максимум через день - мешает работать.
Звуковые файлы можно проигрывать
ЗапуститьПриложение(ПутьДоФайла)
и не надо думать какой виндовс, какой формат файла ...
А вот подать сигнал (не работающая почему-то нигде и никогда Сигнал()) я предпочитаю баяном. Например:
Баян=CreateObject("DynamicWrapper");
Баян.Register("KERNEL32.DLL", "Beep", "i=ll", "f=s", "r=l");
Баян.Beep(330*4,300);
Баян.Beep(494*4,200);
Работает тоже в любом виндовсе, звучать будет через все, что сможет, даже через динамик системного блока ...
Не полифония, конечно, но можно довольно затейливые рулады воспроизвести ...
(15) {Форма.Форма.Форма(3,6)}: Процедура или функция с указанным именем не определена (CreateObject)
Баян=<<?>>CreateObject("DynamicWrapper"); (Проверка: Толстый клиент (обычное приложение))
(20) zsrg,
Скрипт = Новый COMОбъект("MSScriptControl.ScriptControl");
Скрипт.Language="vbscript";
Скрипт.AddCode("
|Function Main()
|Set oVoice = CreateObject(""SAPI.SpVoice"")
|set oSpFileStream = CreateObject(""SAPI.SpFileStream"")
|oSpFileStream.Open ""D:\Muz\1.wav""
|oVoice.SpeakStream oSpFileStream
|End Function");
Скрипт.Run("Main");
Так работает на сервере но вопрос как записать в место жесткой привязки к пути значение например реквизита или константы!?
Ошибка при вызове метода контекста (SpeakStream): Произошла исключительная ситуация (0x80070057)
oVoice.SpeakStream(oSpFileStream);
по причине:
Произошла исключительная ситуация (0x80070057)
но звук воспроизводит!
Но есть одно "но". Как сделать, чтобы 1С не ждала окончания воспроизведения звука, а продолжала работать?
Как, например, через WshShell.Run(,0,0) это замутить?
oVoice = Новый COMObject("SAPI.SpVoice");
oSpFileStream = Новый COMObject("SAPI.SpFileStream");
oSpFileStream.Open(ПутьДоФайла);
oVoice.SpeakStream(oSpFileStream);
oSpFileStream.Close();
в процедуру.
Вызов ее, как написано выше, производится только &НаКлиенте
Почему-то вызов этой процедуры (&НаКлиенте Посигналить();) не производится: программа не находит ее. А из других клиентских - пожалуйста.
Столкнулся с тем, что при выполнении кода выходила ошибка 0x80045003
Решение: формат звукового файла .wav обязательно должен быть mono, а не stereo.
Конвертировали с помощью плагина AIMP.