Создается пустой 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 версии.
Оставьте свое сообщение

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