Имя: Пароль:
1C
1С v8
УФ. ActiveX
0 pessok
 
02.03.12
11:54
Всем доброго времени суток. Возникла задачка - динамически создавать на УФ различные элементы ActiveX. Это вывод прикрепленных к объекту файлов.
На девтрейнинге http://devtrainingforum.v8.1c.ru/forum/thread.jsp?id=557642
усмотрел как можно вообще осуществить вывод ActiveX на УФ, но дальше начались проблемы... Код:


&НаКлиенте
Процедура СписокПриАктивизацииСтроки(Элемент)
   //Формируем табличный документ
   Массив = Новый Массив;
   Массив.Добавить(Элементы.Список.ТекущиеДанные.Ссылка);
   
   ТабличныйДокумент = Документы.ЗаявкаНаРасходованиеСредств.ПечатьЗаявки(Массив, Неопределено);
   
   //формируем скан документа основания
   ИмяФайла = ПолучитьИмяВременногоФайла(".pdf");
   ОбъектыХранилища = ПолучитьСканДокумента(Массив[0]);
   
   Если ОбъектыХранилища.Количество() = 0 Тогда
       Сообщить("К заявке не приложено файлов!", СтатусСообщения.Важное);
       Возврат;    
   ИначеЕсли ОбъектыХранилища.Количество() > 1 Тогда
       Сообщить("К заявке приложено более одного файла, вывод просмотра невозможен!", СтатусСообщения.Информация);
       Возврат;
   Иначе
       ОбъектХранилища = ОбъектыХранилища[0];
       Если ОбъектХранилища.ВидДанных = Перечисления.ВидыДополнительнойИнформацииОбъектов.Файл Тогда
           ОбъектХранилища.Хранилище.Получить().Записать(ИмяФайла);
           Если Прав(ОбъектХранилища.ИмяФайла, 3) = "pdf" Тогда
               Скан = "<HTML><OBJECT id=PDFReader classid=CLSID:CA8A9780-280D-11CF-A24D-444553540000 width=""100%"" height=""100%"">";    
               ЭлементВК = Элементы.Скан.Документ.getElementById("PDFReader");
               ЭлементВК.Src = ИмяФайла;
           ИначеЕсли Прав(ОбъектХранилища.ИмяФайла, 3) = "xls" Или Прав(ОбъектХранилища.ИмяФайла, 4) = "xlsx" Тогда
               Скан = "<HTML><OBJECT id = ExcelLook classid=CLSID:00024500-0000-0000-C000-000000000046 width=""100%"" height=""100%"">";
               ЭлементВК = Элементы.Скан.Документ.getElementById("ExcelLook");
               ЭлементВК.WorkBooks.Open(ИмяФайла);
           ИначеЕсли Прав(ОбъектХранилища.ИмяФайла, 3) = "jpg" Или Прав(ОбъектХранилища.ИмяФайла, 4) = "jpeg" Или Прав(ОбъектХранилища.ИмяФайла, 3) = "gif" Или Прав(ОбъектХранилища.ИмяФайла, 3) = "bmp" Или Прав(ОбъектХранилища.ИмяФайла, 3) = "png" Тогда
               Скан = "<HTML><OBJECT id=ImgLook classid=CLSID:D3E34B21-9D75-101A-8C3D-00AA001A1652 width=""100%"" height=""100%"">";
               ЭлементВК = Элементы.Скан.Документ.getElementById("ImgLook");
               ЭлементВК.Src = ИмяФайла;
           Иначе
               Сообщить("Невозможно определить тип прикрепленного файла!", СтатусСообщения.Информация);
           КонецЕсли;
           УдалитьФайлы(ИмяФайла);
       Иначе
           Скан = "<HTML><OBJECT id=ImgLook classid=CLSID:D3E34B21-9D75-101A-8C3D-00AA001A1652 width=""100%"" height=""100%"">";
           ЭлементВК = Элементы.Скан.Документ.getElementById("ImgLook");
           ЭлементВК.Src = ИмяФайла;
       КонецЕсли;
       
   КонецЕсли;
КонецПроцедуры


Собственно затыков несколько:
1) Скан = "бла" отрабатывает как надо, но

ЭлементВК = Элементы.Скан.Документ.getElementById("бла");

отрабатывает только если он уже был создан в предыдущем вызове обработчика....

2) непонятно, как это добро отлаживать...
к примеру,


ЭлементВК.WorkBooks.Open(ИмяФайла);

которое для экселя, не находит поле WorkBooks, хотя CLSID указан верно. В общем, может у кого есть опыт с подобного рода извратами? Заранее спасибо. И да, обычную форму запользовать нельзя, к сожалению...
1 pessok
 
02.03.12
12:21
ап
2 pessok
 
02.03.12
12:34
ау... я понимаю, что пятница, но все же :)
3 pessok
 
02.03.12
12:56
ну еще разочек ап...
4 pessok
 
02.03.12
13:34
человеки, ау...
5 pessok
 
02.03.12
15:00
ап
6 wald
 
02.03.12
15:15
Тема актуальная, помочь не могу, могу только апнуть еще раз!
7 pessok
 
02.03.12
15:22
Эх, жуть то какая. Ну я пока изгаляюсь, напишу, если что надумаю
Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование. Фредерик Брукс-младший