Имя: Пароль:
1C
 
Помогите прикрутить Wndows Media к 1С
0 _stay true_
 
02.08.16
09:15
Здравствуйте. В "Документообороте" Корп хотим реализовать возможность прослушивания звуковых файлов с помощью Windows Media Player(у нас телефонные разговоры записываются и хранятся в отдельном томе для файлов, к которому есть доступ из 1С. Вот теперь назрел вопрос, как было бы здорово реализовать прослушивание файлов прямо из программы без всяких закачек и прочего.

Сделал отдельную форму, на неё добавил реквизит "ВМП" с типом "Строка", связал с реквизитом формы, указав вид "Поле HTML-документа. В процедуре "ПриСозданииНаСервере" открываемой формы указал следующий код:

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    
    ХЗ = Новый ХранилищеЗначения(Параметры.ПутьКФайлу);
    НС = ПолучитьНавигационнуюСсылку(ХЗ);
    
    ВМП  = "<HTML><OBJECT id=WMP classid=CLSID:6BF52A52-394A-11D3-B153-00C04F79FAA6 width=""100%"" height=""100%""><PARAM NAME=""URL"" VALUE=""""><PARAM NAME=""rate"" VALUE=""1""><PARAM NAME=""balance"" VALUE=""0""><PARAM NAME=""currentPosition"" VALUE=""0""><PARAM NAME=""defaultFrame"" VALUE=""""><PARAM NAME=""playCount"" VALUE=""1""><PARAM NAME=""autoStart"" VALUE=""-1""><PARAM NAME=""currentMarker"" VALUE=""0""><PARAM NAME=""invokeURLs"" VALUE=""-1""><PARAM NAME=""baseURL"" VALUE=""><PARAM NAME=""volume"" VALUE=""50""><PARAM NAME=""mute"" VALUE=""0""><PARAM NAME=""uiMode"" VALUE=""full""><PARAM NAME=""stretchToFit"" VALUE=""-1""><PARAM NAME=""windowlessVideo"" VALUE=""0""><PARAM NAME=""enabled"" VALUE=""-1""><PARAM NAME=""enableContextMenu"" VALUE=""-1""><PARAM NAME=""fullScreen"" VALUE=""0""><PARAM NAME=""SAMIStyle"" VALUE=""""><PARAM NAME=""SAMILang"" VALUE=""""><PARAM NAME=""SAMIFilename"" VALUE=""""><PARAM NAME=""captioningID"" VALUE=""""><PARAM NAME=""enableErrorDialogs"" VALUE=""0""><PARAM NAME=""_cx"" VALUE=""24262""><PARAM NAME=""_cy"" VALUE=""15319""></OBJECT></HTML>";

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



протестил - проигрыватель отображается на форме.
Порылся в сети, нашёл инфу, как туда файл подсунуть:

&НаКлиенте
Процедура Воспроизвести(Команда)
       ЭлементВК = Элементы.ВМП.Документ.getElementById("WMP"); // Тут ищем элемент
      Если ЭлементВК = Неопределено Тогда
            Сообщить("Не найден объект компоненты!");  // Здесь понятно
              Возврат;
      КонецЕсли;

      Элементы.ВМП.ТолькоПросмотр = Ложь;   // Тут тоже понятно
      WMP = ЭлементВК.contentDocument;                       // Тут получаем контент компоненты    
      Режим = РежимДиалогаВыбораФайла.Открытие;

      ДиалогВыбораФайла = Новый ДиалогВыбораФайла(Режим);          // Создаем диалог выбора файла
      ДиалогВыбораФайла.Фильтр       = "Все файлы (все)|*.*";      // Здесь понятно
      ДиалогВыбораФайла.Заголовок = "Выберите медиафайл";              // Здесь понятно

      Если ДиалогВыбораФайла.Выбрать() Тогда
            ПутьКМедиаФайлу = ДиалогВыбораФайла.ПолноеИмяФайла;
      
            // В зависимости от варианта объекта запись полного пути к файлу
            // производится либо в свойство FileName, либо в свойство URL.
      
            Попытка
                  WMP.Filename = ПутьКМедиаФайлу;
            Исключение    
                  WMP.URL = ПутьКМедиаФайлу;
            КонецПопытки;    

      КонецЕсли;
КонецПроцедуры



Отрабатывает, ошибки не выдает, записывает в WMP.URL полный путь к файлу. И всё. Ничего далее не происходит.

Кто сталкивался с подобным - поделитесь мудростью:)
1 Lexey_
 
02.08.16
09:20
(0) Play нажимал?
2 _stay true_
 
02.08.16
09:22
(1) Да. Ничего не происходит.
3 _stay true_
 
02.08.16
09:31
Пробежался ещё раз отладчиком по коду - в URL ничего не записывает, хотя ошибка не вылетает. как была пустая строка, так и остается, хотя ошибок не возникает.

И ещё, пардоньте: только что обнаружил передавленный шнур на наушниках, сбегаю, заменю :)
4 Lexey_
 
02.08.16
09:37
(3) а вообще:
WMP = Элементы.ВМП.Документ.getElementById("WMP");
WMP.URL = ПутьКМедиаФайлу;
5 ИС-2
 
naïve
02.08.16
09:40
в обычных формах достаточно запустить открытие приложения методом запуститьприложение и он запустит сам нужно приложение.
6 _stay true_
 
02.08.16
09:45
(5) Это, увы, управляемые((( Тут с ActiveX приходится неслабо так помучиться.
7 _stay true_
 
02.08.16
09:50
WMP.PlayState = 9;
WMP.playerApplication ругается "Произошла исключительная ситуация (0xc00d0fd3)", видимо, на отсутствие динамиков((( А админ наушники тащить не торопится(((
8 Lexey_
 
02.08.16
09:54
(7) пробовал (4)?
9 _stay true_
 
02.08.16
10:22
(8) Админ "уши" притараканил. Заработало) Даже в веб-клиенте под IE)))
10 Nuobu
 
02.08.16
10:24
(9) Представляю следующую тему: 1С не включается, что делать? Подключи гарнитуру. - Вау, спасибо, сам не додумался.
11 _stay true_
 
02.08.16
11:28
Ещё один Вопрос: решил поиграться дальше, прикрутить виндовую смотрелку картинок и пдф по аналогии. с PDF получилось, а вот с картинками беда. Видимо, неверно указал CLASSID смотрелки. Вот код:

&НаСервере
ПриСозданииНаСервере:

Фото = "<HTML><OBJECT id=ImgLook classid=CLSID:D3E34B21-9D75-101A-8C3D-00AA001A1652 width=""100%"" height=""100%"">";

&НаКлиенте
ОткрытьКартинку(команда)

ЭлементВК = Элементы.Картинка.Документ.getElementById("ImgLook");
ЭлементВК.ContentDocument Src = ПутьКФайлуНаСервере;
12 _stay true_
 
02.08.16
11:30
ЭлементВК.Src = ПутьКФайлуНаСервере;


Вот для PDF, где всё работает:

ПДФ      = "<HTML><OBJECT id=PDFReader classid=CLSID:CA8A9780-280D-11CF-A24D-444553540000 width=""100%"" height=""100%"">";

ЭлементВК = Элементы.ПДФ.Документ.getElementById("PDFReader");
ЭлементВК.Src = ПутьКФайлуНаСервере;
13 _stay true_
 
02.08.16
12:52
Апаю тему.))) Так и не могу разобраться с картинками. Если кто сталкивался - прошу помощи
14 Garykom
 
гуру
02.08.16
13:00
Это http://catalog.mista.ru/public/125913/ не пойдет?
15 _stay true_
 
02.08.16
13:50
(14) thx, bro! На досуге поковыряюсь!

А пока уже успел навелосипедить:

Попытка
Фото = "<HTML><BODY><img src=""file:\\"+ПутьКФайлуНаСервере+"""width=""100%""</img></BODY></HTML>";
Исключение
Сообщить(ОписаниеОшибки());
КонецПопытки;          

Не то, что я хотел, но юзеры довольны, и пофигу))