Имя: Пароль:
1C
1С v8
Метод объекта (Connect) не обнаружен.
, ,
0 lirt82
 
18.01.19
10:45
Вчера на сервере где крутиться база и клиентских компах поменяли платформу была 8.3.9, 32 бита, стала 8.3.12 так же 32 бита. Самописная обработка перестала работать выдает ошибку на строке
Попытка
    Возврат ComConnector.Connect(ПараметрыПодключенияИБ);
Метод объекта не обнаружен.(Connect)
Я на сервере зарегил компоненту comcntrl.dll успешно, затем на компе у пользака тоже успешно, далее перезагрузил комп пользователя но ошибка все равно осталась. Где копать? При чем заметил, регистрировать dll что на сервере что на компе у пользователя можно до бесконечности и всегда успешно:) т.е. больше одного раза - это нормально? на сервере и на клиентских компах винда 64 битная.
1 lirt82
 
18.01.19
10:49
&НаКлиенте
Процедура Импорт(Команда)
    ИмпортНаСервере();
КонецПроцедуры


&НаСервере
Процедура ИмпортНаСервере()
    
    Соединение = ПолучитьПодключениеКБД();
**************    
КонецПроцедуры

Функция ПолучитьПодключениеКБД()
    
    БазаДанных = Строка(Путь);
    Юзер = Строка(П);
    ПарольЮзеря = Строка(ППароль);
    
    ComConnector = ПолучитьCOMОбъектПоВерсииПлатформы();
        
    ПараметрыПодключенияИБ = "File='" + СокрЛП(БазаДанных) + "'; usr='" + СокрЛП(Юзер) + "'; pwd='" + СокрЛП(ПарольЮзеря) + "';";
    
    Попытка
        Возврат ComConnector.Connect(ПараметрыПодключенияИБ);
    Исключение
        Сообщить(ОписаниеОшибки());
        Возврат Неопределено;
    КонецПопытки;
    
КонецФункции

Функция ПолучитьCOMОбъектПоВерсииПлатформы() Экспорт
    
    ИмяComОбъекта = "";
    Инфо = Новый СистемнаяИнформация;
    Если СтрНайти(Инфо.ВерсияПриложения, "8.3") > 0 Тогда
        ИмяComОбъекта = "V83.COMConnector";
    ИначеЕсли СтрНайти(Инфо.ВерсияПриложения, "8.2") > 0 Тогда
        ИмяComОбъекта = "V82.COMConnector";
    Иначе
        ВызватьИсключение "Не удалось определить версию платформы";
    КонецЕсли;
    
    COMConnector = Новый COMОбъект(ИмяComОбъекта);
    
    Возврат COMConnector;
    
КонецФункции
2 lirt82
 
18.01.19
10:53
неужели создавать компоненту? и где на сервере или на клиентском компе...и потом не понятно на 8.3.9 обработка работала.
3 lirt82
 
18.01.19
10:57
или процедуру получения версии платформы убрать?
сразу писать
ComConnector = Новый COMОбъект(V83.COMConnector);
4 arsik
 
гуру
18.01.19
10:59
Ну уже посмотри в отладчике что у тебя в ComConnector перед вызовом с ошибкой
5 lirt82
 
18.01.19
14:05
как отлаживать в клиент-серверном варианте если база на sql?
6 CepeLLlka
 
18.01.19
14:10
(5)Включить отладку на сервере конечно..

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

У меня была такая же ошибка пару дней назад.. Тоже бился несколько часов..

После нескольких ребутов, ручной регистрации компоненту по гайду в интернете и после нескольких обычных регистраций через regsvr32 заработало.. чего уж ей не хватало, не знаю..
7 sandal_r
 
18.01.19
14:16
(5)
на сервере 1С открываем службы
ищем службу "Агент сервера 1С:Предприятия..."
Открываем свойства этой службы, копируем строку "Исполняемый файл.

Открываем редактор реестра (Win+R, regedit, OK), и в поиске вставляем ранее скопированную строку.

Во всех найденных местах добавляем "-debug"

N.B.!
Это редактор реестра. Аккуратно там. Если не знаешь что делать, лучше спроси у того кто знает.
8 sandal_r
 
18.01.19
14:18
+(7)
потом перезапустить сервер

но вообще включенная отладка на продуктивном сервере - потеря в производительности до 10-15%
лучше на тестовом все отлаживать, а на прод уже готовое выкладывать
9 lirt82
 
18.01.19
14:22
КЭШ ПОЧИСТИЛ и все обработка заработала))))))))))))))
10 CepeLLlka
 
18.01.19
14:34
(9)Точно, могло помочь
11 lirt82
 
18.01.19
14:42
всем на заметку, но другое решение
https://forum.infostart.ru/forum28/topic201792/
Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование. Фредерик Брукс-младший