Создается пустой COM-объект

1. kogl208 15.10.18 10:58 Сейчас в теме
Здравствуйте.

Проблема появилась после обновления платформы на сервере на 8.3.13.1513.

Создаю com-объект:
Коннектор = Новый COMОбъект("V83.COMConnector");


Далее проверяю объект:
ТипЗнч(Коннектор) =  Тип("COMОбъект");

Возвращает Истина

При просмотре в отладчике Коннектор пустой. Нет ни HighBoundDefault, ни LowBoundDefault и т.д.

При попытке создать соединение
Соединение = Коннектор.Connect(СтрокаСоединения);

Вываливается ошибка: Метод объекта не обнаружен (Connect)

На платформе 8.3.11 код работал. Объект создавался, взаимодействие между базами было.
Компонента зарегистрирована. Так как если бы была не зарегистрирована, то выдавалась бы ошибка:
"Ошибка при вызове конструктора (COMОбъект)
Коннектор = Новый COMОбъект("V83.COMConnector");
по причине:
Недопустимая строка с указанием класса"

Разрядность и сервера и клиента x64.

Запускаю с клиента версии 8.2.19.130.
Обратное соединение из 8.3 в 8.2 работает полностью.

Надеюсь на помощь знающих людей.
Заранее благодарю.
+
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. Doreng 27 15.10.18 11:10 Сейчас в теме
(1)
Вываливается ошибка: Метод объекта не обнаружен (Connect)

Эта ошибка указывает на отсутствие компонента и как следствие метода
Прикрепленные файлы:
+
4. kogl208 15.10.18 11:18 Сейчас в теме
(2) В том и проблема, что компонента зарегистрирована.
Ведь если бы она не была зарегистрирована, то, как я понимаю, выдавалась бы ошибка "Ошибка при вызове конструктора (COMОбъект)"
+
7. kogl208 15.10.18 11:32 Сейчас в теме
(2) Все соответствует тому, что Вы указали. Полностью цепочка идет.
+
3. Doreng 27 15.10.18 11:15 Сейчас в теме
(1)Ах...да сом соединение работает только для одной платформы
Прикрепленные файлы:
+
5. kogl208 15.10.18 11:19 Сейчас в теме
(3) Не понял, что Вы имеете ввиду.
Если, то, что при установке новой платформы нужно перерегистрировать компоненту, то это было произведено на терминал, с которого запускается конфигурация.
+
6. Doreng 27 15.10.18 11:20 Сейчас в теме
(5)Через сом соединение можно подключиться одной версией платформы к точно такойже, при этом сом коннектор должен быть зарегистрирован для этой версии
+
8. kogl208 15.10.18 11:48 Сейчас в теме
Попробовал через Excel -> Ctrl+F11 (VBA) -> Tools -> References просмотреть.
В Available References есть 1CV82 COM Connector Type Library, а вот 1CV83 COM Connector Type Library нет.
Проверил все References, но ни в одном нет указания пути к 8.3.13.

Может ли такое быть, что бы компонента была и зарегистрирована и не зарегистрирована?
+
9. Doreng 27 15.10.18 12:02 Сейчас в теме
(8)Давайте еще раз имеем платформу 8.3.13.1513 для нее регистрируем компонент и запускаем эту же платформу!! регистрируем не через regsvr32, а создаем приложение и указываем права доступа
+
10. kogl208 15.10.18 12:12 Сейчас в теме
(9) Запускаем 8.2.19.130. В 8.2.19.130 создаем Новый COMОбъект("V83.COMConnector"). Т.е. создаем соединение из 8.2 в 8.3.
Регистрирует компоненту сисадмин. Ранее, при установке другой платформы, когда была ошибка с компонентой, он регистрировал ее для новой платформы и все работало. Из этого делаю вывод, что он верно регистрирует компоненту.
Про regsvr32 сейчас сказать не могу. Нужно уточнить.
+
12. Doreng 27 15.10.18 13:14 Сейчас в теме
(10)
Т.е. создаем соединение из 8.2 в 8.3.

Это вообще как? Зачем? Что во фразе 1-на платформа не понятно? Зачем Вам бутерброд с 8.2.19.130?
+
13. kogl208 15.10.18 13:44 Сейчас в теме
(12) Обмен между двумя базами на 8.2 и 8.3.
Две разные базы. Перевести базу с 8.2 на 8.3 на текущий момент не целесообразно.
В 8.2 создаем COMОбъект - Внешнее соединение с базой на 8.3.

Возможно (9) не так понял.
+
14. Doreng 27 15.10.18 13:58 Сейчас в теме
(13)
Перевести базу с 8.2 на 8.3

Не нужно ничего никуда переводить, нужно запускать под одной версией платформы, Вы же знаете что такое режим совместимости?
+
15. kogl208 15.10.18 14:07 Сейчас в теме
(14)
Вы же знаете что такое режим совместимости?

На текущий момент базу на 8.3 запустить в режиме совместимости с 8.2 - нельзя из-за особенностей конфигурации. Точно так же как и 8.2 в режиме совместимости с 8.3 по аналогичной причине.

Я извиняюсь, но мне кажется, что мы ушли от первоначальной темы.
Такая конструкция работала на связке баз 8.2.19.130 - 8.3.11.2899, когда в 8.2 создавалось соединение с 8.3.
Теперь эта конструкция выдает ошибку при попытке выполнить
Соединение = Коннектор.Connect(СтрокаСоединения);


Возможно я не понимаю, что Вы говорите.
+
16. Doreng 27 15.10.18 14:22 Сейчас в теме
(15)Просто сделайте -
Если базы расположены не на 1-й машине установите на обе 8.3.13.1513, закройте все соединения, установите ком коннектор для каждой машины
8.3.13.1513 как Вам дали ссылку в (11), перезапустите службы ком, лучше сервер....и все заработает
+
17. kogl208 15.10.18 14:32 Сейчас в теме
(16) Базы на одном сервере.
Установлены обе платформы.
Действия (11) делали. Сервер перезапускали.
+
18. Doreng 27 15.10.18 14:38 Сейчас в теме
(17)dll взяли из папки 8.3.13.1513? установили 32-х битку? Все у меня идеи кончились тогда
+
19. Doreng 27 15.10.18 14:40 Сейчас в теме
(17)Осталось только права смотреть
Прикрепленные файлы:
+
20. kogl208 15.10.18 14:46 Сейчас в теме
(19) Все настроено аналогично тому,что Вы указали.
Необычная проблема.
+
21. qazaas 15.10.18 14:58 Сейчас в теме
(20) Если вы с 8.2 пытаетесь подключиться, то попробуйте использовать V82.ComConnector.
Для справки: в типовых конфигурациях, при подключении определяется версия платформы и по ней создается ком соединитель. Вот так выглядит функция:

Функция ИмяCOMСоединителя()
	СистемнаяИнфо = Новый СистемнаяИнформация;
	ПодстрокиВерсии = СтрРазделить(СистемнаяИнфо.ВерсияПриложения, ".");
	Возврат "v" + ПодстрокиВерсии[0] + ПодстрокиВерсии[1] + ".COMConnector";
КонецФункции


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

Логин = "МойЛогин";
	Пароль = "МойПароль";	          
	
	СтрокаСоединения = СтрокаСоединенияИнформационнойБазы();
	ЭтоФайловаяБаза = ИнформационнаяБазаФайловая(СтрокаСоединения);	
	
	Если ЭтоФайловаяБаза тогда
		ПутьДоБазы = "F:\Base1S\82\БазаДляТеста";
		СтрокаПодключения = "File=""" + ПутьДоБазы + """";
	Иначе
		ИмяСервера = "LocalHost";
		ИмяБазы = "Uat";
		СтрокаПодключения = "Srvr = """+ ИмяСервера+"""; Ref = """+ИмяБазы+"""";
	КонецЕсли;
	
	СтрокаПодключения = СтрокаПодключения + ";Usr = """ + Логин + """";
	СтрокаПодключения = СтрокаПодключения + ";Pwd = """ + Пароль + """";
	
	Попытка		
		V8 = Новый COMОбъект(ИмяCOMСоединителя());		
		БД = V8.Connect(СтрокаПодключения);
		СообщениеПользователю = New UserMessage();
		СообщениеПользователю.Текст = "Поключились к базе ПЛ";
		СообщениеПользователю.Сообщить();
	Исключение
		СтрокаСообщенияОбОшибке = "При попытке соединения по OLE произошла следующая ошибка:" + Символы.ПС 
		+ ОписаниеОшибки();
		СообщениеПользователю = New UserMessage();
		СообщениеПользователю.Текст = СтрокаСообщенияОбОшибке;
		СообщениеПользователю.Сообщить();		
		Возврат Неопределено;		
	КонецПопытки;
Показать
+
23. kogl208 15.10.18 16:36 Сейчас в теме
К сожалению ничего не помогло.
(21)
попробуйте использовать V82.ComConnector

Ругается на Несоответствие версий клиента и сервера 1С:Предприятия

Самое удивительное, что если COM объект создается через скрипт PowerShell, то он отрабатывает хорошо. В штатном режиме, как и на предыдущей платформе.
Если же этот COM объект создавать из 8.2.19.130 то создается пустой COM Объект.

Установили 8.3.12.1595 и все заработало.

Промежуточный вывод: в 8.3.13.1513 с comcntr.dll какие-то проблемы.
veyron21; acanta; +2
22. qazaas 15.10.18 15:00 Сейчас в теме
(20) Естественно, компонента должна быть зарегистрирована.
И да - пример рабочий.
+
24. kogl208 15.10.18 16:42 Сейчас в теме
Проверил отображается ли в VBA (см. сообщение 8) 1CV83 COM Connector Type Library и она там есть.
Дополнение к выводу: У компоненты 8.3.13.1513 какие-то проблемы с интерфейсом.
+
11. acanta 15.10.18 12:18 Сейчас в теме
На сервере под управлением Microsoft Windows Server 2008 R2 ×64 работает 32-х разрядная версия сервера 1С. Не спрашивайте – почему именно так, но на личном опыте убедился, что версия 1С данной разрядности работает стабильнее, чем её 64-х битный собрат. Единственным минусом, который я пока обнаружил, является тот факт, что при установке 32-х битной версии нет возможности активировать компоненту COM+ соединений, т.к. 64-х битные приложения не могут запускать 32-х битные DLL, которые активируются при запуске 32-х битного COM+ объекта 1С.


http://www.maxblogs.ru/articles/ruchnoe-sozdanie-com-soedineniya-dlya-1s
veyron21; +1
25. vovan_victory 63 15.10.18 18:47 Сейчас в теме
Я такой косяк решил так...в сом объектах принудительно удалил сом объект 1с. Для верности перегрузил комп. Далее от имени администратора снова зарегистрировал библиотеку из последнего релиза. Все взлетело.
+
26. kogl208 16.10.18 08:54 Сейчас в теме
Спасибо всем кто помогал.
Дальнейшие опыты решили не проводить и остановиться на 12 версии.
+
Внимание! Тема сдана в архив

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот