Имя: Пароль:
1C
1С v8
УФ не загружается внешняя компонента
0 askharlov
 
29.07.14
00:56
Доброго времени суток всем!

Проблемка: не загружается внешняя компонента в УФ.
В обычных формах отрабатывает, в УФ не работает ни &НаКлиенте, ни &НаСервере. Вот код:

Попытка
    ЗагрузитьВнешнююКомпоненту("C:\Program Files (x86)\1cv82\8.2.18.61\bin\rs232.dll");
Исключение
    Сообщить(ОписаниеОшибки());
    Возврат Ложь;
КонецПопытки;

На УФ выдает ошибку "{Форма.Форма.Форма(22)}: Ошибка при вызове метода контекста (ЗагрузитьВнешнююКомпоненту): Ошибка при загрузке внешней компоненты"

Книгу знаний http://kb.mista.ru/article.php?id=419 прочитал. Не помогло.
Компоненту успешно зарегистрировал (хоть на обычных формах это не требовалось), наличие веток в реестре проверил.
В чем еще может быть проблема?

Пока писал возникла мысль: а может сама компонента работать только с обычными формами и не работать с управляемыми? Эта компонента работает с COM-портом.
1 askharlov
 
29.07.14
00:56
+(1) Загружал 1С под админом
2 jsmith
 
29.07.14
01:18
я делаю так
    Макет=ОбщийМодульМакет.ЗаписатьМакетНаДиск();
    ИмяФайла=КаталогВременныхФайлов()+"Hook1c.dll";
    Макет.Записать(ИмяФайла);
    Результат = ПодключитьВнешнююКомпоненту(ИмяФайла, "Hook", ТипВнешнейКомпоненты.Native);
3 jsmith
 
29.07.14
01:21
ну и далее
&НаКлиенте
Процедура ПриОткрытии(Отказ)    

    КомпонентаKeyBoardHook = Новый("AddIn.Hook.KeyboardHook");    
    
КонецПроцедуры

&НаКлиенте
Процедура ПриЗакрытии()
    
    КомпонентаKeyBoardHook    = Неопределено;
    
КонецПроцедуры
4 jsmith
 
29.07.14
01:23
и это ещё
&НаСервере
Функция ЗаписатьМакетНаДиск() Экспорт
    Макет    = ПолучитьОбщийМакет("Hook1c");
    Возврат Макет;
КонецФункции
5 jsmith
 
29.07.14
01:24
мда, явно требуется рефакторинг
хорошо, что напомнили
6 askharlov
 
29.07.14
15:00
(2) Спасибо. А какой код в процедуре  Макет=ОбщийМодульМакет.ЗаписатьМакетНаДиск() ?
У меня самописка и этого модуля нет, в тех парочке конфигураций на УФ, которые мне доступны этого модуля тоже нет.
Скинь мне, пож-та, листинг кода.
7 askharlov
 
29.07.14
15:08
+ (0) В продолжении темы:
Нашел в Интернете код:
Попытка
    УстановитьВнешнююКомпоненту("C:\Program Files (x86)\1cv82\8.2.18.61\bin\rs232.zip");
    //ПодключитьВнешнююКомпоненту(КаталогПрограммы() + "rs232.zip", "rs232", ТипВнешнейКомпоненты.Native);
Исключение
    Сообщить("Не удалось загрузить внешнюю компоненту!");
    Возврат Ложь;
КонецПопытки;

Исключения не возникает, но УстановитьВнешнююКомпоненту выдает ошибку: "Установка внешней компоненты не выполнена! В процессе установки произошла ошибка!"
Строку ПодключитьВнешнююКомпоненту пока закомментировал, так как ошибка возникает на предыдущей строчке.
8 askharlov
 
29.07.14
15:23
+(0) Пробую подключить внешнюю компоненту на сервере без установки:
&НаСервере
Функция ОткрытьПорт()
    Попытка
        ПодключитьВнешнююКомпоненту(КаталогПрограммы() + "rs232.dll", "rs232", ТипВнешнейКомпоненты.Native);
    Исключение
        Сообщить("Не удалось загрузить внешнюю компоненту!");
        Возврат Ложь;
    КонецПопытки;

    Попытка
        КОМПорт = Новый("Addin.rs232");
        КОМПорт.ОткрытьПорт(Порт.Наименование);
        Возврат Истина;
    Исключение
        Сообщить("Не удалось открыть порт " + Порт);
        Возврат Ложь;
    КонецПопытки;

КонецФункции

Получаю ошибку уже на строку Новый("Addin.rs232"):
"Тип не определен (Addin.rs232)"