V83 application connect неизвестная ошибка

Привет, уважаемые гуру!

я начинающий 1с-ник. Столкнулся с проблемой. Заменил комп на новый и перестал работать код:

    V83 = Новый COMОбъект(«V83.Application»);    

    connection = Истина;

    ДанныеДляПокдлючения = «File=»»» +

                           СокрЛП(«C:8.3.12.1412test01») + //ПутьКбазе

                                                      «»»;Usr=»»» +

                           СокрЛП(«user_wo_ws») + //Логин

                           «»»;Pwd = «»» +

                           СокрЛП(«1111») + «»»;»; //Пароль

    
    Попытка

        connection = V83.Connect(ДанныеДляПокдлючения);

    Исключение

        //Сообщить(ОписаниеОшибки());

        ТекстОшибки = ОписаниеОшибки();        

        connection = Ложь;

        #Если Клиент Тогда

            Сообщить(«ОШИБКА ПОДКЛЮЧЕНИЯ: » + ТекстОшибки);            

        #КонецЕсли

    КонецПопытки;

Ошибка: «Ошибка при вызове метода контекста (Connect): Неизвестная ошибка»

База серверная. Платформа 8.3.12.1790

При этом на старом ПК всё работает, на новом нет.

Заметил, что на старом ПК в НАСТРОЙКА DCOM есть «1CV83 Application», а на новом компе нет.

Регистрация библиотеки comcntr.dll эффекта не даёт. Переустановка платформы на клиентском ПК тоже не помогает.

Подскажите, куда копать?

Привет, уважаемые гуру!

я начинающий 1с-ник. Столкнулся с проблемой. Заменил комп на новый и перестал работать код:

    V83 = Новый COMОбъект(«V83.Application»);    

    connection = Истина;

    ДанныеДляПокдлючения = «File=»»» +

                           СокрЛП(«C:8.3.12.1412test01») + //ПутьКбазе

                                                      «»»;Usr=»»» +

                           СокрЛП(«user_wo_ws») + //Логин

                           «»»;Pwd = «»» +

                           СокрЛП(«1111») + «»»;»; //Пароль

    

    Попытка

        connection = V83.Connect(ДанныеДляПокдлючения);

    Исключение

        //Сообщить(ОписаниеОшибки());

        ТекстОшибки = ОписаниеОшибки();        

        connection = Ложь;

        #Если Клиент Тогда

            Сообщить(«ОШИБКА ПОДКЛЮЧЕНИЯ: » + ТекстОшибки);            

        #КонецЕсли

    КонецПопытки;

Ошибка: «Ошибка при вызове метода контекста (Connect): Неизвестная ошибка»

База серверная. Платформа 8.3.12.1790

При этом на старом ПК всё работает, на новом нет.

Заметил, что на старом ПК в НАСТРОЙКА DCOM есть «1CV83 Application», а на новом компе нет.

Регистрация библиотеки comcntr.dll эффекта не даёт. Переустановка платформы на клиентском ПК тоже не помогает.

Подскажите, куда копать?

Ошибка при вызове метода контекста (Connect): Произошла исключительная ситуация (V83.COMConnector.1): Версия компоненты ‘comcntr’ отличается от версии корневого модуля ‘core83’

Часто бывает, что при настроенной синхронизации после обновления платформы появляется ошибка «Произошла исключительная ситуация (V83.COMConnector.1): Версия компоненты ‘comcntr’ отличается от версии корневого модуля ‘core83’». Так происходит потому, что автоматически не зарегистрировалась компонента comcntr.dll из-за проблем с правами пользователя на компьютере.

Решить данную проблему можно двумя способами.

Способ №1.

Переустановить платформу под правами Администратора или под пользователем, у которого есть такие права.

Способ №2.

Если не получилось как в способе №1, то можно вручную зарегистрировать самому эту компоненту.

Перед этим нам необходимо изменить Параметры контроль учетной записи.

Для Windows 7 нам необходимо зайти в Пуск затем в Панель управления.

Для Windows 10 нам необходимо в левом нижнем углу панели задач в строке поиска набрать Панель управления и перейти по открывшейся ссылке.

В правом верхнем углу Панели управления выбрать Просмотр-Мелкие значки и затем в списке перейти в Учетные записи пользователей.

Учетные записи пользователей

Там выбрать Изменить параметры контроля учетных записей.

Параметры контроля учетных записей

Затем поставить ползунок в самом нижнем положении.


Виртуальный 1С помощник

Ползунок параметров контроля учетных записей

И перезапустить компьютер.

После перезагрузки необходимо:

Для Windows 7 надо перейти в Пуск, затем в строке поиска ввести cmd.exe,нам покажет что найдена Командная строка и, щелкнув по ней правой клавишей мыши, выбрать «Запуск от имени администратора».

Для Windows 10 нам необходимо в левом нижнем углу панели задач в строке поиска набрать Командная панель или cmd.exe и, щелкнув по ней правой клавишей мыши, выбрать «Запуск от имени администратора».

Запуск командной строки

У нас откроется Командная строка, где нам необходимо ввести команду:

1.Для платформы x86

Regsvr32 «C:Program Files (х86)1cv8номер версии вашей платформыbincomcntr.dll» (regsvr32пробел»C:Program Files (х86)1cv8номер версии вашей платформыbincomcntr.dll»).

Команда для платформы x86

2.Для платформы х64

Regsvr32 «C:Program Files1cv8номер версии вашей платформыbincomcntr.dll» (regsvr32пробел»C:Program Files1cv8номер версии вашей платформыbincomcntr.dll»).

Команда для платформы x64

Затем нажать клавишу Enter.

Если все сделали правильно, то увидите вот такое окно.

Успешное выполнение команды

После этого необходимо перезагрузить компьютер. Как включится, пробуйте снова сделать синхронизацию.

Содержание

  • Ошибка при вызове метода контекста (Connect): Произошла исключительная ситуация (V83.COMConnector.1): Версия компоненты ‘comcntr’ отличается от версии корневого модуля ‘core83’
    • Заполнение внешней таблицы
    • Выборка данных и запись
    • Использование хранимых процедур
  • Новые записи:

Ошибка при вызове метода контекста (Connect): Произошла исключительная ситуация (V83.COMConnector.1): Версия компоненты ‘comcntr’ отличается от версии корневого модуля ‘core83’

Часто бывает, что при настроенной синхронизации после обновления платформы появляется ошибка «Произошла исключительная ситуация (V83.COMConnector.1): Версия компоненты ‘comcntr’ отличается от версии корневого модуля ‘core83′». Так происходит потому, что автоматически не зарегистрировалась компонента comcntr.dll из-за проблем с правами пользователя на компьютере.

Решить данную проблему можно двумя способами.

Способ №1.

Переустановить платформу под правами Администратора или под пользователем, у которого есть такие права.

Способ №2.

Если не получилось как в способе №1, то можно вручную зарегистрировать самому эту компоненту.

Перед этим нам необходимо изменить Параметры контроль учетной записи.

Для Windows 7 нам необходимо зайти в Пуск затем в Панель управления.

Для Windows 10 нам необходимо в левом нижнем углу панели задач в строке поиска набрать Панель управления и перейти по открывшейся ссылке.

В правом верхнем углу Панели управления выбрать Просмотр-Мелкие значки и затем в списке перейти в Учетные записи пользователей.

Там выбрать Изменить параметры контроля учетных записей.


Затем поставить ползунок в самом нижнем положении.

И перезапустить компьютер.

После перезагрузки необходимо:

Для Windows 7 надо перейти в Пуск, затем в строке поиска ввести cmd.exe,нам покажет что найдена Командная строка и, щелкнув по ней правой клавишей мыши, выбрать «Запуск от имени администратора».

Для Windows 10 нам необходимо в левом нижнем углу панели задач в строке поиска набрать Командная панель или cmd.exe и, щелкнув по ней правой клавишей мыши, выбрать «Запуск от имени администратора».

У нас откроется Командная строка, где нам необходимо ввести команду:

1.Для платформы x86

2.Для платформы х64

Затем нажать клавишу Enter.

Если все сделали правильно, то увидите вот такое окно.

После этого необходимо перезагрузить компьютер. Как включится, пробуйте снова сделать синхронизацию.

Пришлось недавно ближе поработать с объектами ADODB. Давно этого не делал, так что пришлось снова смотреть в старый код, а что-то и в интернете поискать. Решил скомпоновать базу здесь, в блоге — для дальнейшего возвращения.
Работа с ADODB производится через несколько объектов:
ADODB.Connection — Объект производит подключение к источнику данных, а так же трансляцию команд и наборов данных
ADODB.RecordSet — Объект предоставляющий механизмы работы с набором данных, такие как получение, модификация, удаление или добавление данных.
ADODB.Command — Объект, так же предоставляющий механизмы работы с наборами данных, но, в отличие от RecordSet, не возвращает данные на клиента.
ADODB.Connection

Перед тем как начать работать с данными из внешнего источника необходимо установить с ним связь, для этого вызывается функция Open объекта Connection, в единственный параметр этой функции передается строка ConnectionString с описанием параметров подключения.
Попытка ADOСоединение = Новый COMОбъект(«ADODB.Connection»); ADOСоединение.Open(«Provider=SQLOLEDB.1; |Persist Security Info=False; |User ID=»+Пользователь+»; |Password=»+ Пароль+»; |Initial Catalog=»+ База+»; |Data Source=»+ Сервер); Возврат ADOСоединение; Исключение КонецПопытки;
Provider — Имя драйвера источника данных (к примеру SQLOLEDB.1 для MS SQL server)
Persist Security Info — необходимость использования шифрованого канала
User ID — Имя пользователя внешнего источника
Password — Пароль пользователя
Initial Catalog — Имя базы внешного источника
Data Source — Имя сервера
ADODB.RecordSet
Открытие набора данных для всей таблицы. Этот вариант хорош тем, что есть возможность указания дополнительных параметров набора данных.
RecordSet.Open(Источник, Соединение, ТипКурсора, ТипБлокировки, Параметры)
В приведенном ниже примере набор данных открывается с параметрами
Источник — «IMPORT_PRODUCTS»
Соединение — мADOСоединение
ТипКурсора — «0» (adOpenForwardOnly)
ТипБлокировки — «2» (adLockPessimistic)
Параметры — «2» (adCmdTable)
ADOНаборДанныхТовары = Новый COMОбъект(«ADODB.RecordSet»); ADOНаборДанныхТовары.Open(«IMPORT_PRODUCTS», мADOСоединение, 0, 2, 2);
Открытие набора данных по запросу (использование дополнительных параметров вызывает исключения)
ТекстЗапросаТоваров = «SELECT * | FROM | where in (SELECT FROM where (( = ») |or ( = ‘NULL’) or( = ‘1’)))»; ADOНаборДанныхТовары = Новый COMОбъект(«ADODB.RecordSet»); ADOНаборДанныхТовары .Open(ТекстЗапросаТоваров, мADOСоединение);

Заполнение внешней таблицы

При необходимости очистить таблицу внешнего источника данных, и загрузить туда обновленные данные.
Подключаемся к внешней базе
Попытка СтрокаСоединения = «Provider=SQLOLEDB.1; |Persist Security Info=False; |User ID=»+Пользователь+»; |Password=»+ Пароль+»; |Initial Catalog=»+ База+»; |Data Source=»+ Сервер); Connection = Новый COMОбъект(«ADODB.Connection»); Connection.Open(СтрокаСоединения); Исключение Возврат; КонецПопытки; С помощью объекта ADODB.Command выполняем запрос по удалению данных из таблицы по определенному условию. При этом, в CommandText прописываем сам запрос, и важно указать CommandType равным 1.
Command = Новый COMОбъект(«ADODB.Command»); Command.CommandTimeout = 100; Command.CommandText = «DELETE FROM .. WHERE PERIOD_ID = Convert(datetime,’»+Лев(Строка(ДатаНач),10)+»‘,103)»; Command.CommandType = 1; Command.ActiveConnection = Connection; Command.Execute();
Устанавливаем новый запрос, который запишет в таблицу отобранные данные, и выполняем его.
// Выборка данных за прошлый месяц Выборка = Запрос.Выполнить.Выбрать(); Пока Выборка.Следующий() Цикл Command.CommandText = «INSERT INTO ..(PERIOD_ID, CO_ID, ART_ID, S ) VALUES (» + » Convert(datetime,’»+Лев(Строка(ДатаНач),10)+»‘,103)» + «,NULL» + «,»+Формат(Выборка.Код, «ЧГ=») + «,»+Строка(?(Сумма = 0,»0″,Формат(Сумма,»ЧРД=.; ЧГ=; ЧО=»))) +»)»; Попытка Command.Execute(); Исключение Сообщить(«Ошибка записи данных в базу: «+ОписаниеОшибки()); КонецПопытки; КонецЦикла;

Выборка данных и запись

Вариант ситуации, когда необходимо выполнить выборку данных, и записать результат для дальнейшей обработки. (Не забываем создавать объект Connection)
В данном случае используется объект ADODB.Recordset, который позволяет получить набор записей.
CommandText = «select g_id, saledate, sqty, scost from dbo.»+НастройкиADODB.dbo+»(‘»+Формат(НачПериода,»ДФ=yyyyMMdd»)+»‘,’»+Формат(КонПериода,»ДФ=yyyyMMdd»)+»‘) where g_id in («+СтрокаКодовТМЦ+»)»; Попытка rsRES = NEW COMObject(«ADODB.Recordset»); rsRES.Open(CommandText, Connection); Исключение Connection.Close(); Возврат; КонецПопытки Пока не rsRES.eof() Цикл НоваяЗапись = НаборЗаписей.Добавить(); Для х = 0 по 3 Цикл НоваяЗапись = rsRES.Fields(х).Value; КонецЦикла; rsRES.MoveNext(); КонецЦикла; НаборЗаписей.Записать(Истина); rsRES.Close(); Connection.Close();
Кстати, советую пользоваться функцией EOF вместо RecordCount, так как последняя очень не надежна, неопределенная во времени выполнения и может привести к «залипанию» процесса — подробнее можно почитать на форумах.

Использование хранимых процедур

Хранимые процедуры можно вызвать просот из запроса, вписав в начале текста слово «exec», либо указав соответствующий CommandType и название хранимой процедуры в CommandText.
Command = Новый COMОбъект(«ADODB.Command»); Command.CommandTimeout = 100; Command.ActiveConnection = Connection; Command.CommandText = «add_image»; Command.CommandType = 4; Создаем параметр посредством объекта Parameter (на перевес этому можно воспользоваться методом CreateParameter), и добавляем его методом Append в наше подключение.
Парам = Новый COMОбъект(«ADODB.Parameter»); Парам.Name = «@code»; Парам.Direction = 1; //1 — adParamInput Парам.Type = 201; // Парам.Size = 255; Парам.Value = ВнутреннийКод; Command.Parameters.Append(Парам);
Переводим файл, который хотим передать в двоичный поток, создаем и добавляем параметр
Поток = Новый COMОбъект(«ADODB.Stream»); Поток.Type = 1; //StreamTypeEnum.adTypeBinary = 1 StreamTypeEnum.adTypeText = 2 Поток.Open(); Поток.LoadFromFile(ПолноеИмяФайла); локПотокБайт = Новый ComSafeArray(Поток.Read()); Парам = Новый COMОбъект(«ADODB.Parameter»); Парам.Name = «@file_data»; Парам.Direction = 1; //1 — adParamInput Парам.Type = 205; //205 — adLongVarBinary Парам.Size = локПотокБайт.GetLength(); Парам.Value = локПотокБайт; Command.Parameters.Append(Парам); Command.Execute();

  1. 21.02.2018, 12:02

    #1

    fumma вне форума


    Гость форума


    По умолчанию Проблема при синхронизации, помогите

    При попытке синхронизации БП и ЗУП 8.3 выходит ошибка:

    Не удалось подключиться к другой программе: {ОбщийМодуль.ОбщегоНазначе нияКлиентСервер.Модуль(1166)} : Ошибка при вызове метода контекста (Connect)
    Результат.Соединение = COMConnector.Connect(СтрокаСоединен� �я);
    по причине:
    Произошла исключительная ситуация (V83.COMConnector.1): Версия компоненты ‘comcntr’ (8.3.8.1861) отличается от версии корневого модуля ‘core83’ (8.3.10.2466)

    Помогите, пожалуйста, разобраться


  2. 21.02.2018, 12:06

    #2

    fumma вне форума


    Гость форума


    По умолчанию Re: Проблема при синхронизации, помогите

    Не удалось подключиться к другой программе: {ОбщийМодуль.ОбщегоНазначе нияКлиентСервер.Модуль(1166)} : Ошибка при вызове метода контекста (Connect)
    Результат.Соединение = COMConnector.Connect(СтрокаСоединен� �я);
    по причине:
    Произошла исключительная ситуация (V83.COMConnector.1): Версия компоненты ‘comcntr’ (8.3.8.1861) отличается от версии корневого модуля ‘core83’ (8.3.10.2466)


  3. 21.02.2018, 12:07

    #3

    fumma вне форума


    Гость форума


    По умолчанию Re: Проблема при синхронизации, помогите

    Не удалось подключиться к другой программе: {ОбщийМодуль.ОбщегоНазначе нияКлиентСервер.Модуль(1166)} : Ошибка при вызове метода контекста (Connect)
    Результат.Соединение = COMConnector.Connect(СтрокаСоединен� �я);
    по причине:
    Произошла исключительная ситуация (V83.COMConnector.1): Версия компоненты ‘comcntr’ (8.3.8.1861) отличается от версии корневого модуля ‘core83’ (8.3.10.2466)


Идея интересная, но у меня имеет место быть проблема. Если создавать COM-объекты разных версий с некоторой паузой между этим созданиями, то всё хорошо, вроде бы.
А, вот, если эту паузу не выдерживать — то возможно возникновение двух ошибок (я так и не смог понять причины и следствия когда какая ошибка возникает, скорее всего сначала первая, а при повторной попытке уже вторая)
Запускалось всё под клиентом одной или второй версии (пробовал и так и так) — файловый вариант.
Основной COM-объект был версии 8.3.10.2252, но даже если к нему обращаться как к «v83.COMConnector» то это ничего не меняло
Последовательность создания COM-объектов не влияет, но если получить первую ошибку, переставить их местами — возникает вторая ошибка
Версия клиента 1С: Предприятие так же не влияет.
Запуск в новом сеансе 1С проблему не решает.

Выполняю такой алгоритм:

ком = новый COMОбъект("V83.COMConnector_8.3.10.2252");
ком.ConnectAgent("srv1");
ком = новый COMОбъект("v83.COMConnector_8.3.8.2054");
ком.ConnectAgent("srv2");

Возникает первая ошибка:

{ВнешняяОбработка.ВнешняяОбработка1.Форма.Форма.Форма(13)}: Ошибка при вызове метода контекста (ConnectAgent)
ком.ConnectAgent(«srv2»);
по причине:
Неизвестная ошибка

При повторном запуске она повторяется

Переставляем местами создание COM-Объектов

ком = новый COMОбъект("v83.COMConnector_8.3.8.2054");
ком.ConnectAgent("srv2");
ком = новый COMОбъект("V83.COMConnector_8.3.10.2252");
ком.ConnectAgent("srv1");

И возникает вторая ошибка:

{ВнешняяОбработка.ВнешняяОбработка1.Форма.Форма.Форма(12)}: Ошибка при вызове конструктора (COMОбъект)
ком = новый COMОбъект(«V83.COMConnector_8.3.10.2252»);
по причине:
-2147024769(0x8007007F): Не найдена указанная процедура.

При повторном запуске она повторяется

Далее — если снова переставить обратно — ошибка будет повторяться

{ВнешняяОбработка.ВнешняяОбработка1.Форма.Форма.Форма(10)}: Ошибка при вызове конструктора (COMОбъект)
ком = новый COMОбъект(«V83.COMConnector_8.3.10.2252»);
по причине:
-2147024769(0x8007007F): Не найдена указанная процедура. [

Спустя минут 15-20 всё проходит — и начинается с начала (с учётом переставленных вызовов создания COM-объектов):

{ВнешняяОбработка.ВнешняяОбработка1.Форма.Форма.Форма(13)}: Ошибка при вызове метода контекста (ConnectAgent)
ком.ConnectAgent(«srv1»);
по причине:
Неизвестная ошибка

Значит COM-объект где-то кешируется (платформой 1С? — мало вероятно — т.к. перезапуск клиента ничего не решает) и при попытке создать повторно (пусть и, в общем-то, другой COM-Объект) идёт обращение к старому и происходит какой-то конфликт версий.

Увы, это почти ставит крест на данной методике. Но, если одновременная (читай последовательная но в одно и то же время в пределах 20 минут) работа не требуется — описанный в статье метод будет работать.
Но, лично мне нужна была одновременная работа :-(
Надо попробовать выполнить те же обращения, но не из 1С — если проблемы не будет, то значит это 1С кеширует (и это можно обойти — но логику работы с COM-объектом придётся выносить за пределы 1С), а если будет…. то нужно что инове придумывать!

Попробовал так же с компонентами редакции 8.2:

ком = новый COMОбъект("v82.COMConnector_8.2.19.80");
ком.ConnectAgent("srv3");
ком = новый COMОбъект("V82.COMConnector_8.2.19.68");
ком.ConnectAgent("srv4");

В общем-то такая же ситуация, но ошибка всегда на ВТОРОЙ по счёту компоненте (не важно какой она версии!!!) и всегда такая:

{ВнешняяОбработка.ВнешняяОбработка1.Форма.Форма.Форма(42)}: Ошибка при вызове метода контекста (ConnectAgent)
ком.ConnectAgent("srv4);
по причине:
Неизвестная ошибка

При этом если создавать и использовать их отдельно (посадил на разные кнопки)
То ситуация такая
1. Любую создаю — всё нормально
2. Создаю вторую — возникает ошибка
3. Создаю первую — ошибки нет
4. Создаю вторую — ошибка
5. Повторно создаю вторую — ошибки нет
6. Снова создаю вторую — ошибки нет
7. Создаю первую — ошибка
8. Создаю первую — ошибки нет
9. Создаю вторую — ошибка
10. Создаю вторую — ошибки нети

То есть первый раз создаётся нормально и если сразу создавать другой версии — будет ошибка — но при повторном создании — ошибки не будет — но она снова будет у первой, что при повторном создании так же ошибки не будет
Поэтому с v82 я написал вот так — и в общем-то оно работает

попытка
ком = новый COMОбъект("v82.COMConnector_8.2.19.80");
ком.ConnectAgent("srv3");
исключение
сообщить("v82.COMConnector_8.2.19.80: "+ОписаниеОшибки());
ком = новый COMОбъект("v82.COMConnector_8.2.19.80");
ком.ConnectAgent("srv3");
конецпопытки;
попытка
ком = новый COMОбъект("V82.COMConnector_8.2.19.68");
ком.ConnectAgent("srv4");
исключение
сообщить("v82.COMConnector_8.2.19.68: "+ОписаниеОшибки());
ком = новый COMОбъект("V82.COMConnector_8.2.19.68");
ком.ConnectAgent("srv4");
конецпопытки;

Показать

Значит компонента 8.2 не кэшируется, в отличии от 8.3 :-|

Попытка же написать так же для 8.3

попытка
ком = новый COMОбъект("V83.COMConnector_8.3.10.2252");
ком.ConnectAgent("srv1");
исключение
сообщить("V83.COMConnector_8.3.10.2252: "+ОписаниеОшибки());
ком = новый COMОбъект("V83.COMConnector_8.3.10.2252");
ком.ConnectAgent("srv1");
конецпопытки;
попытка
ком = новый COMОбъект("v83.COMConnector_8.3.8.2054");
ком.ConnectAgent("srv2");
исключение
сообщить("v83.COMConnector_8.3.8.2054: "+ОписаниеОшибки());
ком = новый COMОбъект("v83.COMConnector_8.3.8.2054");
ком.ConnectAgent("srv2");
конецпопытки;

Показать

первый раз отработало, но повторный запуск привёл к ошибке
V83.COMConnector_8.3.10.2252:

{ВнешняяОбработка.ВнешняяОбработка1.Форма.Форма.Форма(38)}: Ошибка при вызове конструктора (COMОбъект): -2147024769(0x8007007F): Не найдена указанная процедура.

это самая первая строка в первой попытке — и эта ошибка дальше стабильно повторялась

Попробовал работать параллельно с компонентами V82 и v82

ком = новый COMОбъект("v82.COMConnector_8.2.19.80");
ком.ConnectAgent("srv3");
ком = новый COMОбъект("V83.COMConnector_8.3.10.2252");
ком.ConnectAgent("srv1");

Никаких ошибок не возникает!

Так что — как 1С (или windows) это всё обрабатывают, что возникает такой винегрет из разных ситуаций — непонятно….
Надо ещё разбираться и экспериментировать

Возможно эти проблемы чисто связаны с моей конфигурацией ОС — использую windows 8
А может дело в используемых релизах 1С: Предприятие, клиента и компонент (хотя на клиенте 8.2.19.80 я тоже попробовал — всё то же самое)

Может, у меня просто компоненты как-то неправильно установлены или какие-то заморочки с настройками COM+
Я, например, не нашёл типовых компонент в разделе COM+ как на картинках автора :-(
Хорошо бы кто-то ещё это всё проверил бы на своих конфигурациях платформ и компонент

1C 8 Произошла исключительная ситуация (V83.COMConnector.1): Внешнее соединение не разрешено для указанного пользователя 1С:Предприятия

Описание ошибки:
В ранее работавшем обмене из базы УТ в БП при выполнении выгрзки стала возникать ошибка:
Ошибка при установке подключения ко второй информационной базе: Не удалось подключится к другой программе: {ОбщийМодуль.ОбщегоНазначения.Модуль(9234)}: Ошибка при вызове метода контекста (Connect)
Результат.Соединение = COMConnector.Connect(СтрокаСоединения);

по причине:
Произошла исключительная ситуация (V83.COMConnector.1): Внешнее соединение не разрешено для указанного пользователя 1С:Предприятия

Найденные решения:

Нажатие на изображении увеличит его
1C 8 что сделать, чтобы убрать, исправить ошибку V83.COMConnector.1 Внешнее соединение не разрешено для указанного пользователя 1С
Рис. 1. Пример возникновения ошибки при работе обмена между базами 1С УТ 10.3 и БП 3.0

Так же перестал работать настроенный и работавший ранее односторонний обмен из базы конфигурации 1С: Зарплата и управление персоналом, ред. 3.0 в 1С: Бухгалтерия предприятия, ред. 3.0. В журнале регистрации ошибок обмена так же содержалась похожая формулировку от исходной ошибки:

Не удалось подключиться к другой программе: Произошла исключительная ситуация (V83.COMConnector.1): Внешнее соединение не разрешено для указанного пользователя 1С:Предприятия
по причине:
Произошла исключительная ситуация (V83.COMConnector.1): Внешнее соединение не разрешено для указанного пользователя 1С:Предприятия

Нажатие на изображении увеличит его
1C 8 ошибка выгрузки, синхронизации, что сделать, как исправить, Ошибка при установке подключения ко второй информационной базе: Не удалось подключится к другой программе
Рис. 2. Пример ошибки при работе выгрузки данных из базы 1С ЗУП 3.0 в БП 3.0 

Итак, попробуем разобраться, в чем причина, почему возникает ошибка, проблема «Произошла исключительная ситуация (V83.COMConnector.1): Внешнее соединение не разрешено для указанного пользователя 1С:Предприятия» и как ее исправить?

В тексте ошибки явно находим подсказку на то, что нужно в первую очередь проверить права пользователя в базе, к которой происходит подключение для обмена справочниками и документами в рамках настроенной выгрузки. Формулировка «Внешнее соединение не разрешено для указанного пользователя» указывает, что дело в первую очередь в пользователе «Обмен», как видно на Рис.1. Удивительным было то, что ранее у пользователя, под которым выполнялось com-подключение к базе-приемнику, все было настроено для работы обмена и работало продолжительное время.

Поэтому в базе Бухгалтерия переходим в раздел «Администрирование» — ссылка списка настроек «Настройки пользователей и прав» — ссылка «Пользователи».

Нажатие на изображении увеличит его
1C 8 как открыть список пользователей базы в БП, бухгалтерия, 3.0
Рис. 3. Переход к списку пользователей в базе конфигурации 1С: Бухгалтерия 3.0

Откроется форма списка пользователей базы. Находим в списке пользователя «Обмен» — в Вашем случае это будет пользователь, под которым выполняется выгрузка, если используется прямое подключение к базе. Нажимаем на надпись-ссылку «Права доступа».

Нажатие на изображении увеличит его
форма настройки пользователя в базе 1с 8 бухгалтерия 3
Рис. 4. Вид формы настроек пользователя базы 1С: Бухгалтерия предприятия, редакция 3.0

Как оказалось, в моем случае, ошибка «Не удалось подключиться к другой программе: Произошла исключительная ситуация (V83.COMConnector.1): Внешнее соединение не разрешено для указанного  пользователя 1С:Предприятия по причине» возникла с некоторого времени из-за того, что у пользователя отключены все права доступа в списке «Профили пользователя». Разбираться — почему так было бы долго. Это мог быть кто-нибудь из пользователей базы, или что крайне маловероятно, но все-таки возможно — результат обновления базы (крайне редко, но удивительные веди после обновлений могут возникать). В общем проще было установить снова права пользователю. Для возможности выполнения обмена в принципе достаточно профиля «Администратор», но, на всякий случай рекомендуется еще и установить профиль «Синхронизация данных с другими программами».

Нажатие на изображении увеличит его
1С 8 какие нужны права пользователю для работы обмена, выгрузки
Рис. 5. Состав прав доступа пользователя для возможности выполнения синхронизации (обмена данных)

После проделанных операций работоспособность синхронизации между базами 1С 8 была восстановлена.

Оцените, помогло ли Вам предоставленное описание решения ошибки?




© www.azhur-c.ru 2014-2020. Все права защищены. Использование текстов и изображений с данной страницы без письменного разрешения владельца запрещено. При использовании материалов с данной страницы обязательно указание ссылки на данную страницу.

20-07-2022

Журавлев А.С.
(Сайт www.azhur-c.ru)

ошибка открытия тонкого клиента

unnamed Дата: Четверг, 21.01.2021, 10:23 | Сообщение # 1

Лейтенант

Группа: Пользователи

Репутация: 53

Статус: Оффлайн

Платформа: 8.3.19.838
Режим БД: клиент-серверный
Конфигурация. Название: Логистика+бюджетирование. (2.038 (03.02.2010-04.12.2020))
Конфигурация. Основной режим запуска: Обычное приложение
Конфигурация. Вариант встроенного языка: Русский
Конфигурация. Режим совместимости: Версия8_3_17
Инструменты разработчика. Версия: Расширение 5.75.1e
Инструменты разработчика. Инструмент: Прочее
Инструменты разработчика. Объекты на сервере: Нет
Инструменты разработчика. Разрешены имитаторы: Да
Расширения. ИнструментыРазработчикаTormozit (5.75.1e)
Клиент. ОС: Microsoft Windows Server 2012 R2 Standard 64-разрядная Русский
Клиент. Приложение: Обычное приложение 64б
Клиент. Язык интерфейса конфигурации: ru
Клиент. Язык интерфейса системы: ru_RU
Клиент. От имени администратора Windows: Нет
Сервер. ОС: Microsoft Windows Server 2012 R2 Standard 64-разрядная Русский
Сервер. Отладка: http

Значение не является значением объектного типа (Visible)
{ИнструментыРазработчикаTormozit ОбщийМодуль.ирОбщий.Модуль(35023)}: Результат.Visible = Истина;
{(1)}:ирОбщий.ОткрытьСвязанныйСеансТонкогоКлиентаЛкс()
{ИнструментыРазработчикаTormozit Обработка.ирПортативный.Форма.Форма.Форма(232)}: Выполнить(СтрокаИнструмента.ПолноеИмя + «()»);
{ИнструментыРазработчикаTormozit Обработка.ирПортативный.Форма.Форма.Форма(225)}: ОткрытьИнструмент(СтрокаИнструмента);

 
tormozit Дата: Четверг, 21.01.2021, 13:00 | Сообщение # 2

Генералиссимус

Группа: Администраторы

Репутация: 141

Статус: Оффлайн

http://devtool1c.ucoz.ru/forum/2-1441-1

 
unnamed Дата: Четверг, 21.01.2021, 15:06 | Сообщение # 3

Лейтенант

Группа: Пользователи

Репутация: 53

Статус: Оффлайн

Цитата tormozit ()

http://devtool1c.ucoz.ru/forum/2-1441-1

окно с регистрацией COM классов от да, открывается. и в этом окне все необходимые классы зарегистрированы. при проверке правда пишет какие-то ошибки:

Издание платформы Имя класса Тип класса X64 Зарегистрирован Сборка платформы Файл Проверка создания Проверка подключения
Текущая Новая Имя Существует

8.3 V83.Application Application Нет Нет
Нет
8.3 V83.Application Application Да Да ОК Ошибка при вызове метода контекста (Connect): Неизвестная ошибка
8.3.19.838 C:Program Files1cv88.3.19.838bin1cv8.exe Да
8.3 V83c.Application CApplication Нет Нет
Нет
8.3 V83c.Application CApplication Да Да ОК Ошибка при вызове метода контекста (Connect): Произошла исключительная ситуация (1C:Enterprise 8.3.19.838): Неверные или отсутствующие параметры соединения с информационной базой
8.3.19.838 C:Program Files1cv88.3.19.838bin1cv8c.exe Да
8.3 V83.ComConnector ComConnector Нет Нет
Нет
8.3 V83.ComConnector ComConnector Да Да ОК Ошибка при вызове метода контекста (Connect): Произошла исключительная ситуация (V83.COMConnector.1): Неверные или отсутствующие параметры соединения с информационной базой
8.3.19.838 C:Program Files1cv88.3.19.838bincomcntr.dll Да
8.3 V83.ServerAdminScope ServerAdminScope Нет Нет
Нет
8.3 V83.ServerAdminScope ServerAdminScope Да Да Ошибка при вызове конструктора (COMОбъект): -2147467262(0x80004002): Интерфейс не поддерживается
8.3.19.838 C:Program Files1cv88.3.19.838binradmin.dll Да
8.2 V82.Application Application Нет Нет
Нет
8.2 V82c.Application CApplication Нет Нет
Нет
8.2 V82.ComConnector ComConnector Нет Нет
Нет
8.2 V82.ComConnector ComConnector Да Нет
Нет
8.2 V82.ServerAdminScope ServerAdminScope Нет Нет
Нет
8.2 V82.ServerAdminScope ServerAdminScope Да Нет
Нет
8.1 V81.Application Application Нет Нет
Нет
8.1 V81c.Application CApplication Нет Нет
Нет
8.1 V81.ComConnector ComConnector Нет Нет
Нет
8.1 V81.ComConnector ComConnector Да Нет
Нет
8.1 V81.ServerAdminScope ServerAdminScope Нет Нет
Нет
8.1 V81.ServerAdminScope ServerAdminScope Да Нет
Нет

Добавлено (21.01.2021, 15:21)
———————————————
Проверил на тестовом окружении, где компонента не зарегистрирована: до сообщения из указанной ветки и открытия инструмента регистрации COM-компонент в этом случае не доходит, пишет:

Ошибка создания COM объекта v83c.Application: {ИнструментыРазработчикаTormozit ОбщийМодуль.ирОбщий.Модуль(16182)}: Ошибка при вызове конструктора (COMОбъект): -2147221005(0x800401F3): Недопустимая строка с указанием класса 
{ИнструментыРазработчикаTormozit ОбщийМодуль.ирОбщий.Модуль(16184)}: ВызватьИсключение «Ошибка создания COM объекта » + ИмяCOMКласса + «: » + ОписаниеОшибки();
{ИнструментыРазработчикаTormozit ОбщийМодуль.ирОбщий.Модуль(16240)}: Соединение = СоздатьСеансИнфобазы1С8Лкс(, ИмяПользователяИнфобазы, ПарольПользователяИнфобазы, ТипCOMОбъекта, Истина,,,, КодРазрешения);
{ИнструментыРазработчикаTormozit ОбщийМодуль.ирКэш.Модуль(595)}: СвязанныйСеансТонкогоКлиента = ирОбщий.ЗапуститьСеансПодПользователемЛкс(ИмяПользователя(),, «c.Application»,,,, Ложь, Ложь); 
{ИнструментыРазработчикаTormozit ОбщийМодуль.ирОбщий.Модуль(35022)}: Результат = ирКэш.ПолучитьСеансТонкогоКлиентаЛкс();
{(1)}:ирОбщий.ОткрытьСвязанныйСеансТонкогоКлиентаЛкс()
{ИнструментыРазработчикаTormozit Обработка.ирПортативный.Форма.Форма.Форма(232)}: Выполнить(СтрокаИнструмента.ПолноеИмя + «()»);
{ИнструментыРазработчикаTormozit Обработка.ирПортативный.Форма.Форма.Форма(225)}: ОткрытьИнструмент(СтрокаИнструмента);

 
tormozit Дата: Четверг, 21.01.2021, 19:08 | Сообщение # 4

Генералиссимус

Группа: Администраторы

Репутация: 141

Статус: Оффлайн

Заключи имя пользователя в поле «Строка соединения» в кавычки и повтори проверку.

 
unnamed Дата: Пятница, 22.01.2021, 07:43 | Сообщение # 5

Лейтенант

Группа: Пользователи

Репутация: 53

Статус: Оффлайн

1. При тестировании пользователя в кавычках без пароля (пустой в кавычках, что выставляется автоматом) — 
класс V83.Application по всей видимости, вызывает 1с, которая трапается:
8.3 V83.Application Application Да Да ОК Ошибка при вызове метода контекста (Connect): Неизвестная ошибка
8.3.19.838 C:Program Files1cv88.3.19.838bin1cv8.exe Да

На втором классе возникает закономерная ошибка:

8.3 V83.ComConnector ComConnector Да Да ОК «Ошибка при вызове метода контекста (Connect): Произошла исключительная ситуация (V83.COMConnector.1): Идентификация пользователя не выполнена
Неправильное имя или пароль пользователя»
8.3.19.838 C:Program Files1cv88.3.19.838bincomcntr.dll Да

Класс V83.ServerAdminScope не работает никогда, вроде про эти изменения что-то писали.

8.3 V83.ServerAdminScope ServerAdminScope Да Да Ошибка при вызове конструктора (COMОбъект): -2147467262(0x80004002): Интерфейс не поддерживается
8.3.19.838 C:Program Files1cv88.3.19.838binradmin.dll Да

====

2. При указании имени пользователя в кавычках и указании правильного пароля все проверки проходят, открытие тонкого клиента выдает ту же ошибку:
Не удалось подключить тонкий клиент через COM. Для диагностики используйте инструмент «Управление COM классами 1С

Значение не является значением объектного типа (Visible)
{ИнструментыРазработчикаTormozit ОбщийМодуль.ирОбщий.Модуль(35023)}: Результат.Visible = Истина;
{(1)}:ирОбщий.ОткрытьСвязанныйСеансТонкогоКлиентаЛкс()
{ИнструментыРазработчикаTormozit Обработка.ирПортативный.Форма.Форма.Форма(232)}: Выполнить(СтрокаИнструмента.ПолноеИмя + «()»);
{ИнструментыРазработчикаTormozit Обработка.ирПортативный.Форма.Форма.Форма(225)}: ОткрытьИнструмент(СтрокаИнструмента);

 
tormozit Дата: Пятница, 22.01.2021, 07:55 | Сообщение # 6

Генералиссимус

Группа: Администраторы

Репутация: 141

Статус: Оффлайн

Цитата unnamed ()

При указании имени пользователя в кавычках и указании правильного пароля все проверки проходят

Хотелось бы снимок экрана.
Попробуй поставить точку останова в модуле ирОбщий на строке

Код

РезультатСоединения = Соединение.Connect(ПолнаяСтрокаСоединения);

И сообщи значение переменной ПолнаяСтрокаСоединения, заменив пароль звездочками.
Сообщи значение поле «Строка соединения» из инструмента «Управление COM классами 1С», заменив пароль звездочками.

 
unnamed Дата: Пятница, 22.01.2021, 08:35 | Сообщение # 7

Лейтенант

Группа: Пользователи

Репутация: 53

Статус: Оффлайн

Цитата tormozit ()

Сообщи значение поле «Строка соединения» из инструмента «Управление COM классами 1С», заменив пароль звездочками.

как было на предыдущих экранах, добуквенно, пароля там нет, пользователь не заключен в кавычки:
Srvr=»1c-server1″;Ref=»logistika»;Usr=Кузнецов Ю.А.;Pwd=;

Цитата tormozit ()

Хотелось бы снимок экрана.

Цитата tormozit ()

И сообщи значение переменной ПолнаяСтрокаСоединения, заменив пароль звездочками.

Srvr=»1c-server1″;Ref=»logistika»;Usr=»Кузнецов Ю.А.»;Pwd=»»;
Исключения после выполнения этой строки не возникает, Соединение=COMОбъект, ТипCOMОбъекта=»c.Application», РезультатСоединения=Ложь (но не проверяется)

Визуально клиента с окном запроса логина на экране не появляется (как при проверке при вводе правильного пароля или с пустым — когда в первом случае мелькает и трапается одна 1с и открывается и закрывается вторая.

Сообщение отредактировал unnamedПятница, 22.01.2021, 08:48

 
tormozit Дата: Пятница, 22.01.2021, 08:50 | Сообщение # 8

Генералиссимус

Группа: Администраторы

Репутация: 141

Статус: Оффлайн

Похоже проблема в том, что ранее платформа отображала диалог авторизации при запуске тонкого OLE сервера, если пароль не подходил. А теперь она его не отображает. Поэтому молчаливый запуск тонкого клиента под учеткой с непустым паролем теперь невозможен. Проблема понятна. https://www.hostedredmine.com/issues/917490

 
unnamed Дата: Пятница, 22.01.2021, 09:01 | Сообщение # 9

Лейтенант

Группа: Пользователи

Репутация: 53

Статус: Оффлайн

Цитата tormozit ()

ранее платформа отображала диалог авторизации

угу.

кстати, при этом в кэше объект остается пока, и в следующий раз при нажатии ошибка возникает уже в :

Процедура ОткрытьСвязанныйСеансТонкогоКлиентаЛкс() Экспорт 
Результат = ирКэш.ПолучитьСеансТонкогоКлиентаЛкс();
Результат.Visible = Истина;

последней строчке, где не обрабатывается.

Добавлено (22.01.2021, 10:04)
———————————————
Скорее всего, ошибка платформы. В актуальной документации на ИТС https://its.1c.ru/db/v8319doc#bookmark:cs:TI000000027 приведен такой способ подключения, даже без пользователя и пароля (ну либо предполагают в примере базу без пользователей)), на деле — даже при попытке убрать из строки соединения свойство Pwd отдельно и/или вместе с свойством Usr, объект не создается, приложение не стартует, в журнале ошибок windows все чисто, COM-объект Соединение рушится (до вызова connecta свойство Visible в нем имеется, после — нет).

В технологическом журнале соответствующие ошибки зафиксированы:

Дата начала Дата конца На сервере Вложенность Имя процесса Процесс ОС Компьютер соединения Имя пользователя ИБ Тип события Приложение соединения Описание исключения Строка модуля Имя исключения Клиент Поток ОС Соединение с ИБ
Длительность, мс TCP соединение Имя серв. контекста
11:59:00 22.01.21 11:59:00 22.01.21 ragent 16372 EXCP «OpenProcess(‘25644’,25644):
f6f167a0-dcc9-49ad-8f8e-2c9d9904e4fe: 87(0x00000057): Параметр задан неверно.» f6f167a0-dcc9-49ad-8f8e-2c9d9904e4fe 25184

11:59:02 22.01.21 11:59:02 22.01.21 2 1cv8c 13884 EXCP «srcvrscoresrcVResourceSessionImpl.cpp(550):
580392e6-ba49-4280-ac67-fcd6f2180121: Неправильное имя пользователя или пароль
Ошибка при выполнении запроса POST к ресурсу /e1cib/login:» 580392e6-ba49-4280-ac67-fcd6f2180121 1672

11:59:02 22.01.21 11:59:02 22.01.21 2 rphost 3828 1C-server1 EXCP 1CV8C «srcvrsbasesrcVResourceInfoBaseServerImpl.cpp(1469):
a01f465c-ed70-442e-ada5-847668d7a41c: Идентификация пользователя не выполнена
Неправильное имя или пароль пользователя» a01f465c-ed70-442e-ada5-847668d7a41c 6676 84 661
18780 Logistika
11:59:02 22.01.21 11:59:02 22.01.21 2 rphost 3828 1C-server1 EXCP 1CV8C «srcvrsbasesrcVResourceInfoBaseImpl.cpp(1104):
580392e6-ba49-4280-ac67-fcd6f2180121: Неправильное имя пользователя или пароль
Ошибка при выполнении запроса POST к ресурсу /e1cib/login:» 580392e6-ba49-4280-ac67-fcd6f2180121 6676 84 661
18780 Logistika

 
tormozit Дата: Суббота, 23.01.2021, 12:13 | Сообщение # 10

Генералиссимус

Группа: Администраторы

Репутация: 141

Статус: Оффлайн

Да. Ошибку платформы отправил https://www.hostedredmine.com/issues/917837

 
unnamed Дата: Воскресенье, 31.01.2021, 13:40 | Сообщение # 11

Лейтенант

Группа: Пользователи

Репутация: 53

Статус: Оффлайн

маленькая поправка — в текущей версии точка запятая теперь не в том месте в:

Цитата tormozit ()

И сообщи значение переменной ПолнаяСтрокаСоединения, заменив пароль звездочками.Сообщи значение поле «Строка соединения» из инструмента «Управление COM классами 1С», заменив пароль звездочками.

точка с запятой сейчас (5.76.2E) стоит в этом разделе перед двумя двойными кавычками.

 
tormozit Дата: Воскресенье, 31.01.2021, 19:50 | Сообщение # 12

Генералиссимус

Группа: Администраторы

Репутация: 141

Статус: Оффлайн

Действительно. Поправил расположение «;» в проверочной строке соединения в 5.77. Проверка со старым расположением тоже проходила, т.е. пароль считался пустым и лишние символы не вызывали ошибки.

 
unnamed Дата: Понедельник, 01.02.2021, 06:27 | Сообщение # 13

Лейтенант

Группа: Пользователи

Репутация: 53

Статус: Оффлайн

Цитата tormozit ()

Проверка со старым расположением тоже проходила

да. но при постановке пароля внутри кавычек уже выдавала ошибку)

в платформе 8.3.19.900 невозможность запуска без пароля компонент 1с не поправила, к сожалению.

 
tormozit Дата: Вторник, 02.02.2021, 21:32 | Сообщение # 14

Генералиссимус

Группа: Администраторы

Репутация: 141

Статус: Оффлайн

Ошибкой не признали. Ответ тех. поддержки 1С:

Цитата

Начиная с версии 8.3.14, поведение правильное. При запуске приложения в качестве automation-сервера информация, необходимая для запуска, должна быть установлена программно.
В общем случае automation-сервер может быть запущен на другом компьютере или от другого пользователя и не иметь возможности выполнять интерактивные операции с текущим пользователем.

 

Ошибка при вызове метода контекста (Connect): Произошла исключительная ситуация (V83.COMConnector.1): Версия компоненты ‘comcntr’ отличается от версии корневого модуля ‘core83’

Часто бывает, что при настроенной синхронизации после обновления платформы появляется ошибка «Произошла исключительная ситуация (V83.COMConnector.1): Версия компоненты ‘comcntr’ отличается от версии корневого модуля ‘core83’». Так происходит потому, что автоматически не зарегистрировалась компонента comcntr.dll из-за проблем с правами пользователя на компьютере.

Решить данную проблему можно двумя способами.

Переустановить платформу под правами Администратора или под пользователем, у которого есть такие права.

Способ №2.

Если не получилось как в способе №1, то можно вручную зарегистрировать самому эту компоненту.

Перед этим нам необходимо изменить Параметры контроль учетной записи.

Для Windows 7 нам необходимо зайти в Пуск затем в Панель управления.

Для Windows 10 нам необходимо в левом нижнем углу панели задач в строке поиска набрать Панель управления и перейти по открывшейся ссылке.

В правом верхнем углу Панели управления выбрать Просмотр-Мелкие значки и затем в списке перейти в Учетные записи пользователей.

Учетные записи пользователей

Там выбрать Изменить параметры контроля учетных записей.

Параметры контроля учетных записей

Затем поставить ползунок в самом нижнем положении.


Виртуальный 1С помощник

Ползунок параметров контроля учетных записей

И перезапустить компьютер.

После перезагрузки необходимо:

Для Windows 7 надо перейти в Пуск, затем в строке поиска ввести cmd.exe,нам покажет что найдена Командная строка и, щелкнув по ней правой клавишей мыши, выбрать «Запуск от имени администратора».

Для Windows 10 нам необходимо в левом нижнем углу панели задач в строке поиска набрать Командная панель или cmd.exe и, щелкнув по ней правой клавишей мыши, выбрать «Запуск от имени администратора».

Запуск командной строки

У нас откроется Командная строка, где нам необходимо ввести команду:

1.Для платформы x86

Regsvr32 «C:Program Files (х86)1cv8номер версии вашей платформыbincomcntr.dll» (regsvr32пробел»C:Program Files (х86)1cv8номер версии вашей платформыbincomcntr.dll»).

Команда для платформы x86

2.Для платформы х64

Regsvr32 «C:Program Files1cv8номер версии вашей платформыbincomcntr.dll» (regsvr32пробел»C:Program Files1cv8номер версии вашей платформыbincomcntr.dll»).

Команда для платформы x64

Затем нажать клавишу Enter.

Если все сделали правильно, то увидите вот такое окно.

Успешное выполнение команды

После этого необходимо перезагрузить компьютер. Как включится, пробуйте снова сделать синхронизацию.

На чтение 4 мин. Просмотров 800 Опубликовано 15.12.2019

При синхронизации 1С ЗУП 3.0 — БП 3.0 при проверке подключения выскакивает ошибка :

Не удалось подключиться к другой программе: -2147221164(0x80040154): Класс не зарегистрирован.

В чем может быть дело? В каком направлении рыть??

  1. 5
  2. 4
  3. 3
  4. 2
  5. 1

(0 голосов, в среднем: 0 из 5)

Поддержите нас, расскажите друзьям!

СПРОСИТЕ в комментариях!

Это проблема связана с соединением другой базы данных по COM объекту.
Очень вероятно что не хватает прав.

Думаю, тут скорее дело в том, что на COM-компонент не зарегистрирован в системе.
Нужно запустить командную строку под именем администратора, затем выполнить regsvr32 [ПутьККомпонентуCOM]. Компонент чаще всего находится в папке с платформой в папке bin (выглядит это приблизительно вот так: «C:Program Files (x86)1cv88.3.6.2449in»). И называется comcntr32.dll.

Спасибо большое, помогло!

Огромное спасибо! Помогло. Вы супер!

Илья, добрый день!
А для 32-х и 64-х платформ 1С различаются процедуры?

Спасибо, тоже помогло!

В командной строке ( CMD в поиске) в моем случае вводил: regsvr32 «C:Program Files (x86)1cv88.3.12.1529incomcntr.dll»

Все время забываю об этой длл. СПАСИБО, что напоминаете.

Для 64-х платформы:
C:WindowsSysWOW64RegSvr32.exe «C:Program Files1cv88.3.15.1656incomcntr.dll»

При использовании данного сайта, вы подтверждаете свое согласие на использование файлов cookie в соответствии с настоящим уведомлением в отношении данного типа файлов. Если вы не согласны с тем, чтобы мы использовали данный тип файлов, то вы должны соответствующим образом установить настройки вашего браузера или не использовать сайт.

Отправляя любую форму на сайте, вы соглашаетесь с политикой конфиденциальности данного сайта.

Ошибка при вызове метода контекста (Connect): Произошла исключительная ситуация (V83.COMConnector.1): Версия компоненты ‘comcntr’ отличается от версии корневого модуля ‘core83’

Часто бывает, что при настроенной синхронизации после обновления платформы появляется ошибка «Произошла исключительная ситуация (V83.COMConnector.1): Версия компоненты ‘comcntr’ отличается от версии корневого модуля ‘core83’». Так происходит потому, что автоматически не зарегистрировалась компонента comcntr.dll из-за проблем с правами пользователя на компьютере.

Решить данную проблему можно двумя способами.

Переустановить платформу под правами Администратора или под пользователем, у которого есть такие права.

Если не получилось как в способе №1, то можно вручную зарегистрировать самому эту компоненту.

Перед этим нам необходимо изменить Параметры контроль учетной записи.

Для Windows 7 нам необходимо зайти в Пуск затем в Панель управления.

Для Windows 10 нам необходимо в левом нижнем углу панели задач в строке поиска набрать Панель управления и перейти по открывшейся ссылке.

В правом верхнем углу Панели управления выбрать Просмотр-Мелкие значки и затем в списке перейти в Учетные записи пользователей.

Там выбрать Изменить параметры контроля учетных записей.


Затем поставить ползунок в самом нижнем положении.

И перезапустить компьютер.

После перезагрузки необходимо:

Для Windows 7 надо перейти в Пуск, затем в строке поиска ввести cmd.exe,нам покажет что найдена Командная строка и, щелкнув по ней правой клавишей мыши, выбрать «Запуск от имени администратора».

Для Windows 10 нам необходимо в левом нижнем углу панели задач в строке поиска набрать Командная панель или cmd.exe и, щелкнув по ней правой клавишей мыши, выбрать «Запуск от имени администратора».

У нас откроется Командная строка, где нам необходимо ввести команду:

1.Для платформы x86

Regsvr32 «C:Program Files (х86)1cv8номер версии вашей платформыincomcntr.dll» (regsvr32пробел»C:Program Files (х86)1cv8номер версии вашей платформыincomcntr.dll»).

2.Для платформы х64

Regsvr32 «C:Program Files1cv8номер версии вашей платформыincomcntr.dll» (regsvr32пробел»C:Program Files1cv8номер версии вашей платформыincomcntr.dll»).

Затем нажать клавишу Enter.

Если все сделали правильно, то увидите вот такое окно.

После этого необходимо перезагрузить компьютер. Как включится, пробуйте снова сделать синхронизацию.

Добрый день, коллеги! Назрел такой насущный вопрос:
Есть сервер 1С, его обновили до версии 1С.Предприятия 8.3.12.1685. И есть терминальный сервер, с которого работают с базами, размещенными на сервере 1С. Оба сервера под управлением Windows Server 2012 R2.
На сервере 1С размещена база Бух 3.0 и Зуп 3.1. Между ними на предыдущей платформе, 8.3.11.2954 была настроена синхронизация. На 8.3.11.2954 синхронизация работала нормально, но для обновления Бух до последней конфигурации были вынуждены перейти на 8.3.12.1685(предвосхищая возможный вопрос — нет, тестового сервера нет). После перехода выяснилось, что синхронизация не работает. При попытке соединения(например, в окне проверки настроек) получаю сообщение:

Привет, уважаемые гуру!

я начинающий 1с-ник. Столкнулся с проблемой. Заменил комп на новый и перестал работать код:

    V83 = Новый COMОбъект(«V83.Application»);    

    connection = Истина;

    ДанныеДляПокдлючения = «File=»»» +

                           СокрЛП(«C:8.3.12.1412test01») + //ПутьКбазе

                                                      «»»;Usr=»»» +

                           СокрЛП(«user_wo_ws») + //Логин

                           «»»;Pwd = «»» +

                           СокрЛП(«1111») + «»»;»; //Пароль

    

    Попытка

        connection = V83.Connect(ДанныеДляПокдлючения);

    Исключение

        //Сообщить(ОписаниеОшибки());

        ТекстОшибки = ОписаниеОшибки();        

        connection = Ложь;

        #Если Клиент Тогда

            Сообщить(«ОШИБКА ПОДКЛЮЧЕНИЯ: » + ТекстОшибки);            

        #КонецЕсли

    КонецПопытки;

Ошибка: «Ошибка при вызове метода контекста (Connect): Неизвестная ошибка»

База серверная. Платформа 8.3.12.1790

При этом на старом ПК всё работает, на новом нет.

Заметил, что на старом ПК в НАСТРОЙКА DCOM есть «1CV83 Application», а на новом компе нет.

Регистрация библиотеки comcntr.dll эффекта не даёт. Переустановка платформы на клиентском ПК тоже не помогает.

Подскажите, куда копать?

Ошибка при вызове метода контекста (Connect): Произошла исключительная ситуация (V83.COMConnector.1): Версия компоненты ‘comcntr’ отличается от версии корневого модуля ‘core83’

Часто бывает, что при настроенной синхронизации после обновления платформы появляется ошибка «Произошла исключительная ситуация (V83.COMConnector.1): Версия компоненты ‘comcntr’ отличается от версии корневого модуля ‘core83’». Так происходит потому, что автоматически не зарегистрировалась компонента comcntr.dll из-за проблем с правами пользователя на компьютере.

Решить данную проблему можно двумя способами.

Способ №1.

Переустановить платформу под правами Администратора или под пользователем, у которого есть такие права.

Способ №2.

Если не получилось как в способе №1, то можно вручную зарегистрировать самому эту компоненту.

Перед этим нам необходимо изменить Параметры контроль учетной записи.

Для Windows 7 нам необходимо зайти в Пуск затем в Панель управления.

Для Windows 10 нам необходимо в левом нижнем углу панели задач в строке поиска набрать Панель управления и перейти по открывшейся ссылке.

В правом верхнем углу Панели управления выбрать Просмотр-Мелкие значки и затем в списке перейти в Учетные записи пользователей.

Учетные записи пользователей

Там выбрать Изменить параметры контроля учетных записей.

Параметры контроля учетных записей

Затем поставить ползунок в самом нижнем положении.


Виртуальный 1С помощник

Ползунок параметров контроля учетных записей

И перезапустить компьютер.

После перезагрузки необходимо:

Для Windows 7 надо перейти в Пуск, затем в строке поиска ввести cmd.exe,нам покажет что найдена Командная строка и, щелкнув по ней правой клавишей мыши, выбрать «Запуск от имени администратора».

Для Windows 10 нам необходимо в левом нижнем углу панели задач в строке поиска набрать Командная панель или cmd.exe и, щелкнув по ней правой клавишей мыши, выбрать «Запуск от имени администратора».

Запуск командной строки

У нас откроется Командная строка, где нам необходимо ввести команду:

1.Для платформы x86

Regsvr32 «C:Program Files (х86)1cv8номер версии вашей платформыbincomcntr.dll» (regsvr32пробел»C:Program Files (х86)1cv8номер версии вашей платформыbincomcntr.dll»).

Команда для платформы x86

2.Для платформы х64

Regsvr32 «C:Program Files1cv8номер версии вашей платформыbincomcntr.dll» (regsvr32пробел»C:Program Files1cv8номер версии вашей платформыbincomcntr.dll»).

Команда для платформы x64

Затем нажать клавишу Enter.

Если все сделали правильно, то увидите вот такое окно.

Успешное выполнение команды

После этого необходимо перезагрузить компьютер. Как включится, пробуйте снова сделать синхронизацию.

Содержание

  • Ошибка при вызове метода контекста (Connect): Произошла исключительная ситуация (V83.COMConnector.1): Версия компоненты ‘comcntr’ отличается от версии корневого модуля ‘core83’
    • Заполнение внешней таблицы
    • Выборка данных и запись
    • Использование хранимых процедур
  • Новые записи:

Ошибка при вызове метода контекста (Connect): Произошла исключительная ситуация (V83.COMConnector.1): Версия компоненты ‘comcntr’ отличается от версии корневого модуля ‘core83’

Часто бывает, что при настроенной синхронизации после обновления платформы появляется ошибка «Произошла исключительная ситуация (V83.COMConnector.1): Версия компоненты ‘comcntr’ отличается от версии корневого модуля ‘core83′». Так происходит потому, что автоматически не зарегистрировалась компонента comcntr.dll из-за проблем с правами пользователя на компьютере.

Решить данную проблему можно двумя способами.

Способ №1.

Переустановить платформу под правами Администратора или под пользователем, у которого есть такие права.

Способ №2.

Если не получилось как в способе №1, то можно вручную зарегистрировать самому эту компоненту.

Перед этим нам необходимо изменить Параметры контроль учетной записи.

Для Windows 7 нам необходимо зайти в Пуск затем в Панель управления.

Для Windows 10 нам необходимо в левом нижнем углу панели задач в строке поиска набрать Панель управления и перейти по открывшейся ссылке.

В правом верхнем углу Панели управления выбрать Просмотр-Мелкие значки и затем в списке перейти в Учетные записи пользователей.

Там выбрать Изменить параметры контроля учетных записей.


Затем поставить ползунок в самом нижнем положении.

И перезапустить компьютер.

После перезагрузки необходимо:

Для Windows 7 надо перейти в Пуск, затем в строке поиска ввести cmd.exe,нам покажет что найдена Командная строка и, щелкнув по ней правой клавишей мыши, выбрать «Запуск от имени администратора».

Для Windows 10 нам необходимо в левом нижнем углу панели задач в строке поиска набрать Командная панель или cmd.exe и, щелкнув по ней правой клавишей мыши, выбрать «Запуск от имени администратора».

У нас откроется Командная строка, где нам необходимо ввести команду:

1.Для платформы x86

2.Для платформы х64

Затем нажать клавишу Enter.

Если все сделали правильно, то увидите вот такое окно.

После этого необходимо перезагрузить компьютер. Как включится, пробуйте снова сделать синхронизацию.

Пришлось недавно ближе поработать с объектами ADODB. Давно этого не делал, так что пришлось снова смотреть в старый код, а что-то и в интернете поискать. Решил скомпоновать базу здесь, в блоге — для дальнейшего возвращения.
Работа с ADODB производится через несколько объектов:
ADODB.Connection — Объект производит подключение к источнику данных, а так же трансляцию команд и наборов данных
ADODB.RecordSet — Объект предоставляющий механизмы работы с набором данных, такие как получение, модификация, удаление или добавление данных.
ADODB.Command — Объект, так же предоставляющий механизмы работы с наборами данных, но, в отличие от RecordSet, не возвращает данные на клиента.
ADODB.Connection

Перед тем как начать работать с данными из внешнего источника необходимо установить с ним связь, для этого вызывается функция Open объекта Connection, в единственный параметр этой функции передается строка ConnectionString с описанием параметров подключения.
Попытка ADOСоединение = Новый COMОбъект(«ADODB.Connection»); ADOСоединение.Open(«Provider=SQLOLEDB.1; |Persist Security Info=False; |User ID=»+Пользователь+»; |Password=»+ Пароль+»; |Initial Catalog=»+ База+»; |Data Source=»+ Сервер); Возврат ADOСоединение; Исключение КонецПопытки;
Provider — Имя драйвера источника данных (к примеру SQLOLEDB.1 для MS SQL server)
Persist Security Info — необходимость использования шифрованого канала
User ID — Имя пользователя внешнего источника
Password — Пароль пользователя
Initial Catalog — Имя базы внешного источника
Data Source — Имя сервера
ADODB.RecordSet
Открытие набора данных для всей таблицы. Этот вариант хорош тем, что есть возможность указания дополнительных параметров набора данных.
RecordSet.Open(Источник, Соединение, ТипКурсора, ТипБлокировки, Параметры)
В приведенном ниже примере набор данных открывается с параметрами
Источник — «IMPORT_PRODUCTS»
Соединение — мADOСоединение
ТипКурсора — «0» (adOpenForwardOnly)
ТипБлокировки — «2» (adLockPessimistic)
Параметры — «2» (adCmdTable)
ADOНаборДанныхТовары = Новый COMОбъект(«ADODB.RecordSet»); ADOНаборДанныхТовары.Open(«IMPORT_PRODUCTS», мADOСоединение, 0, 2, 2);
Открытие набора данных по запросу (использование дополнительных параметров вызывает исключения)
ТекстЗапросаТоваров = «SELECT * | FROM | where in (SELECT FROM where (( = ») |or ( = ‘NULL’) or( = ‘1’)))»; ADOНаборДанныхТовары = Новый COMОбъект(«ADODB.RecordSet»); ADOНаборДанныхТовары .Open(ТекстЗапросаТоваров, мADOСоединение);

Заполнение внешней таблицы

При необходимости очистить таблицу внешнего источника данных, и загрузить туда обновленные данные.
Подключаемся к внешней базе
Попытка СтрокаСоединения = «Provider=SQLOLEDB.1; |Persist Security Info=False; |User ID=»+Пользователь+»; |Password=»+ Пароль+»; |Initial Catalog=»+ База+»; |Data Source=»+ Сервер); Connection = Новый COMОбъект(«ADODB.Connection»); Connection.Open(СтрокаСоединения); Исключение Возврат; КонецПопытки; С помощью объекта ADODB.Command выполняем запрос по удалению данных из таблицы по определенному условию. При этом, в CommandText прописываем сам запрос, и важно указать CommandType равным 1.
Command = Новый COMОбъект(«ADODB.Command»); Command.CommandTimeout = 100; Command.CommandText = «DELETE FROM .. WHERE PERIOD_ID = Convert(datetime,’»+Лев(Строка(ДатаНач),10)+»‘,103)»; Command.CommandType = 1; Command.ActiveConnection = Connection; Command.Execute();
Устанавливаем новый запрос, который запишет в таблицу отобранные данные, и выполняем его.
// Выборка данных за прошлый месяц Выборка = Запрос.Выполнить.Выбрать(); Пока Выборка.Следующий() Цикл Command.CommandText = «INSERT INTO ..(PERIOD_ID, CO_ID, ART_ID, S ) VALUES (» + » Convert(datetime,’»+Лев(Строка(ДатаНач),10)+»‘,103)» + «,NULL» + «,»+Формат(Выборка.Код, «ЧГ=») + «,»+Строка(?(Сумма = 0,»0″,Формат(Сумма,»ЧРД=.; ЧГ=; ЧО=»))) +»)»; Попытка Command.Execute(); Исключение Сообщить(«Ошибка записи данных в базу: «+ОписаниеОшибки()); КонецПопытки; КонецЦикла;

Выборка данных и запись

Вариант ситуации, когда необходимо выполнить выборку данных, и записать результат для дальнейшей обработки. (Не забываем создавать объект Connection)
В данном случае используется объект ADODB.Recordset, который позволяет получить набор записей.
CommandText = «select g_id, saledate, sqty, scost from dbo.»+НастройкиADODB.dbo+»(‘»+Формат(НачПериода,»ДФ=yyyyMMdd»)+»‘,’»+Формат(КонПериода,»ДФ=yyyyMMdd»)+»‘) where g_id in («+СтрокаКодовТМЦ+»)»; Попытка rsRES = NEW COMObject(«ADODB.Recordset»); rsRES.Open(CommandText, Connection); Исключение Connection.Close(); Возврат; КонецПопытки Пока не rsRES.eof() Цикл НоваяЗапись = НаборЗаписей.Добавить(); Для х = 0 по 3 Цикл НоваяЗапись = rsRES.Fields(х).Value; КонецЦикла; rsRES.MoveNext(); КонецЦикла; НаборЗаписей.Записать(Истина); rsRES.Close(); Connection.Close();
Кстати, советую пользоваться функцией EOF вместо RecordCount, так как последняя очень не надежна, неопределенная во времени выполнения и может привести к «залипанию» процесса — подробнее можно почитать на форумах.

Использование хранимых процедур

Хранимые процедуры можно вызвать просот из запроса, вписав в начале текста слово «exec», либо указав соответствующий CommandType и название хранимой процедуры в CommandText.
Command = Новый COMОбъект(«ADODB.Command»); Command.CommandTimeout = 100; Command.ActiveConnection = Connection; Command.CommandText = «add_image»; Command.CommandType = 4; Создаем параметр посредством объекта Parameter (на перевес этому можно воспользоваться методом CreateParameter), и добавляем его методом Append в наше подключение.
Парам = Новый COMОбъект(«ADODB.Parameter»); Парам.Name = «@code»; Парам.Direction = 1; //1 — adParamInput Парам.Type = 201; // Парам.Size = 255; Парам.Value = ВнутреннийКод; Command.Parameters.Append(Парам);
Переводим файл, который хотим передать в двоичный поток, создаем и добавляем параметр
Поток = Новый COMОбъект(«ADODB.Stream»); Поток.Type = 1; //StreamTypeEnum.adTypeBinary = 1 StreamTypeEnum.adTypeText = 2 Поток.Open(); Поток.LoadFromFile(ПолноеИмяФайла); локПотокБайт = Новый ComSafeArray(Поток.Read()); Парам = Новый COMОбъект(«ADODB.Parameter»); Парам.Name = «@file_data»; Парам.Direction = 1; //1 — adParamInput Парам.Type = 205; //205 — adLongVarBinary Парам.Size = локПотокБайт.GetLength(); Парам.Value = локПотокБайт; Command.Parameters.Append(Парам); Command.Execute();

  1. 21.02.2018, 12:02

    #1

    fumma вне форума


    Гость форума


    По умолчанию Проблема при синхронизации, помогите

    При попытке синхронизации БП и ЗУП 8.3 выходит ошибка:

    Не удалось подключиться к другой программе: {ОбщийМодуль.ОбщегоНазначе нияКлиентСервер.Модуль(1166)} : Ошибка при вызове метода контекста (Connect)
    Результат.Соединение = COMConnector.Connect(СтрокаСоединен� �я);
    по причине:
    Произошла исключительная ситуация (V83.COMConnector.1): Версия компоненты ‘comcntr’ (8.3.8.1861) отличается от версии корневого модуля ‘core83’ (8.3.10.2466)

    Помогите, пожалуйста, разобраться


  2. 21.02.2018, 12:06

    #2

    fumma вне форума


    Гость форума


    По умолчанию Re: Проблема при синхронизации, помогите

    Не удалось подключиться к другой программе: {ОбщийМодуль.ОбщегоНазначе нияКлиентСервер.Модуль(1166)} : Ошибка при вызове метода контекста (Connect)
    Результат.Соединение = COMConnector.Connect(СтрокаСоединен� �я);
    по причине:
    Произошла исключительная ситуация (V83.COMConnector.1): Версия компоненты ‘comcntr’ (8.3.8.1861) отличается от версии корневого модуля ‘core83’ (8.3.10.2466)


  3. 21.02.2018, 12:07

    #3

    fumma вне форума


    Гость форума


    По умолчанию Re: Проблема при синхронизации, помогите

    Не удалось подключиться к другой программе: {ОбщийМодуль.ОбщегоНазначе нияКлиентСервер.Модуль(1166)} : Ошибка при вызове метода контекста (Connect)
    Результат.Соединение = COMConnector.Connect(СтрокаСоединен� �я);
    по причине:
    Произошла исключительная ситуация (V83.COMConnector.1): Версия компоненты ‘comcntr’ (8.3.8.1861) отличается от версии корневого модуля ‘core83’ (8.3.10.2466)


Идея интересная, но у меня имеет место быть проблема. Если создавать COM-объекты разных версий с некоторой паузой между этим созданиями, то всё хорошо, вроде бы.
А, вот, если эту паузу не выдерживать — то возможно возникновение двух ошибок (я так и не смог понять причины и следствия когда какая ошибка возникает, скорее всего сначала первая, а при повторной попытке уже вторая)
Запускалось всё под клиентом одной или второй версии (пробовал и так и так) — файловый вариант.
Основной COM-объект был версии 8.3.10.2252, но даже если к нему обращаться как к «v83.COMConnector» то это ничего не меняло
Последовательность создания COM-объектов не влияет, но если получить первую ошибку, переставить их местами — возникает вторая ошибка
Версия клиента 1С: Предприятие так же не влияет.
Запуск в новом сеансе 1С проблему не решает.

Выполняю такой алгоритм:

ком = новый COMОбъект("V83.COMConnector_8.3.10.2252");
ком.ConnectAgent("srv1");
ком = новый COMОбъект("v83.COMConnector_8.3.8.2054");
ком.ConnectAgent("srv2");

Возникает первая ошибка:

{ВнешняяОбработка.ВнешняяОбработка1.Форма.Форма.Форма(13)}: Ошибка при вызове метода контекста (ConnectAgent)
ком.ConnectAgent(«srv2»);
по причине:
Неизвестная ошибка

При повторном запуске она повторяется

Переставляем местами создание COM-Объектов

ком = новый COMОбъект("v83.COMConnector_8.3.8.2054");
ком.ConnectAgent("srv2");
ком = новый COMОбъект("V83.COMConnector_8.3.10.2252");
ком.ConnectAgent("srv1");

И возникает вторая ошибка:

{ВнешняяОбработка.ВнешняяОбработка1.Форма.Форма.Форма(12)}: Ошибка при вызове конструктора (COMОбъект)
ком = новый COMОбъект(«V83.COMConnector_8.3.10.2252»);
по причине:
-2147024769(0x8007007F): Не найдена указанная процедура.

При повторном запуске она повторяется

Далее — если снова переставить обратно — ошибка будет повторяться

{ВнешняяОбработка.ВнешняяОбработка1.Форма.Форма.Форма(10)}: Ошибка при вызове конструктора (COMОбъект)
ком = новый COMОбъект(«V83.COMConnector_8.3.10.2252»);
по причине:
-2147024769(0x8007007F): Не найдена указанная процедура. [

Спустя минут 15-20 всё проходит — и начинается с начала (с учётом переставленных вызовов создания COM-объектов):

{ВнешняяОбработка.ВнешняяОбработка1.Форма.Форма.Форма(13)}: Ошибка при вызове метода контекста (ConnectAgent)
ком.ConnectAgent(«srv1»);
по причине:
Неизвестная ошибка

Значит COM-объект где-то кешируется (платформой 1С? — мало вероятно — т.к. перезапуск клиента ничего не решает) и при попытке создать повторно (пусть и, в общем-то, другой COM-Объект) идёт обращение к старому и происходит какой-то конфликт версий.

Увы, это почти ставит крест на данной методике. Но, если одновременная (читай последовательная но в одно и то же время в пределах 20 минут) работа не требуется — описанный в статье метод будет работать.
Но, лично мне нужна была одновременная работа
Надо попробовать выполнить те же обращения, но не из 1С — если проблемы не будет, то значит это 1С кеширует (и это можно обойти — но логику работы с COM-объектом придётся выносить за пределы 1С), а если будет…. то нужно что инове придумывать!

Попробовал так же с компонентами редакции 8.2:

ком = новый COMОбъект("v82.COMConnector_8.2.19.80");
ком.ConnectAgent("srv3");
ком = новый COMОбъект("V82.COMConnector_8.2.19.68");
ком.ConnectAgent("srv4");

В общем-то такая же ситуация, но ошибка всегда на ВТОРОЙ по счёту компоненте (не важно какой она версии!!!) и всегда такая:

{ВнешняяОбработка.ВнешняяОбработка1.Форма.Форма.Форма(42)}: Ошибка при вызове метода контекста (ConnectAgent)
ком.ConnectAgent("srv4);
по причине:
Неизвестная ошибка

При этом если создавать и использовать их отдельно (посадил на разные кнопки)
То ситуация такая
1. Любую создаю — всё нормально
2. Создаю вторую — возникает ошибка
3. Создаю первую — ошибки нет
4. Создаю вторую — ошибка
5. Повторно создаю вторую — ошибки нет
6. Снова создаю вторую — ошибки нет
7. Создаю первую — ошибка
8. Создаю первую — ошибки нет
9. Создаю вторую — ошибка
10. Создаю вторую — ошибки нети

То есть первый раз создаётся нормально и если сразу создавать другой версии — будет ошибка — но при повторном создании — ошибки не будет — но она снова будет у первой, что при повторном создании так же ошибки не будет
Поэтому с v82 я написал вот так — и в общем-то оно работает

попытка
ком = новый COMОбъект("v82.COMConnector_8.2.19.80");
ком.ConnectAgent("srv3");
исключение
сообщить("v82.COMConnector_8.2.19.80: "+ОписаниеОшибки());
ком = новый COMОбъект("v82.COMConnector_8.2.19.80");
ком.ConnectAgent("srv3");
конецпопытки;
попытка
ком = новый COMОбъект("V82.COMConnector_8.2.19.68");
ком.ConnectAgent("srv4");
исключение
сообщить("v82.COMConnector_8.2.19.68: "+ОписаниеОшибки());
ком = новый COMОбъект("V82.COMConnector_8.2.19.68");
ком.ConnectAgent("srv4");
конецпопытки;

Показать

Значит компонента 8.2 не кэшируется, в отличии от 8.3

Попытка же написать так же для 8.3

попытка
ком = новый COMОбъект("V83.COMConnector_8.3.10.2252");
ком.ConnectAgent("srv1");
исключение
сообщить("V83.COMConnector_8.3.10.2252: "+ОписаниеОшибки());
ком = новый COMОбъект("V83.COMConnector_8.3.10.2252");
ком.ConnectAgent("srv1");
конецпопытки;
попытка
ком = новый COMОбъект("v83.COMConnector_8.3.8.2054");
ком.ConnectAgent("srv2");
исключение
сообщить("v83.COMConnector_8.3.8.2054: "+ОписаниеОшибки());
ком = новый COMОбъект("v83.COMConnector_8.3.8.2054");
ком.ConnectAgent("srv2");
конецпопытки;

Показать

первый раз отработало, но повторный запуск привёл к ошибке
V83.COMConnector_8.3.10.2252:

{ВнешняяОбработка.ВнешняяОбработка1.Форма.Форма.Форма(38)}: Ошибка при вызове конструктора (COMОбъект): -2147024769(0x8007007F): Не найдена указанная процедура.

это самая первая строка в первой попытке — и эта ошибка дальше стабильно повторялась

Попробовал работать параллельно с компонентами V82 и v82

ком = новый COMОбъект("v82.COMConnector_8.2.19.80");
ком.ConnectAgent("srv3");
ком = новый COMОбъект("V83.COMConnector_8.3.10.2252");
ком.ConnectAgent("srv1");

Никаких ошибок не возникает!

Так что — как 1С (или windows) это всё обрабатывают, что возникает такой винегрет из разных ситуаций — непонятно….
Надо ещё разбираться и экспериментировать

Возможно эти проблемы чисто связаны с моей конфигурацией ОС — использую windows 8
А может дело в используемых релизах 1С: Предприятие, клиента и компонент (хотя на клиенте 8.2.19.80 я тоже попробовал — всё то же самое)

Может, у меня просто компоненты как-то неправильно установлены или какие-то заморочки с настройками COM+
Я, например, не нашёл типовых компонент в разделе COM+ как на картинках автора
Хорошо бы кто-то ещё это всё проверил бы на своих конфигурациях платформ и компонент

1C 8 Произошла исключительная ситуация (V83.COMConnector.1): Внешнее соединение не разрешено для указанного пользователя 1С:Предприятия

Описание ошибки:
В ранее работавшем обмене из базы УТ в БП при выполнении выгрзки стала возникать ошибка:
Ошибка при установке подключения ко второй информационной базе: Не удалось подключится к другой программе: {ОбщийМодуль.ОбщегоНазначения.Модуль(9234)}: Ошибка при вызове метода контекста (Connect)
Результат.Соединение = COMConnector.Connect(СтрокаСоединения);

по причине:
Произошла исключительная ситуация (V83.COMConnector.1): Внешнее соединение не разрешено для указанного пользователя 1С:Предприятия

Найденные решения:

Нажатие на изображении увеличит его
1C 8 что сделать, чтобы убрать, исправить ошибку V83.COMConnector.1 Внешнее соединение не разрешено для указанного пользователя 1С
Рис. 1. Пример возникновения ошибки при работе обмена между базами 1С УТ 10.3 и БП 3.0

Так же перестал работать настроенный и работавший ранее односторонний обмен из базы конфигурации 1С: Зарплата и управление персоналом, ред. 3.0 в 1С: Бухгалтерия предприятия, ред. 3.0. В журнале регистрации ошибок обмена так же содержалась похожая формулировку от исходной ошибки:

Не удалось подключиться к другой программе: Произошла исключительная ситуация (V83.COMConnector.1): Внешнее соединение не разрешено для указанного пользователя 1С:Предприятия
по причине:
Произошла исключительная ситуация (V83.COMConnector.1): Внешнее соединение не разрешено для указанного пользователя 1С:Предприятия

Нажатие на изображении увеличит его
1C 8 ошибка выгрузки, синхронизации, что сделать, как исправить, Ошибка при установке подключения ко второй информационной базе: Не удалось подключится к другой программе
Рис. 2. Пример ошибки при работе выгрузки данных из базы 1С ЗУП 3.0 в БП 3.0 

Итак, попробуем разобраться, в чем причина, почему возникает ошибка, проблема «Произошла исключительная ситуация (V83.COMConnector.1): Внешнее соединение не разрешено для указанного пользователя 1С:Предприятия» и как ее исправить?

В тексте ошибки явно находим подсказку на то, что нужно в первую очередь проверить права пользователя в базе, к которой происходит подключение для обмена справочниками и документами в рамках настроенной выгрузки. Формулировка «Внешнее соединение не разрешено для указанного пользователя» указывает, что дело в первую очередь в пользователе «Обмен», как видно на Рис.1. Удивительным было то, что ранее у пользователя, под которым выполнялось com-подключение к базе-приемнику, все было настроено для работы обмена и работало продолжительное время.

Поэтому в базе Бухгалтерия переходим в раздел «Администрирование» — ссылка списка настроек «Настройки пользователей и прав» — ссылка «Пользователи».

Нажатие на изображении увеличит его
1C 8 как открыть список пользователей базы в БП, бухгалтерия, 3.0
Рис. 3. Переход к списку пользователей в базе конфигурации 1С: Бухгалтерия 3.0

Откроется форма списка пользователей базы. Находим в списке пользователя «Обмен» — в Вашем случае это будет пользователь, под которым выполняется выгрузка, если используется прямое подключение к базе. Нажимаем на надпись-ссылку «Права доступа».

Нажатие на изображении увеличит его
форма настройки пользователя в базе 1с 8 бухгалтерия 3
Рис. 4. Вид формы настроек пользователя базы 1С: Бухгалтерия предприятия, редакция 3.0

Как оказалось, в моем случае, ошибка «Не удалось подключиться к другой программе: Произошла исключительная ситуация (V83.COMConnector.1): Внешнее соединение не разрешено для указанного  пользователя 1С:Предприятия по причине» возникла с некоторого времени из-за того, что у пользователя отключены все права доступа в списке «Профили пользователя». Разбираться — почему так было бы долго. Это мог быть кто-нибудь из пользователей базы, или что крайне маловероятно, но все-таки возможно — результат обновления базы (крайне редко, но удивительные веди после обновлений могут возникать). В общем проще было установить снова права пользователю. Для возможности выполнения обмена в принципе достаточно профиля «Администратор», но, на всякий случай рекомендуется еще и установить профиль «Синхронизация данных с другими программами».

Нажатие на изображении увеличит его
1С 8 какие нужны права пользователю для работы обмена, выгрузки
Рис. 5. Состав прав доступа пользователя для возможности выполнения синхронизации (обмена данных)

После проделанных операций работоспособность синхронизации между базами 1С 8 была восстановлена.

Оцените, помогло ли Вам предоставленное описание решения ошибки?




© www.azhur-c.ru 2014-2020. Все права защищены. Использование текстов и изображений с данной страницы без письменного разрешения владельца запрещено. При использовании материалов с данной страницы обязательно указание ссылки на данную страницу.

20-07-2022

Журавлев А.С.
(Сайт www.azhur-c.ru)

Содержание

  • Ошибка при вызове метода контекста (Connect): Произошла исключительная ситуация (V83.COMConnector.1): Версия компоненты ‘comcntr’ отличается от версии корневого модуля ‘core83’
    • Заполнение внешней таблицы
    • Выборка данных и запись
    • Использование хранимых процедур
  • Новые записи:

Ошибка при вызове метода контекста (Connect): Произошла исключительная ситуация (V83.COMConnector.1): Версия компоненты ‘comcntr’ отличается от версии корневого модуля ‘core83’

Часто бывает, что при настроенной синхронизации после обновления платформы появляется ошибка «Произошла исключительная ситуация (V83.COMConnector.1): Версия компоненты ‘comcntr’ отличается от версии корневого модуля ‘core83′». Так происходит потому, что автоматически не зарегистрировалась компонента comcntr.dll из-за проблем с правами пользователя на компьютере.

Решить данную проблему можно двумя способами.

Способ №1.

Переустановить платформу под правами Администратора или под пользователем, у которого есть такие права.

Способ №2.

Если не получилось как в способе №1, то можно вручную зарегистрировать самому эту компоненту.

Перед этим нам необходимо изменить Параметры контроль учетной записи.

Для Windows 7 нам необходимо зайти в Пуск затем в Панель управления.

Для Windows 10 нам необходимо в левом нижнем углу панели задач в строке поиска набрать Панель управления и перейти по открывшейся ссылке.

В правом верхнем углу Панели управления выбрать Просмотр-Мелкие значки и затем в списке перейти в Учетные записи пользователей.

Там выбрать Изменить параметры контроля учетных записей.


Затем поставить ползунок в самом нижнем положении.

И перезапустить компьютер.

После перезагрузки необходимо:

Для Windows 7 надо перейти в Пуск, затем в строке поиска ввести cmd.exe,нам покажет что найдена Командная строка и, щелкнув по ней правой клавишей мыши, выбрать «Запуск от имени администратора».

Для Windows 10 нам необходимо в левом нижнем углу панели задач в строке поиска набрать Командная панель или cmd.exe и, щелкнув по ней правой клавишей мыши, выбрать «Запуск от имени администратора».

У нас откроется Командная строка, где нам необходимо ввести команду:

1.Для платформы x86

2.Для платформы х64

Затем нажать клавишу Enter.

Если все сделали правильно, то увидите вот такое окно.

После этого необходимо перезагрузить компьютер. Как включится, пробуйте снова сделать синхронизацию.

Пришлось недавно ближе поработать с объектами ADODB. Давно этого не делал, так что пришлось снова смотреть в старый код, а что-то и в интернете поискать. Решил скомпоновать базу здесь, в блоге — для дальнейшего возвращения.
Работа с ADODB производится через несколько объектов:
ADODB.Connection — Объект производит подключение к источнику данных, а так же трансляцию команд и наборов данных
ADODB.RecordSet — Объект предоставляющий механизмы работы с набором данных, такие как получение, модификация, удаление или добавление данных.
ADODB.Command — Объект, так же предоставляющий механизмы работы с наборами данных, но, в отличие от RecordSet, не возвращает данные на клиента.
ADODB.Connection

Перед тем как начать работать с данными из внешнего источника необходимо установить с ним связь, для этого вызывается функция Open объекта Connection, в единственный параметр этой функции передается строка ConnectionString с описанием параметров подключения.
Попытка ADOСоединение = Новый COMОбъект(«ADODB.Connection»); ADOСоединение.Open(«Provider=SQLOLEDB.1; |Persist Security Info=False; |User ID=»+Пользователь+»; |Password=»+ Пароль+»; |Initial Catalog=»+ База+»; |Data Source=»+ Сервер); Возврат ADOСоединение; Исключение КонецПопытки;
Provider — Имя драйвера источника данных (к примеру SQLOLEDB.1 для MS SQL server)
Persist Security Info — необходимость использования шифрованого канала
User ID — Имя пользователя внешнего источника
Password — Пароль пользователя
Initial Catalog — Имя базы внешного источника
Data Source — Имя сервера
ADODB.RecordSet
Открытие набора данных для всей таблицы. Этот вариант хорош тем, что есть возможность указания дополнительных параметров набора данных.
RecordSet.Open(Источник, Соединение, ТипКурсора, ТипБлокировки, Параметры)
В приведенном ниже примере набор данных открывается с параметрами
Источник — «IMPORT_PRODUCTS»
Соединение — мADOСоединение
ТипКурсора — «0» (adOpenForwardOnly)
ТипБлокировки — «2» (adLockPessimistic)
Параметры — «2» (adCmdTable)
ADOНаборДанныхТовары = Новый COMОбъект(«ADODB.RecordSet»); ADOНаборДанныхТовары.Open(«IMPORT_PRODUCTS», мADOСоединение, 0, 2, 2);
Открытие набора данных по запросу (использование дополнительных параметров вызывает исключения)
ТекстЗапросаТоваров = «SELECT * | FROM | where in (SELECT FROM where (( = ») |or ( = ‘NULL’) or( = ‘1’)))»; ADOНаборДанныхТовары = Новый COMОбъект(«ADODB.RecordSet»); ADOНаборДанныхТовары .Open(ТекстЗапросаТоваров, мADOСоединение);

Заполнение внешней таблицы

При необходимости очистить таблицу внешнего источника данных, и загрузить туда обновленные данные.
Подключаемся к внешней базе
Попытка СтрокаСоединения = «Provider=SQLOLEDB.1; |Persist Security Info=False; |User ID=»+Пользователь+»; |Password=»+ Пароль+»; |Initial Catalog=»+ База+»; |Data Source=»+ Сервер); Connection = Новый COMОбъект(«ADODB.Connection»); Connection.Open(СтрокаСоединения); Исключение Возврат; КонецПопытки; С помощью объекта ADODB.Command выполняем запрос по удалению данных из таблицы по определенному условию. При этом, в CommandText прописываем сам запрос, и важно указать CommandType равным 1.
Command = Новый COMОбъект(«ADODB.Command»); Command.CommandTimeout = 100; Command.CommandText = «DELETE FROM .. WHERE PERIOD_ID = Convert(datetime,’»+Лев(Строка(ДатаНач),10)+»‘,103)»; Command.CommandType = 1; Command.ActiveConnection = Connection; Command.Execute();
Устанавливаем новый запрос, который запишет в таблицу отобранные данные, и выполняем его.
// Выборка данных за прошлый месяц Выборка = Запрос.Выполнить.Выбрать(); Пока Выборка.Следующий() Цикл Command.CommandText = «INSERT INTO ..(PERIOD_ID, CO_ID, ART_ID, S ) VALUES (» + » Convert(datetime,’»+Лев(Строка(ДатаНач),10)+»‘,103)» + «,NULL» + «,»+Формат(Выборка.Код, «ЧГ=») + «,»+Строка(?(Сумма = 0,»0″,Формат(Сумма,»ЧРД=.; ЧГ=; ЧО=»))) +»)»; Попытка Command.Execute(); Исключение Сообщить(«Ошибка записи данных в базу: «+ОписаниеОшибки()); КонецПопытки; КонецЦикла;

Выборка данных и запись

Вариант ситуации, когда необходимо выполнить выборку данных, и записать результат для дальнейшей обработки. (Не забываем создавать объект Connection)
В данном случае используется объект ADODB.Recordset, который позволяет получить набор записей.
CommandText = «select g_id, saledate, sqty, scost from dbo.»+НастройкиADODB.dbo+»(‘»+Формат(НачПериода,»ДФ=yyyyMMdd»)+»‘,’»+Формат(КонПериода,»ДФ=yyyyMMdd»)+»‘) where g_id in («+СтрокаКодовТМЦ+»)»; Попытка rsRES = NEW COMObject(«ADODB.Recordset»); rsRES.Open(CommandText, Connection); Исключение Connection.Close(); Возврат; КонецПопытки Пока не rsRES.eof() Цикл НоваяЗапись = НаборЗаписей.Добавить(); Для х = 0 по 3 Цикл НоваяЗапись = rsRES.Fields(х).Value; КонецЦикла; rsRES.MoveNext(); КонецЦикла; НаборЗаписей.Записать(Истина); rsRES.Close(); Connection.Close();
Кстати, советую пользоваться функцией EOF вместо RecordCount, так как последняя очень не надежна, неопределенная во времени выполнения и может привести к «залипанию» процесса — подробнее можно почитать на форумах.

Использование хранимых процедур

Хранимые процедуры можно вызвать просот из запроса, вписав в начале текста слово «exec», либо указав соответствующий CommandType и название хранимой процедуры в CommandText.
Command = Новый COMОбъект(«ADODB.Command»); Command.CommandTimeout = 100; Command.ActiveConnection = Connection; Command.CommandText = «add_image»; Command.CommandType = 4; Создаем параметр посредством объекта Parameter (на перевес этому можно воспользоваться методом CreateParameter), и добавляем его методом Append в наше подключение.
Парам = Новый COMОбъект(«ADODB.Parameter»); Парам.Name = «@code»; Парам.Direction = 1; //1 — adParamInput Парам.Type = 201; // Парам.Size = 255; Парам.Value = ВнутреннийКод; Command.Parameters.Append(Парам);
Переводим файл, который хотим передать в двоичный поток, создаем и добавляем параметр
Поток = Новый COMОбъект(«ADODB.Stream»); Поток.Type = 1; //StreamTypeEnum.adTypeBinary = 1 StreamTypeEnum.adTypeText = 2 Поток.Open(); Поток.LoadFromFile(ПолноеИмяФайла); локПотокБайт = Новый ComSafeArray(Поток.Read()); Парам = Новый COMОбъект(«ADODB.Parameter»); Парам.Name = «@file_data»; Парам.Direction = 1; //1 — adParamInput Парам.Type = 205; //205 — adLongVarBinary Парам.Size = локПотокБайт.GetLength(); Парам.Value = локПотокБайт; Command.Parameters.Append(Парам); Command.Execute();

Если сервер 1С стоит на Windows х64, то рано или поздно Вы столкнетесь с проблемой создания COM-соединения, если соединение инициируется на стороне сервера. На стороне клиента COM-соединение работает нормально, на стороне сервера вываливается с ошибкой.

Данная статья позволяет снять проблему. НО – до переустановки или обновления платформы!

Столкнулся с проблемой создания COM-соединения на стороне сервера. Обновили версию платформы, но после установки, компонент COM-соединения не регистрировался в системе. Предлагаемая ниже методика позволяет избавиться от описываемой проблемы.

Ниже алгоритм настройки системы, со скрином к каждому действию. Внимание скрины взяты с другого сайта, для общего понимания действий!

И так:

  1. Остановка сервера 1С (рекомендуется, но не обязательно)
  2. Регистрация компоненты comcntr.dll
  3. Создание обертки COM+, позволяющей 64-битному приложению взаимодействовать с 32-битном.
  4. Перезагрузка сервера (физического). Не обязательно, но рекомендуется
  5. Старт сервера 1С. (обязательно 🙂  

Вызываем консоль

Регистрируем компоненту. Компонента отсутствует, если установлен только сервер 1С. Почему-то 1С публикует ее только в составе клиента.

вызвать в cmd

regsvr32 "C:Program Files1cv8[номер платформы]bincomcntr.dll"

Библиотека успешно зарегистрирована.

Теперь запускаем службу компонентов. Описывается для Windows Server 2008 R2 Standart.

Создаем приложение.

Выбираем – Создать приложение

Называем наше приложение – V83.COMConnector, ставим галочку – Серверное приложение.

На этом окне – выбираем учетную запись под которой будет запускаться наше приложение. Лучше указать “учетку” с правами Администратора. Я ставил – текущий пользователь т.к., работал под Администратором.

После того как мы создали Приложение, заходим в него, в раздел – Компоненты и создаем новый компонент.

На данном этапе нужно указать где лежит библиотека dll. Как правило библиотека лежит – “С:Program Files1cv8[номер платформы]bincomcntr.dll”

Теперь установи права на Приложение. Правой кнопкой на созданном Приложении – Свойства.

Выбираем вкладку – Безопасность и Снимаем галочку – Принудительная проверка доступа для приложений => (Ставим галочку)  => Применить политику программных ограничений => Уровень ограничений => Неограниченный.

Далее переходим к самому Компоненту – Выбираем – Свойства, раздел Безопасность.

Проверяем что галка стоит на “Владельце”

На этом у меня заработало!

Понравилась статья? Поделить с друзьями:
  • V7s pro ilife ошибки
  • V7s plus ilife коды ошибок
  • V6 170410 kqcpet6 v6 таблица кодов и ошибок
  • V3bl goszakup gov kz ошибка
  • V2game exe системная ошибка