Регистрация DLL #666923


#0 by Grobik
Захотелось воспользоваться Padeg_ua для склонения украинских ФИО. Зарегистрировал компоненту. Добавил Функция СклонениеФИО(ФИО,Падеж) Экспорт    ЗагрузитьВнешнююКомпоненту("C:WINDOWSSysWOW64Padeg_ua.dll");    Попытка    Скл = Новый COMОбъект("Padeg_ua.Declension");      Исключение        ТекстОшибкиПриПодключении        = ОписаниеОшибки;;        Сообщить(ТекстОшибкиПриПодключении);        Возврат Ложь;    КонецПопытки;        Результат = Скл.GetFIOPadegFS(Строка(ФИО),"",Падеж);    Возврат Результат; КонецФункции в ПроцедурыУправленияПерсоналом В локальной базе работает. В сетевой под терминалом пишет: "Ошибка при вызове конструктора (COMОбъект): Недопустимая строка с указанием класса" В сетевой при запуске 1С на сервере работает. После этого в терминале нет. Файл кидал в "C:WINDOWSSysWOW64Padeg_ua.dll". В реестре ProgID есть и в HCR и в HKLM. "Padeg_ua.Declension" CLSID = {B21B2752-8C41-41D8-A0DC-98A368D8296E} ЧЯДНТ? И как побороть?
#1 by Лефмихалыч
как вариант - отказаться от 64битной семерки
#2 by Grobik
Букву "Я" и "G" на тему "Ошибка при вызове конструктора (COMОбъект): Недопустимая строка с указанием класса" изучил внимательно.
#3 by Grobik
На сервере 32 гига памяти. 32-битку туда ставить? Терминал из-под 32-битных ХП или 7.
#4 by Grobik
Стоп. ЗагрузитьВнешнююКомпоненту("C:WINDOWSSysWOW64Padeg_ua.dll"); Этого я конечно не писал ;)
#5 by Grobik
Сейчас на форуме 2000 чел. И никто не сталкивался с проблемой когда на сервере все нормально а в терминале  "Ошибка при вызове конструктора (COMОбъект): Недопустимая строка с указанием класса" при использовании DLL-к?
#6 by Kreont
А что стандартные не подходят ф-и из конфигураций? поищи по словам "Просклонять"
#7 by victor79
насколько я понимаю, ЗагрузитьВнешнююКомпоненту это для ВНЕШНИХ КОМПОНЕНТ (что то же COM объект, но специальный для 1С). Ты же используешь обычный COM объект, не являющийся ВК, регистрировать который нужно "regsvr32 <файл.длл>" (под админом). С другой стороны ты упомянул, что в реестре есть "Padeg_ua.Declension", потому непонятно почему не работает. Попробуй заново зарегить regsvr32 и 1С запустить под админом. Если все равно не заработает, значит кривая длл и для 64 винды не работает.
#8 by Grobik
см Загрузить не писал, скопипастил с соседнего окна браузера пример. >>  1С запустить под админом Запускал конечно, раз уж пишу что работает.   NameDecl.dll говорят украинские ФИО хуже переносит. Да в все равно она не зарегистрирована. В ПросклонятьФамилиюИмяОтчество и т.д. только вызовы ВК.
#9 by Serginio1
Сетевая SQL? Вызываешь на клиенте или сервере? Возможно использовать 32 разрядные DLL 64 разрядном приложении
#10 by Grobik
Спасибо за помощь. SQL тут при чем? 64 разрядное приложение это какое? КОМ=Новый COMОбъект("V82.COMConnector"); в это-же самое время, в этом-же самом месте работает.
#11 by Serginio1
В том, что SQL это клиент сервер и код может выполняется на сервере приложений. Сервер приложений может быть 64 и 32 разрядным. В поставку 64 сервером есть и 64 разрядная comcntr.dll.
#12 by Grobik
comcntr.dll работает. Padeg_ua.dll на сервере работает, в терминале нет.
#13 by Serginio1
А ПодключитьВнешнююКомпоненту("Padeg_ua.Declension")
#14 by Serginio1
Может прав на папку не хватает у клиента под терминалом?
#15 by Serginio1
Или попробовать как Новый ComОбъект("Padeg_ua.Declension")
#16 by victor79
так я про что и говорю, что ЗагрузитьВнешнююКомпоненту это здесь лишнее и бесполезное, а нужно regsvr32 из командной строки. Хотя это наверняка было для семерки, а для 8 может сделали универсальной. Вот вспомнил, для винды 64 + длл 32 - раздел CLSID располагается в другом разделе реестра - не как в 32 (кажется в WOW32). Возможно это было верно только для виндов от седьмой, и вин 2003 х64 был по старому - наверняка не помню. Если компонента скомпилена на компиляторе не понимающем этого, то придется править реестр вручную. Для дельфей до 7 включительно оно работало криво.
#17 by Grobik
По идее это лишнее. Тем не менее пробовал — не помогает. Это есть. Так все и сделано. Сервер на 2008, а клиенты какая разница?
#18 by Grobik
Запускаю с терминала regedit "Padeg_ua.Declension" не набюдается. Запускаю regsvr32 /n /i:test C:Users estWINDOWSsystempadeg_ua.dll пишет Модуль "C:Users estWINDOWSsystempadeg_ua.dll" загружен,  но точка входа в процедуру DllRegisterServer не найдена. Вот этот товарищ хоть бы отписался, как заборол
#19 by Grobik
Напоминаю на сервере регистрируется и работает. В терминале нет.
#20 by Serginio1
14 читал? Может быть проблема типа
#21 by Grobik
>> А файл есть на СЕРВЕРЕ? Напоминаю на сервере регистрируется и работает.
#22 by Grobik
2. Модуль "C:Users estWINDOWSsystempadeg_ua.dll" загружен НО бла-бла. ИМХО это значит, что есть.
#23 by Grobik
Хотя вариант с "C:UsersххххWINDOWSsystempadeg_ua.dll" чисто отладочный. Не буду же я всем юзерям его раскидывать и регистрировать. Даже батником.
#24 by Serginio1
Попробуй с правами DCOM как в 20.
#25 by Serginio1
сообщение 20 Подсказали решение на SQL.ru На сервере необходимо было еще установить в локальных политиках право на запуск DCOM для конкретных пользователей. и, о чудо, все заработало :-)
Тэги: Админ
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С