Страницы: 1
RSS
Проблема с СОМ-объектом
 

Коллеги, день добрый. Возникла следующая проблема – после отката платформы предприятия 8.3.21.1302 до версии 8.3.16.1148 стали возникать неполадки с СОМ-объектами. Не работают следующие строки - Новый COMОбъект(«V83.COMConnector») и Новый COMObject(«Excel.Application»). Ошибка абсолютно везде одна и та значится - Invalid class string.

Пробовали уже и регистрироваться как обычно, в том числе на всякий зарегили и для 32 разрядных версий тоже, и вручную пробовали добавлять и все равно изменения мизерные – компонента вроде стала видна, но ругаться стала на то, что метод объекта не обнаружен (Connect) - oCOMConnector.Connect("").

Мы полностью удалили и переустановили платформу, но ничего не помогло.

 
Цитата
Андрей написал:
Коллеги, день добрый. Возникла следующая проблема – после отката платформы предприятия 8.3.21.1302 до версии 8.3.16.1148 стали возникать неполадки с СОМ-объектами. Не работают следующие строки - Новый COMОбъект(«V83.COMConnector») и Новый COMObject(«Excel.Application»). Ошибка абсолютно везде одна и та значится - Invalid class string.   Пробовали уже и регистрироваться как обычно, в том числе на всякий зарегили и для 32 разрядных версий тоже, и вручную пробовали добавлять и все равно изменения мизерные – компонента вроде стала видна, но ругаться стала на то, что метод объекта не обнаружен (Connect) - oCOMConnector.Connect("").  Мы полностью удалили и переустановили платформу, но ничего не помогло.
Здравствуйте. Для начала предлагаю поискать все "bin\comcntr.dll" в реестре и удалить лежащие не из 8.3.16.1148.

Еще попробуйте сделать так: в удаляемой платформе, в папке bin сначала выполняем: 1cv8.exe /unregserver regsvr32 comcntr.dll /u. После этого в устанавливаемой платформе в в папке bin: 1cv8.exe /regserver   regsvr32 comcntr.dll.

 

Вообще хочу сказать, что подобные вот такие ошибки возникают из-за того, что при установке платформы 1С не произошла автоматическая регистрация 64-х разрядной компоненты, которая отвечает за использование COM-соединения 1С 8.3. Почему? А причина в том, что те, у кого выдаются такие ошибки, используют 32(86) – разрядную операционную систему и ставят вместо платформы необходимой разрядности их системы, платформу 1С предназначенную для совсем другой системы.  

Исправить данную ошибку, довольно легко. Для этого необходимо всего лишь зарегистрировать библиотеку dll в реестре при помощи командной строки или программы PowerShell, в зависимости от того, что любите использовать, и команды regsvr32.

 

Не забудьте только, что для выполнения команды достаточно будет в строке написать такой текст команды «regsvr32 "C:\Program Files\1cv8\8.3.ХХ.ХХХХ\bin\comcntr.dll"». Вместо «ХХ.ХХХХ» необходимо указать необходимый релиз платформы, библиотеку которой, необходимо зарегистрировать в реестре системы.

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

 
Еще есть некоторые особенности команды, которая регистрирует компоненты. На данный момент я знаю только 4 параметра (которые при написании строки кода указываются перед регистрируемым dll-файлом):
/u - параметр, отменяет регистрацию;
/i — параметр, который позволяет при необходимости, в зависимости от библиотеки;
/n —параметр используется только для установки компоненты 1С, в основном пишется вместе с предыдущим (/I);
/s – возможность отключить все сообщения при регистрации.
Существует, также, один немаловажный момент, что в зависимости от версии командной строки, иногда приходится прописывать путь к самой утилите.
Кстати, существуют специальные программы-инструменты, которые помогают регистрировать компоненты, без знания команд и утилит администрирования, зарегистрировать библиотеку и продолжить работать дальше.
 
Слушайте, а помогло - действительно в реестре для win64 была указана платформа 8.3.21.1302, поменял на актуальную версию и подключение к базам пошло без проблем. Спасибо!
 

О, а я когда-то сталкивался с такой проблемой тоже с СОМ-объектом. Короче, была форма, при открытии которой создавался СОМ-объект, он был в структуре и его можно было не вызывать. Когда нам понадобилось обратиться к этому СОМ-объекту, я нажимал на нужные кнопочки и – та-дам - функция отрабатывала и возвращала пустое значение, ибо COM-объект между клиентом и сервером не передается.

Я помню, что тогда мне посоветовали зарегистрировать СОМ-объект на машине с клиентом, перевести режим работы Приложения, создать и использовать СОМ-объект на клиенте. Сам тоже сталкивался несколько раз, что на тонком клиенте не работает СОМ-объект внешнего соединения, когда СП пишет, что должен работать.

 

А вот, кстати, по моему опыту, регистрация dll библиотеки (вызвать в cmd regsvr32 "C:\Program Files\1cv8\[номер платформы]\bin\comcntr.dll" )практически никогда не помогает.

Регистрация объекта вручную через Панель управления=> Администрирование => Службы компонентов более действенна на мой взгляд. Этот метод рабочий, сам им пользовался и успешно. Но требует внимательности и большого количества телодвижений. А также после создания компонента мне приходилось поработать над разрешениями для пользователей, на стороне которых он будет использоваться. Для этих пользователей добавлял роли. Можно, конечно, это делать и для группы пользователей, если вам так удобнее.

Страницы: 1