Проблема с COM 1C, начиная с версий БСП 3.0.3

1. Auser777 20.10.21 09:23 Сейчас в теме
Приветствую! проблема: в любых версиях БСП, начиная с 3.0.3 был изменён контекст исполнения кода таких общих модулей, как "АдминистрированиеКластераCOM" и др.: контекст исполнения кода теперь только "Сервер" и "Внешнее соединение", а ранее был ещё и "Клиент".
И теперь у нас перестала работать, например типовая обработка из БСП "Блокировка работы пользователей": бьётся ошибка "-2147221005(0x800401F3): Недопустимая строка с указанием класса". Платформа, всё у нас прежнее, ничего не менялось кроме версии БСП. Любые Конфигурации с более ранними версиями БСП работают, по-прежнему, без каких-либо ошибок с COM 1С.

Версия платформы у нас 8.3.18.1363, MS SQL 2017.
Кто-нибудь может подсказать решение??
По теме из базы знаний
Найденные решения
18. Auser777 20.10.21 11:01 Сейчас в теме
Ура!! Я поборол проблему!!
Не знаю, как и почему, но я три раза ввёл команду "regsvr32 /U comcntr.dll". А затем (один раз:) ввёл команду "regsvr32 comcntr.dll".
И проблема исчезла!!!
Всем, кто пытался помочь, огромное спасибо!
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. Dem0 20.10.21 09:29 Сейчас в теме
Т.е. длл-ка теперь клиентская берется чтоль?
Что за ДЛЛ кстати?
А еще там нет нигде приписки типа "Устарела. Вместо *** использовать ***"?
4. Auser777 20.10.21 09:35 Сейчас в теме
(2) Те общие модули, которые работают с COM 1с теперь имеют контекст исполнения кода только "Сервер", а раньше был "КлиентСервер". И вот поэтому теперь у нас эта проблема! Ранее мы когда-то много работали при переносах данных с COM, и всегда у нас были аналогичные ошибки , если мы пытались создавать COM 1c на Сервере ( НаКлиенте всё работало всегда отлично
6. Dem0 20.10.21 09:50 Сейчас в теме
(4)
КлиентСервер

Отладкой зайти не получается? Посмотрите, что за dll и в каком контексте она пытается инициализироваться.
Не думаю, что там с клиента идет инициализация.
7. Auser777 20.10.21 09:56 Сейчас в теме
(6) Ошибку рождает модуль "АдминистрированиеКластераCOM": там есть вот такая функция:

// Создает COM-объект V8*.ComConnector.
//
// Возвращаемое значение: 
//   COMОбъект.
//
Функция COMСоединитель()
	
	Если БезопасныйРежим() <> Ложь Тогда
		ВызватьИсключение НСтр("ru = 'Администрирование кластера невозможно в безопасном режиме'");
	КонецЕсли;
	
	Если ОбщегоНазначения.РазделениеВключено() Тогда
		ВызватьИсключение НСтр("ru = 'В модели сервиса недопустимо выполнение прикладной информационной базой функций администрирования кластера'");
	КонецЕсли;
	
	Возврат Новый COMОбъект(ОбщегоНазначенияКлиентСервер.ИмяCOMСоединителя());
	
КонецФункции
Показать


Ошибка возникает на строке:
Возврат Новый COMОбъект(ОбщегоНазначенияКлиентСервер.ИмяCOMСоединителя());
8. FatPanzer 20.10.21 10:02 Сейчас в теме
(7) Имя соединителя какое? Точно на сервере актуальная DLL зарегана? Раньше может у вас и с клиента работало, потому что админы на своих клиентских машинах регали актуальную DLL вместе с установкой платформы. А на сервере не было необходимости, "потому что все работало".
9. Auser777 20.10.21 10:05 Сейчас в теме
(8) Имя соединителя "v83.COMConnector", то есть ошибка возникает при попытке задать команду:
Новый COMОбъект("v83.COMConnector");
10. Auser777 20.10.21 10:07 Сейчас в теме
(8) dll на сервере точно зарегена командой "regsvr32 comcntr.dll"
Вроде же этого всегда было достаточно?
11. FatPanzer 20.10.21 10:40 Сейчас в теме
(10) Именно из той же платформы? Может там какая старая осталась, просто ей никто не пользовался... Мы вот тоже COM не пользуемся, и админы не регают DLL при смене платформы на серваках. Но вот тут нарисовали сервисную базу, которая по ночам запускает пакетные обновления на боевых базах - и пришлось регать DLL на сервере для управления тем же кластером.
Предполагаю, что в вашем случае то же самое - вам COM на сервере просто не нужен был, и он потерял актуальность. А блокировку пользователей осуществляли с клиентских машин техподдержки, где DLL актуальная. Ну и при смене БСП нарвались на то, что надо поддерживать актуальность и на нсервере.
12. Auser777 20.10.21 10:46 Сейчас в теме
(11) Когда возникла эта проблема, я перерегистрировал ещё раз сервер: сначала ввёл "regsvr32 /U comcntr.dll", потом снова "regsvr32 comcntr.dll". Команды рапортовали, что всё сработало успешно.
14. FatPanzer 20.10.21 10:50 Сейчас в теме
(12) Точно из той же версии серверной платформы? Случайно параллельно два разноверсностных кластера на одном физическом сервере не стоит?
16. Auser777 20.10.21 10:51 Сейчас в теме
(14) Нет, на сервере стоит только одна версия платформы
3. FatPanzer 20.10.21 09:34 Сейчас в теме
Зарегайте на сервере нормальный COM и работайте дальше.
5. Auser777 20.10.21 09:36 Сейчас в теме
(3) Нормальный COM на сервере у нас давно зареген и работает!
15. Auser777 20.10.21 10:51 Сейчас в теме
(13) Нет! Проблема точно не в правах: абсолютно пустые конфигурации чистых БСП (просто разные версии) одни (старые) работают, другие нет
17. EVKash 14 20.10.21 10:58 Сейчас в теме
(15) ой ли? Контекст в старых был клиентский и работало. На сервере COM у вас не использовался.
18. Auser777 20.10.21 11:01 Сейчас в теме
Ура!! Я поборол проблему!!
Не знаю, как и почему, но я три раза ввёл команду "regsvr32 /U comcntr.dll". А затем (один раз:) ввёл команду "regsvr32 comcntr.dll".
И проблема исчезла!!!
Всем, кто пытался помочь, огромное спасибо!
19. FatPanzer 20.10.21 11:21 Сейчас в теме
(18)
Всем, кто пытался помочь, огромное спасибо!
Намазали на хлеб, ага.
20. Auser777 20.10.21 11:25 Сейчас в теме
(19) Всё, что "не мажется на хлеб", для Вас интереса не представляет?
Я, конечно, понимаю, что "материя" исключительно важна для всех нас, но пословица "Не хлебом единым.." тоже не так глупа, как Вам, возможно, кажется
Оставьте свое сообщение

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