Меню

Ошибка загрузки компонента addin

Ключевые слова: внешняя компонента, ошибка, отсутствует, CLSID, загрузка, не загружается, объект, компонента, DLL, реестр

Загрузка внешних компонент в 1С:Предприятие версии 8

    ЗагрузитьВнешнююКомпоненту("E:EventsEvents.dll"); 
    test = Новый("Addin.Events");
    Сообщить(test.CreateGUID());

В отличие от 7.7 необходимо указывать полный путь к DLL (или положить файл DLL в папку BIN платформы 1С:Предприятие). Вместо СоздатьОбъект(«Addin.Имя») используется Новый(«Addin.Имя»), использовать при этом ключевое слово COMОбъект не нужно.

Хранение записей о внешних компонентах в реестре Windows

Зарегистрированная внешняя компонента хранится в реестре следующим образом.

Предположим, что у нас есть внешняя компонента E:EventsEvents.dll.

В 1С мы пишем:

ЗагрузитьВнешнююКомпоненту("e:EventsEvents.dll");
vk=СоздатьОбъект("Addin.Events");

Теперь зайдем в программу regedit.exe (Пуск-Выполнить-Regedit.exe).

Если регистрация прошла успешно, то в реестре мы увидим следующие записи (я сделал поиск по подстроке «AddIn.Events» в редакторе реестра regedit.exe, нажав сочетание клавиш Ctrl-F):

[HKEY_CLASSES_ROOTAddIn.EventsClsid]
@="{2E5E6B2C-EFE0-4872-9AB6-DF187B9CE397}"

[HKEY_CLASSES_ROOTCLSID{2E5E6B2C-EFE0-4872-9AB6-DF187B9CE397}]
@="V7 AddIn 2.0"

[HKEY_CLASSES_ROOTCLSID{2E5E6B2C-EFE0-4872-9AB6-DF187B9CE397}InprocServer32]
@="E:\Events\Events.dll"

[HKEY_CLASSES_ROOTCLSID{2E5E6B2C-EFE0-4872-9AB6-DF187B9CE397}ProgID]
@="AddIn.Events"

Значение {2E5E6B2C-EFE0-4872-9AB6-DF187B9CE397} является уникальным для каждого OLE-объекта идентификатором (CLSID). Его должен явно задать разработчик в коде внешней компоненты.

Значение ProgID, которое в нашем случае — «AddIn.Events» также задает разработчик внешней компоненты.

Чтобы в реестре появились эти записи, необходимы права доступа

Начиная с Windows 2000, обычный пользователь не имеет прав доступа к указанным выше ветвям реестра. Нужны права или администратора, или привилегированного пользователя Windows. После первой загрузки компонента пропишет себя в реестре, и ее смогут использовать и непривилегированные пользователи Windows.

Где 1С ищет внешнюю компоненту?

Если при загрузке внешней компоненты вы не указываете полный путь, такой как E:EventsEvents.dll или сетевой путь наподобие \ВашСерверПапкаГдеЛежатВКEvents.dll, то 1С ищет внешние компоненты

-относительно папки 1Cv7BIN (КаталогПрограммы())

-относительно каталога информационной базы (КаталогИБ())

Метод ЗагрузитьВнешнююКомпоненту(), обнаружив ВК по новому пути, обновляет ее регистрацию в реестре

Это означает, например, что на терминальном сервере программист, который вошел в тестовую базу, где лежит ВК, и потом ее стер, оставит у всех пользователей запись в реестре о несуществующей ВК.

Аналогичная проблема — когда ВК по данному пути недоступна тем или иным пользователям.

А поскольку пользователи не имеют права на изменение записей в реестре, то у них перестанет загружаться и внешняя компонента.

В 1С:Предприятие 8.0 убрана возможность загрузки ВК относительно каталога ИБ.

В 7.7 же, чтобы избежать проблем, всегда убирайте ВК из каталога ИБ, и прописывайте полные пути (или складывайте DLL в общую для всех пользователей папку BIN).

Кардинальное решение проблемы — VKLoader

Имеется компонента VKLoader.dll (автор — Александр Орефков), которая позволяет решить проблемы с регистрацией компонент.

http://openconf.1cpp.ru/vk/vkloader/

Цитата:

«vkloader (далее ВК) — внешняя компонента для 1С-Предприятия 7.7, которая может загружаться без ее регистрации в реестре, и загружать другие внешние компоненты без их регистрации. Предназначена для беспроблемной загрузки внешних компонент пользователями, не имеющими прав на запись в HKCR ветку реестра.

Принцип работы основан на перехвате обращения 1С к WinAPI функциям CLSIDFromProgID и CoCreateInstance.

Также ВК решает проблему «зависания» процесса 1С в памяти при закрытии программы при использовании несовсем корректно написанных сторонних внешних компонент».

Пример использования vkloader:

ЗагрузитьВнешнююКомпоненту("vkloader.dll"); //регистрации не требует
Загрузчик = СоздатьОбъект("ЗагрузчикВК");
Результат = Загрузчик.ЗагрузитьВК("Events.dll", "Addin.Events=2E5E6B2C-EFE0-4872-9AB6-DF187B9CE397");

Замечу, что сама vkloader «умеет» загружать себя без прав доступа к реестру.

Еще одно решение: RegsvrEx

Автор — AlexQC.

Регистрирует компоненты (OLE-объекты) в пользовательской ветке реестра.

http://infostart.ru/projects/index.php?id=559

Пример использования:

Попытка
    Объект=СоздатьОбъект("cool.object");
Исключение
    ИмяДЛЛ=КаталогИБ()+"cool.ocx";
    КомандаСистемы(КаталогИБ()+"regsvrex.exe /s /c "+ИмяДЛЛ);
    Попытка
        Объект=СоздатьОбъект("cool.object");
    Исключение
        Сообщить("Ошибка загрузки компоненты: "+ИмяDLL,"!");
    КонецПопытки;
КонецПопытки;

Самая простая причина неполадок

Очень часто причиной неработоспособности любого электронного прибора является отсутствие вилки в розетке. Аналогичная ситуация возникает с внешними компонентами, поэтому при их загрузке полезно проверять, а есть ли в наличии указанный файл DLL (к сожалению, этого не делает сам движок 1С:Предприятие 7.7).

    имяф="e:EventsEvents.dll";
    Если фс.СуществуетФайл(имяф)=0 Тогда
        Сообщить("Файл не найден: "+имяф,"!"); 
    КонецЕсли;    
    Если ЗагрузитьВнешнююКомпоненту(имяф)=0 Тогда
        Сообщить("Ошибка загрузки внешней компоненты: "+имяф);
    КонецЕсли;    
    vk=СоздатьОбъект("Addin.Events");

Дополнительно:

Для старта внешней компоненты DynamicModuleServer.dll на Windows Server 2003 необходимо добавить исполняемый файл (1cv7s.exe) в исключения из механизма Windows под названием DEP (Data Execution Prevention): Control Panel -> System -> Advanced ->Performance Settings ->Data Execution Prevention

См. также:

Книга знаний: PLUGIN_VKLOADER — загрузка внешних компонент без регистрации в реестре

16.05.2017

    20141107.png

Сразу у двух клиентов 11 июля 2014 после обеда при запуске вылетела Ошибка загрузки компоненты addin при запуске 1С платформы 8.3

Сразу у двух клиентов 11 июля 2014 после обеда при запуске вылетела Ошибка загрузки компоненты addin при запуске 1С платформы 8.3.
С первым пришлось помучаться, начал со стандартных тестирований, переустановки платформы, выгрузки-загрузки, но ничего не помогало,конфигурации на платформе 8.2 работали бесперебойно, тем временем конфигурации на 8.3 никак не хотели запускаться.
Последним решил залезть в антивирус Аваст, и вот тут то все и прояснилось, оказалось, что в заблокированный файлы попал файл addin.dll, восстановил и добавил в исключения.
Вывод: аваст выпустил «удачное обновление».
Итог: на примере Avast Internet Security, запускаем аваст — статистика — статус компонента — объектов сохранено в крантине, находим там addin, правой кнопкой — «восстановить и добавить в исключения», все, можно работать дальше; на примере avast endpoint protection, обслуживание — карантин.

 0 

   

Распечатать

1С 8.x : Как загрузить внешнюю компоненту?

Код 1C v 8.х

 Попытка 
ЗагрузитьВнешнююКомпоненту("scanopos.dll")
Исключение
Сообщить("Ошибка загрузки внешней компоненты!");
КонецПопытки;

Попытка
// Получить объект компоненты.
Объект = Новый("AddIn.Scanner");

Исключение
Сообщить("Не удалось создать объект внешней компоненты");
КонецПопытки;

Код 1C v 7.x

 //в качестве аргумента "Значение" в функцию передаётся имя файла внешней компоненты
//функция возвращает "1", если загрузка выполнена успешно, или "0", если внешнюю компоненту загрузить не получилось
Функция гВнешняяКомпонента_Загрузить(Значение) Экспорт
Состояние("Загрузка компоненты: "+Значение);
Если ЗагрузитьВнешнююКомпоненту(Значение)=1 Тогда
Возврат(1);
Иначе
Сообщить("Ошибка при загрузке компоненты: "+Значение,"!");
Возврат(0);
КонецЕсли;
КонецФункции

//этот код можно разместить в локальном модуле, в котором требуется использовать внешнюю компоненту
Если гВнешняяКомпонента_Загрузить("v7plus.dll")=0 Тогда
Возврат;
КонецЕсли;

При загрузке полезно проверять, а есть ли в наличии указанный файл DLL (к сожалению, этого не делает сам движок 1С:Предприятие 7.7).

Код 1C v 7.x

 имяф="e:EventsEvents.dll";
Если фс.СуществуетФайл(имяф)=0 Тогда
Сообщить("Файл не найден: "+имяф,"!");
КонецЕсли;
Если ЗагрузитьВнешнююКомпоненту(имяф)=0 Тогда
Сообщить("Ошибка загрузки внешней компоненты: "+имяф);
КонецЕсли;
vk=СоздатьОбъект("Addin.Events");

Topic: заблокировал файл addin, не пускает в 1с  (Read 9414 times)

0 Members and 1 Guest are viewing this topic.

REDACTED

Добрый день, форумчане
Подскажите, может кто сталкивался
Аваст заблокировал файл(ы), теперь нет возможности запустить 1С:ЗУП
В конфигрутор заходит, выгрузку сделать позволяет, но видимо удален файл самой платформы 1С:ЗУП, при запуске 1С пишет Ошибка загрузки компонента addin
В карантине последняя запись от 2013 года, где искать? куда смотреть? как восстановить работу 1с?
При этом 1С:Бухгалтерия работает
Всем зарарнее спасибо


Logged


REDACTED

У меня 1С Бухгалтерия базовая вообще не запускается, только конфигуратор. Пишет «Ошибка загрузки компоненты addin». В карантине пусто. Что делать то?


Logged


@moderators place thread to russian forum

А с чего Вы вообще взяли, что аваст что-то удалил?


REDACTED

Достойный ответ модератора)
Во время обновления 1С мелькнуло всплывающее сообщение красное от Аваста, как обычно бывает при блокировке чего-то непотребного.


Logged


Кто Вам сказал, что модератор? :)

Какое-то весьма интересно. Чтобы файл удалился надо было с этим Вам согласиться. То есть Вы нажали кнопку удаления, если оно и было. Так что же там какое-то было точно и было ли?


Продолжаем ванговать. Обновлялись с диска итс? Если да: повторите процесс и сделайте скриншот.
Или откуда это обновление?

P.S. Заархивируйте базу 1с. Переустановите программу и подключите бэкап.

« Last Edit: July 11, 2014, 05:57:43 PM by George_S »


Logged

www.belrus.net — Avast Distributor & AVG Distributor in Russia


1. Пожалуйста покажите скриншот ошибки 1С.

2. Вопрос не обязательный, но всё же: 1с лицензионный или стоит эмулятор?


REDACTED

1. 1c лицензия
2. Удалил не в процессе обновления, а в процессе запуска, т.е при входе в 1с при вводе имени и пароля
3. Было всплывающее сообщение. Ушло. Не подтверждала, даже прочесть не успела

Скриншот теперь толко на работе
Запуская 1с, выходит окно логин, пароль, ввожу, пишет «завершение работы» и выдает сообщение «Ошибка загрузки компонента addin»


Logged


Не программист, но погуглив addin понял, что не 1с само пострадало, а какой-то внешний модуль. Программист 1с есть штаный/нештатный который вычислит какой модуль надо переустановить?


« Last Edit: July 11, 2014, 08:04:07 PM by George_S »


Logged

www.belrus.net — Avast Distributor & AVG Distributor in Russia


…В карантине последняя запись от 2013 года, где искать? куда смотреть? …

Антивирус мог удалить файл без помещения в карантин. В таких случаях вместо файла можно найти только запись о соответствующем событии в журнале FileSystemShield.txt:
C:Documents and SettingsAll UsersApplication DataAVAST SoftwareAvastreportFileSystemShield.txt (XP)
C:ProgramDataAVAST SoftwareAvastreportFileSystemShield.txt (win7)


Logged


Бонзо, спасибо за пути к логу.

Автор темы и кого коснулось: скажите что за файл удалил аваст.


REDACTED

Спасибо откликнувшимся!
В пондельник отпишусь по решению проблемы, если не получится самой, приглашу специалиста 1 с


Logged


REDACTED

Так и есть, addin.dll помещён Avast-ом в карантин. Поищите повнимательнее, отсортируйте карантин по дате помещения файла туда (колонка «время передачи»).
Как найдёте — правая кнопка — «восстановить и добавить в исключения…».
Если не восстанавливается, значит надо то же самое сделать с правами администратора компьютера.
Если вообще никак, то добавить папку с 1С-ом в исключения Avast-а и переустановить 1С.


Logged


Twin
Дайте сэмпл файла. Чтобы отправить фальс авасту на исправление.


1с зависает при подключении внешней компоненты

Загрузка внешних компонент 1С: проблемы и решения

В статье описаны известные проблемы с загрузкой внешних компонент для 1С:Предприятие, и приведены способы их решения. Автор статьи: romix | Редакторы: mastervut
Последняя редакция №8 от 26.08.10 | История
URL: http://kb.mista.ru/article.php?id=419

Ключевые слова: внешняя компонента, ошибка, отсутствует, CLSID, загрузка, не загружается, объект, компонента, DLL, реестр

Загрузка внешних компонент в 1С:Предприятие версии 8

В отличие от 7.7 необходимо указывать полный путь к DLL (или положить файл DLL в папку BIN платформы 1С:Предприятие). Вместо СоздатьОбъект(«Addin.Имя») используется Новый(«Addin.Имя»), использовать при этом ключевое слово COMОбъект не нужно.

Хранение записей о внешних компонентах в реестре Windows

Зарегистрированная внешняя компонента хранится в реестре следующим образом.
Предположим, что у нас есть внешняя компонента E:EventsEvents.dll.
В 1С мы пишем:

Теперь зайдем в программу regedit.exe (Пуск-Выполнить-Regedit.exe).

Если регистрация прошла успешно, то в реестре мы увидим следующие записи (я сделал поиск по подстроке «AddIn.Events» в редакторе реестра regedit.exe, нажав сочетание клавиш Ctrl-F):

Значение <2e5e6b2c-efe0-4872-9ab6-df187b9ce397>является уникальным для каждого OLE-объекта идентификатором (CLSID). Его должен явно задать разработчик в коде внешней компоненты.

Значение ProgID, которое в нашем случае — «AddIn.Events» также задает разработчик внешней компоненты.

Чтобы в реестре появились эти записи, необходимы права доступа

Начиная с Windows 2000, обычный пользователь не имеет прав доступа к указанным выше ветвям реестра. Нужны права или администратора, или привилегированного пользователя Windows. После первой загрузки компонента пропишет себя в реестре, и ее смогут использовать и непривилегированные пользователи Windows.

Где 1С ищет внешнюю компоненту?

Если при загрузке внешней компоненты вы не указываете полный путь, такой как E:EventsEvents.dll или сетевой путь наподобие \ВашСерверПапкаГдеЛежатВКEvents.dll, то 1С ищет внешние компоненты

-относительно папки 1Cv7BIN (КаталогПрограммы())
-относительно каталога информационной базы (КаталогИБ())

Метод ЗагрузитьВнешнююКомпоненту(), обнаружив ВК по новому пути, обновляет ее регистрацию в реестре

Это означает, например, что на терминальном сервере программист, который вошел в тестовую базу, где лежит ВК, и потом ее стер, оставит у всех пользователей запись в реестре о несуществующей ВК.
Аналогичная проблема — когда ВК по данному пути недоступна тем или иным пользователям.
А поскольку пользователи не имеют права на изменение записей в реестре, то у них перестанет загружаться и внешняя компонента.

В 1С:Предприятие 8.0 убрана возможность загрузки ВК относительно каталога ИБ.

В 7.7 же, чтобы избежать проблем, всегда убирайте ВК из каталога ИБ, и прописывайте полные пути (или складывайте DLL в общую для всех пользователей папку BIN).

Кардинальное решение проблемы — VKLoader

Имеется компонента VKLoader.dll (автор — Александр Орефков), которая позволяет решить проблемы с регистрацией компонент.

Цитата:
«vkloader (далее ВК) — внешняя компонента для 1С-Предприятия 7.7, которая может загружаться без ее регистрации в реестре, и загружать другие внешние компоненты без их регистрации. Предназначена для беспроблемной загрузки внешних компонент пользователями, не имеющими прав на запись в HKCR ветку реестра.
Принцип работы основан на перехвате обращения 1С к WinAPI функциям CLSIDFromProgID и CoCreateInstance.
Также ВК решает проблему «зависания» процесса 1С в памяти при закрытии программы при использовании несовсем корректно написанных сторонних внешних компонент».

Пример использования vkloader:

Замечу, что сама vkloader «умеет» загружать себя без прав доступа к реестру.

Еще одно решение: RegsvrEx

Автор — AlexQC.
Регистрирует компоненты (OLE-объекты) в пользовательской ветке реестра.
http://infostart.ru/projects/index.php?id=559

Самая простая причина неполадок

Очень часто причиной неработоспособности любого электронного прибора является отсутствие вилки в розетке. Аналогичная ситуация возникает с внешними компонентами, поэтому при их загрузке полезно проверять, а есть ли в наличии указанный файл DLL (к сожалению, этого не делает сам движок 1С:Предприятие 7.7).

Источник

Зависает при создании COMОбъекта на стороне сервера

При исполнении такого кода в модуле менеджера документа серверной базы, сеанс соединения с базой зависает.

На локальной файловой базе всё проходит прекрасно.

Что еще надо сделать, чтобы взлетело?

Проблема не надуманна.

Хочу сделать, чтобы ФИО склонялось на сервере и передавалось уже в нужном падеже в веб-браузер клиента.

Если бы хоть какая-то ошибка выдавалась, было бы полегче.
А так вообще не понятно, Help.

(3) Пускай оно написало в никуда, согласен.
Но управление не возвращается из серверной процедуры.

Во внешней обработке написал:

Эффект тот же. Зависает при запуске через Файл-Открыть.

Еще в этой теме v8: 1С 8.2 зависает при подключении dll с опцией /CLR
говорилось, что:
«Подключение с использованием COM ВК доступно только на тонком клиенте, сервер признает только Native API. COM ВК сейчас запускать нельзя.»

(8) вранье. нормально ексель на сервере по сому работает,

просто большенство вк на 64к сервере не регистрирутся 🙂 тоесть это проблемма регистрации а не импользования

(6) Посмотрел.
(галочка «Разрешить взаимодействие с рабочим столом» не стоит)

Какого пользователя добавлять в группу пользователей DCOM?

но я-бы рекомендовал завести своего пользователя и под ним все установить, разшаривать систем не гуд.

кроме того не понятно как ты ставил сервер, 1с по дефолту устанавливаент СВОЕГО пользователя

(11) Не я устанавливал сервер 1СПредприятия.

Т.е. сначала попробовать добавить System в группу пользователей DCOM.

Если это поможет, то переделывать старт сервиса под отдельного юзера?

(11) Добавили в группу пользователей DCOM учётку System.
Не помогло. Всё так же зависает при запуске.

Выяснил, что при таком варианте создания COMОбъектов нужно обязательно указывать имя компьютера в конструкторе COMОбъекта.

Теперь отваливается с ошибкой:

Хотя «regsvr32 Padeg.dll» на сервере делал и соответствующий класс в реестре винды есть.

Создали COM+ приложение для этой dll, как описал Максим Радченко здесь: http://devtrainingforum.v8.1c.ru/forum/thread.jsp?id=555004 (2-ой пост сверху)

Ни под пользователем Локальная служба, ни Сетевая служба, ни даже под учёткой админа домена не работает.

Всё тот же Отказ в доступе.

Всё сделал так же, только п.4 не делал, и так работает.

>>Обязательно нужно для папки, в которой лежит Padeg.dll и файл словаря, который эта длл использует, разрешить чтение и выполнение сетевой службе (Network Service).
Без этого будет точно такая же ошибка с отказом в доступе.

После изменения прав NTFS обязательно Завершение и Пуск COM+ приложения.

vde69, кстати, если агент сервера запущен под системной учёткой, то никаких пользователей добавлять в группу DCOM не надо.

P.S. Пока всё работает, будет весело, если в пн работать перестанет =))

>>>После изменения прав NTFS обязательно Завершение и Пуск COM+ приложения.

по поводу второго параметра «имя компа» — не обязательно, только права нужно правильно на DCOM+ установить

Источник

УПП 1.3 иногда зависает на компьютере, к которому подключена ККМ с передачей данных АТОЛ

Иногда (совершенно рандомно) происходит следующая ситуация: УПП запускается нормально, но, при попытке открыть список приходных кассовых ордеров, зависает наглухо. Кэш чистили, комп перезагружали — ничего не помогает. К этому компьютеру подключена ККМ Атол 22Ф, на ней, соответственно печатаются чеки. Выяснил, что зависает на функции внешней компоненты СоздатьОбъектДрайвера(Объект, Модель, Параметры). Компьютер — Windows 10 Проф. База УПП клиент-серверная. В чем могут быть причины такого поведения?

Функция СоздатьОбъектДрайвера(Объект, Модель, Параметры) Экспорт

Результат = мНетОшибки;
ОписаниеОшибки = «»;
ИДУстройства = Неопределено;

Попытка
Макет = ПолучитьМакет(«ИнтеграционнаяКомпонента»);
Адрес = ПоместитьВоВременноеХранилище(Макет);
ПодключитьВнешнююКомпоненту(Адрес, «ИнтеграционнаяКомпонента», ТипВнешнейКомпоненты.Native);
Драйвер = Новый(«AddIn.ИнтеграционнаяКомпонента.ATOL_KKT_1C83_V10»);
Исключение
Инфо = ИнформацияОбОшибке();
Результат = мОшибкаЗагрузкиДрайвера;
ОписаниеОшибки = «Невозможно подключить внешнюю компоненту.
| Проверьте, что внешняя компонента корректно установлена и имеет ту же версию,
| что и требуемая обработкой обслуживания.»;
КонецПопытки;

Если Результат = мНетОшибки Тогда
Попытка
мВерсияИзДрайвера = Драйвер.ПолучитьНомерВерсии();
Исключение
Попытка
// Получаем описание драйвера.
ОписаниеДрайвера = «»;
Драйвер.ПолучитьОписание(ОписаниеДрайвера);
ОписаниеДрайвераПараметры = МенеджероборудованияВызовСервера.ПараметрыИзXMLПакетаОписанияДрайвера(ОписаниеДрайвера);
мВерсияИзДрайвера = ОписаниеДрайвераПараметры.ВерсияДрайвера;
Исключение
Сообщить(«»»» + Модель + «»»:» + Символы.ПС +
«Внимание! Невозможно определить версию драйвера.» + Символы.ПС +
«Корректная работа драйвера не гарантируется», СтатусСообщения.Внимание);
КонецПопытки;
КонецПопытки;

Объект = Новый Структура(«Модель, Параметры, Драйвер, ОписаниеОшибки, ИДУстройства»,
Модель, Параметры, Драйвер, ОписаниеОшибки, ИДУстройства);

мПараметрыУстройства = Параметры;
мПараметрыУстройства.Вставить(«Идентификатор», Объект.Модель);

Источник

0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии

А вот еще интересные материалы:

  • Яшка сломя голову остановился исправьте ошибки
  • Ясность цели позволяет целеустремленно добиваться намеченного исправьте ошибки
  • Ясность цели позволяет целеустремленно добиваться намеченного где ошибка
  • Ошибка загрузки внешней компоненты terminals dll
  • Ошибка загрузки компоненты rscalls 1c