Имя: Пароль:
1C
1С v8
Как узнать идентификатор Adobe reader для метода ДобавитьActiveX()?
0 Prog111
 
21.01.16
08:48
Хочу программно добавить на обычную форму эскиз PDF. Установил Adobe reader, теперь при действии "Форма" - "Вставить ActiveX" появился пункт "Adobe PDF Reader". Но я хочу создавать элемент формы программно, и потому элемент не вставляю изначально через форму, а пишу код для программной вставки:

СканПДФ = ЭлементыФормы.ДобавитьActiveX("Adobe PDF Reader", СканПДФ, Истина,);

Но выходит ошибка: Ошибка при вызове метода контекста (ДобавитьActiveX)

по причине:
Неправильный идентификатор ActiveX (Adobe PDF Reader)


Вопрос - как определить, какой должен быть идентификатор?
1 asady
 
21.01.16
09:04
(0) AcroPDF.PDF.1 попробуй
2 ЧеловекДуши
 
21.01.16
09:05
Посмотреть в реегистре
https://forums.adobe.com/thread/1386600?start=0&tstart=0
3 Prog111
 
21.01.16
09:22
(1) Спасибо, получилось!

Теперь возник другой вопрос - а как удалить ранее созданный элемент АктивеХ?

Если пишу так:

ЭлементПДФ = ЭлементыФормы.Найти("СканПДФ");    
    Если ЭлементПДФ <> Неопределено Тогда
        ЭлементыФормы.Удалить(ЭлементПДФ);
    КонецЕсли;

то возвращает Неопределено, хотя элемент на форме был создан, и более того, он визуально виден на форме.
4 Prog111
 
21.01.16
09:23
(3) И при отладке в множестве "ЭлементыФормы" нет элемента ActiveX, хотя визуально он присутствует.
5 НЕА123
 
21.01.16
09:35
(4)
как вариант.
сделать СканПДФ переменной модуля и удалять непосредственно.
6 Prog111
 
21.01.16
09:43
(5) Попробовал - но не получается:


Процедура ПоказатьЭскиз(ТекИмяФайла)
    СканПДФ = Неопределено;
        
    ЭлементПДФ = ЭлементыФормы.Найти("СканПДФ");    
    Если ЭлементПДФ <> Неопределено Тогда
        ЭлементыФормы.Удалить(ЭлементПДФ);
    КонецЕсли;

    Если Прав(ТекИмяФайла, 3) = "pdf" Тогда
        
        СканПДФ = ЭлементыФормы.ДобавитьActiveX("AcroPDF.PDF.1", СканПДФ, Истина,);
        СканПДФ.Видимость = Истина;
        СканПДФ.Верх = 78;
        СканПДФ.Лево = 457;
        СканПДФ.Высота = 447;
        СканПДФ.Ширина = 261;
        
        СканПДФ.LoadFile(ТекИмяФайла);

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



В эту процедуру передаю имя файла, и если это pdf - то надо отобразить эскиз файла на форме. Когда передаю иное имя файла (не пдф) - то на форме элемент ActiveX не исчезает, продолжает висеть...
7 НЕА123
 
21.01.16
09:47
(6)
ммм...

СканПДФ = Неопределено;
может закомментировать?
похоже эта строчка убивает.
8 НЕА123
 
21.01.16
09:48
(7)
вообще - хз.
9 Prog111
 
21.01.16
09:48
(7) Я её как раз добавил в попытке удалить уже созданный ранее элемент ActiveX - но всё равно не удаляется.
10 НЕА123
 
21.01.16
09:49
Процедура ПоказатьЭскиз(ТекИмяФайла)

    Если СканПДФ <> Неопределено Тогда
        ЭлементыФормы.Удалить(СканПДФ);
    КонецЕсли;

    Если Прав(ТекИмяФайла, 3) = "pdf" Тогда
        
        СканПДФ = ЭлементыФормы.ДобавитьActiveX("AcroPDF.PDF.1", СканПДФ, Истина,);
        СканПДФ.Видимость = Истина;
        СканПДФ.Верх = 78;
        СканПДФ.Лево = 457;
        СканПДФ.Высота = 447;
        СканПДФ.Ширина = 261;
        
        СканПДФ.LoadFile(ТекИмяФайла);

КонецПроцедуры
11 asady
 
21.01.16
10:11
(0)
вместо:
СканПДФ = ЭлементыФормы.ДобавитьActiveX("AcroPDF.PDF.1", СканПДФ, Истина,);

попробуй
СканПДФ = ЭлементыФормы.ДобавитьActiveX("AcroPDF.PDF.1", "СканПДФ", Истина,);
12 asady
 
21.01.16
10:12
(11)+

точнее:
элементПДФ = ЭлементыФормы.ДобавитьActiveX("AcroPDF.PDF.1", "СканПДФ", Истина,);
далее по тексту
13 asady
 
21.01.16
10:38
(11)+ попробуй такой вариант:

Процедура ПоказатьЭскиз(ТекИмяФайла)

    Если ЭлементыФормы["СканПДФ"] <> Неопределено Тогда
        ЭлементыФормы.Удалить(ЭлементыФормы["СканПДФ"]);
    КонецЕсли;

    Если Прав(ТекИмяФайла, 3) = "pdf" Тогда
        
ЭлементыФормы.ДобавитьActiveX("AcroPDF.PDF.1", "СканПДФ", Истина,);
        ЭлементыФормы["СканПДФ"].Видимость = Истина;
        ЭлементыФормы["СканПДФ"].Верх = 78;
        ЭлементыФормы["СканПДФ"].Лево = 457;
        ЭлементыФормы["СканПДФ"].Высота = 447;
        ЭлементыФормы["СканПДФ"].Ширина = 261;
        
        ЭлементыФормы["СканПДФ"].LoadFile(ТекИмяФайла);

КонецПроцедуры
Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование. Фредерик Брукс-младший