1с подключение к базе через com ошибка

Случается, что при попытке подключения к информационной базе через com-соединение возникает ошибка при вызове конструктора (COMОбъект): «Класс не зарегистрирован» или «Недопустимая строка с указанием класса».

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

Порядок регистрации компонента V82.COMConnector.

1. Заходим в Панель управления → Администрирование → Службы компонентов.

Службы компонентов

2. Переходим к ветке Компьютеры → Мой компьютер → Приложения COM+.

Приложения COM+

3. В контекстном меню выбираем Создать → Приложение. Откроется Мастер установки приложений COM+.

Мастер установки приложений COM+

4. Нажимаем «Далее».

5. Выбираем «Создать новое приложение».

Установка или создание нового приложения

6. Вводим имя «V82COMConnector». Устанавливаем переключатель «Серверное приложение». Нажимаем «Далее».

Создание нового приложения

7. На следущем шаге устанавливаем «Текущий пользователь». Нажимаем «Далее».

Удостоверение приложения

8. Нажимаем «Готово».

9. В появившейся ветке V82COMConnector переходим к подветке Компоненты.

V82COMConnector. Компоненты

10. В контекстном меню выбираем Создать → Компонент. Откроется Мастер установки компонентов COM+.

Мастер установки компонентов COM+

11. Нажимаем «Далее».

12. Выбираем «Установка новых компонентов».

Импорт или установка компонента

13. Выбираем файл <каталог 1С>bincomcntr.dll.

Выбор файла comcntr.dll

14. Нажимаем «Далее» → «Готово».
15. Переходим к ветке V82COMConnector.

V82COMConnector

16. В контекстном меню выбираем «Свойства». В открывшемся окне переходим на вкладку «Безопасность».

17. Снимаем галку «Принудительная проверка доступа для приложений». Ставим галку «Применить политику программных ограничений». Устанавливаем Уровень ограничений — «Неограниченный».

 V82COMConnector

18. Нажимаем «ОК».

Класс V82.COMConnector зарегистрирован и может использоваться для подключения к информационным базам.

Устранение ошибок подключения через COM-соединение

      Часто бывает нужно получить данные из разных баз, которые, что вовсе не
редкость работают на разных платформах. Это может быть и регулярный обмен
данными между базами. Также могут быть какие-то разовые обработки по переносу
данных. Это могут быть и отчеты, собирающие данные из разных баз и формирующие
требуемый итог на выходе.

      В каждом из этих случаев необходимо из одной базы подключиться к другой
через COM-соединение. Вот на этапе подключения часто
подстерегают разные неприятности. В этой статье будут рассмотрены некоторые
ошибки и способы их устранения. Тут будут приведены конкретные ошибки при
соединении между определенными платформами, но способы устранения могут быть
такими же подходящими и при соединении между платформами в иных вариациях.

Ситуация первая. При попытке подключения через COM-соединение
к базе-источнику выдается сообщение об ошибке. Что-то вроде : «Ошибка при вызове
конструктора (COMObject): -2147221164(0x80040154): Класс не зарегистрирован «.
Для устранения подобной ошибки перво-наперво нужно зарегистрировать библиотеку
клиента — приемника. Причем для разных версий клиентов одной версии платформы
нужно регистрировать свою библиотеку. То есть для разных сборок платформы версии
8.3 нужно заново регистрировать версию библиотеки нужного релиза платформы. Для
платформы версии 8.2 такой же подход.
Библиотека регистрируется следующим образом. Запускается Командная строка из-под
Администратора, в ней пишется команда

regsvr32 «[Путь к библиотеке]bincomcntr.dll ,

например, regsvr32 «c:Program Files (x86)1cv88.3.5.1119bincomcntr.dll» и
команда выполняется. Все открытые приложения 1С при этом лучше закрыть. При
успешной регистрации будет выдано сообщение об успехе. Если выдается сообщение
об ошибке, то нужно проверить путь, по которому находится библиотека, и все
права.
Также эту команду можно поместить в cmd-файл и
запустить его с правами Администратора.

Если такая ошибка выпадает при попытке подключить к БД на платформе 7.7, то
следует проверить реестр на предмет наличия регистрации 7.7-коннектора. В
разделе HKEY_CLASSES_ROOT должны присутствовать ветки, изображенные на картинке:
Ветки для регистрации 7.7-коннектора
Для правильной регистрации 7.7-коннектора следует один раз запустить 1С
Предприятие 7.7 от имени Администратора.

Ситуация вторая. При попытке установить COM-соединение
выпадает ошибка с сообщением о несоответствии версии клиента БД-источника. В
этом случае проблема решается регистрацией правильной версии библиотеки
comcntr.dll так, как это было описано выше.

Ситуация третья. При попытке подключения через COM-соединение
к базе-источнику на платформе 1С 7.7 ошибок не выдается, но обработка «намертво»
«зависает». При снятии задачи соединение через консоль управления серверами 8.х
остается и не сбрасывается никакими ухищрениями, кроме перезапуска службы
сервера 1С. Такое явление происходит, когда осуществляется попытка соединения из
БД на платформе 8.х к БД на платформе 7.7 из сеанса сервера. Четко определенных
причин такого поведения программы здесь не приводится. Рекомендация одна —
использовать вызов подключения из сеанса клиента (&НаКлиенте).

Ситуация четвертая. При попытке подключения через COM-соединение
к базе-источнику на платформе 1С 7.7 ошибок не выдается, но и соединения не
происходит. В этом случае, а также в некоторых других помогает ручная
регистрация COM-компонентов.

1. Заходим в Панель управления → Администрирование → Службы компонентов.

2. Переходим к ветке Компьютеры → Мой компьютер → Приложения COM+.
 Оснастка Службы компонентов
3. В контекстном меню выбираем Создать → Приложение. Откроется Мастер установки
приложений COM+. Выбираем «Создать новое приложение».
Создание нового приложения СОМ+

4. Имя нового приложения лучше написать чтобы было понятно о чем речь:
V8_ComConnector, способ активации — «серверное приложение».

Создание нового приложения СОМ+

5. На следующем шаге устанавливаем «Текущий пользователь». Нажимаем «Далее».В
ветке созданного приложения переходим на ветку «Роли» открываем роль
«CreatorOwner» и далее в разделе «Пользователи» создаем пользователя — учетную
запись под которой работает сервер 1С.

6. В ветке созданного приложения переходим на ветку «Компоненты» и создаем
компонент: Создать — Компонент Выбираем «Установка новых компонентов», и в
диалоге выбираем нужную DLL-ку (в данном примере: [Путь к
библиотеке]bincomcntr.dll).

7. В контекстном меню выбираем «Свойства». В открывшемся окне переходим на
вкладку «Безопасность».

8. Снимаем галку «Принудительная проверка доступа для приложений». Ставим галку
«Применить политику программных ограничений». Устанавливаем Уровень ограничений
— «Неограниченный»

 Безопасность создаваемого компонента
9. Нажимаем «ОК».

Пока все на этом.


27.11.2017

Случается, что при попытке подключения к информационной базе через com-соединение возникает ошибка при вызове конструктора (COMОбъект): «Класс не зарегистрирован» или «Недопустимая строка с указанием класса».

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

Порядок регистрации компонента V82.COMConnector.

1. Заходим в Панель управления → Администрирование → Службы компонентов.

Службы компонентов

2. Переходим к ветке Компьютеры → Мой компьютер → Приложения COM+.

Приложения COM+

3. В контекстном меню выбираем Создать → Приложение. Откроется Мастер установки приложений COM+.

Мастер установки приложений COM+

4. Нажимаем «Далее».

5. Выбираем «Создать новое приложение».

Установка или создание нового приложения

6. Вводим имя «V82COMConnector». Устанавливаем переключатель «Серверное приложение». Нажимаем «Далее».

Создание нового приложения

7. На следующем шаге устанавливаем «Текущий пользователь». Нажимаем «Далее».

Удостоверение приложения

8. Нажимаем «Готово».

9. В появившейся ветке V82COMConnector переходим к подветке Компоненты.

V82COMConnector. Компоненты

10. В контекстном меню выбираем Создать → Компонент. Откроется Мастер установки компонентов COM+.

Мастер установки компонентов COM+

11. Нажимаем «Далее».

12. Выбираем «Установка новых компонентов».

Импорт или установка компонента

13. Выбираем файл <каталог 1С>incomcntr.dll.

Выбор файла comcntr.dll

14. Нажимаем «Далее» → «Готово».
15. Переходим к ветке V82COMConnector.

V82COMConnector

16. В контекстном меню выбираем «Свойства». В открывшемся окне переходим на вкладку «Безопасность».

17. Снимаем галку «Принудительная проверка доступа для приложений». Ставим галку «Применить политику программных ограничений». Устанавливаем Уровень ограничений — «Неограниченный».

 V82COMConnector

18. Нажимаем «ОК».

Класс V82.COMConnector зарегистрирован и может использоваться для подключения к информационным базам.

При попытке подключения к информационной базе через com-соединение возникает ошибка при вызове конструктора (COMОбъект): «Класс не зарегистрирован» или «Недопустимая строка с указанием класса».

Варианты решения:

1.  Зарегистрировать библиотеку ComConnector comcntr.dll из каталога программы.

Перед этим необходимо отключить службу агента сервера 1С:Предприятия и все программы, использующие эту DLL

В 32-битной версии сервера проблема решилась бы командой: regsvr32 «C:Program Files (x86)1cv88.3.10.2466bincomcntr.dll»

но в 64-битной версии команда будет примерно такой * : C:WindowsSysWOW64regsvr32 «C:Program Files (x86)1cv88.3.10.2466bincomcntr.dll»

При удачном выполнении Вы увидите:

Если команда регистрации не помогла, то нужно предварительно удалить регистрацию библиотеки comcntr.dll, запустив ту же команду вызова regsvr32 с ключом /u

Если и это не помогло, попробуйте переустановить платформу 1С в режиме Исправить и отметьте COM соединение

2. Разновидность предыдущего варианта в виде пакетного файла.

Regsvr32 «C:Program Files1cv88.3.12.1776bincomcntr.dll»

Создаём bat или cmd файл, проверяем пути, меняем версию на нужную и запускаем от Администратора:

set version=8.3.10.2466
set x64=C:Program Files1cv8%version%bincomcntr.dll
set x32=C:Program Files (x86)1cv8%version%bincomcntr.dll
set reg64=%systemroot%System32regsvr32.exe
set reg32=%systemroot%SysWoW64regsvr32.exe

%reg64% /i /s «%x64%»
%reg64% /u /s «%x32%»
%reg64% /i /s «%x64%»
%reg32% /u /s «%x64%»
%reg64% /i /s «%x64%»
%reg32% /u /s «%x32%»
%reg64% /i «%x64%»

3. В случае, если не помогает — создаём коннектор руками:

  • Заходим в Панель управления — Администрирование — Службы компонентов.
  • Переходим к ветке Компьютеры — Мой компьютер — Приложения COM+.
  • В контекстном меню выбираем Создать — Приложение. Откроется Мастер установки приложений COM+.
  • Нажимаем «Далее».
  • Выбираем «Создать новое приложение».
  • Вводим имя «V83COMConnector». Устанавливаем переключатель «Серверное приложение». Нажимаем «Далее».
  • На следующем шаге устанавливаем «Текущий пользователь». Нажимаем «Далее».
  • Нажимаем «Готово».
  • В появившейся ветке V83COMConnector переходим к подветке Компоненты.
  • В контекстном меню выбираем Создать — Компонент. Откроется Мастер установки компонентов COM+.
  • Нажимаем «Далее».
  • Выбираем «Установка новых компонентов».
  • Выбираем файл <каталог 1С>bincomcntr.dll.
  • Нажимаем «Далее» — «Готово».
  • Переходим к ветке V83COMConnector.
  • В контекстном меню выбираем «Свойства». В открывшемся окне переходим на вкладку «Безопасность».
  • Снимаем галку «Принудительная проверка доступа для приложений». Ставим галку «Применить политику программных ограничений». Устанавливаем Уровень ограничений — «Неограниченный».
  • Нажимаем «ОК».

Класс V83.COMConnector зарегистрирован и может использоваться для подключения к информационным базам.

   Predator

24.01.20 — 17:44

Платформа 8.3.16.1063 (клиент-сервер x86-64).

ЗУП 3.1.12.113

БП 3.0.75.58

При попытке проверить подключение в настройке синхронизации ЗУП-БП вылетает ошибка «Не удалось подключится к другой программе: -2147221005(0x800401F3): Недопустимая строка с указанием класса».

Делал:

c:WindowsSysWOW64>regsvr32 «C:Program Files (x86)1cv88.3.16.1063bincomcntr.dll»

c:WindowsSysWOW64>regsvr32 «C:Program Files1cv88.3.16.1063bincomcntr.dll»

Сносил COM-соединение через изменение установки, устанавливал заново. Вручную удалял приложение V83COMConnector через dcomcnfg и добавлял заново. В свойствах приложения убирал принудительную проверку доступа для приложения, применял политику программных ограничений — уровень неограниченный. Прописывал пользователя, из-под которого будет производиться вход: и локального, и доменного. Но каждый раз «Недопустимая строка с указанием класса». Чего ей ещё от меня надо-то?

   shuhard

1 — 24.01.20 — 17:48

(0)дык в реестре то что сидит ?

   Garykom

2 — 24.01.20 — 17:49

(0) Переходи на веб и http сервисы

   Garykom

3 — 24.01.20 — 17:51

«c:WindowsSysWOW64>regsvr32 «C:Program Files1cv88.3.16.1063bincomcntr.dll»» кривая строка

   Garykom

4 — 24.01.20 — 17:51

   Garykom

5 — 24.01.20 — 17:53

Для настройки синхронизации используй файлы — самое стабильное

   Predator

6 — 24.01.20 — 17:57

(1) Поиск в реестре по V83COMConnector не дал результатов. Или что имеется в виду?

(2) Это не решение конкретной проблемы.

(3) Почему кривая? У меня нет там двойных закрывающих кавычек. К тому же система сообщила об успешном выполнении.

(4) Если делать через system32, сообщает о том, что не найден указанный модуль, хотя он по этому пути есть.

(5) Но не самое оптимальное в нашем случае. И опять же, это не решение конкретной проблемы.

   Garykom

7 — 24.01.20 — 18:01

(6) Проблема у вас только одна — попытка использования устаревших и уже нихрена реально не поддерживаемых технологий.

Представь что у тебя Linux (или Mac) и действуй исходя из этого.

   craxx

8 — 24.01.20 — 18:09

(0) обратись к профессионалам

   craxx

9 — 24.01.20 — 18:10

(7) я вангую что он ставит не там и не той разрядности

   Garykom

10 — 24.01.20 — 18:14

(9) Там проблемы когда несколько разных версий платформы 1С стоят или ставили криво.

Можно совместить 8.1. 8.2 и 8.3 а вот разные 8.3 глючит.

Например если 8.3.16 и 8.3.15 ну или разрядность того.

   craxx

11 — 24.01.20 — 18:17

(10) неа. Я подозреваю что надо ставить на сервере, а он пытается на клиенте. Ну и х86-64 и SysWOW64 — как бы противоречие, хотя там надо просто зарегать COM+-приложение

   Сияющий в темноте

12 — 24.01.20 — 18:26

С учетом того,что стандартный обмен все равно передает xml-файл,то можно перейти на web-сервисы без проблем.

   craxx

13 — 24.01.20 — 18:28

(12) это надо публиковать базу, а мало кто это хочет делать

   hhhh

14 — 24.01.20 — 20:22

(13) так надо опубликовать внутри локальной сети, не надо в глобальном интернете публиковать.

   Garykom

15 — 24.01.20 — 20:35

(14) COM сервер тоже как бы публикуется, только при установке. И вот в (0) это и есть попытки публикации правильного COM сервера.

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

Веб сервер апач например банально копированием и httpd.exe -k install

   Генератор

16 — 24.01.20 — 21:14

мне регистрация в службах компонентов всегда помогала

   Predator

17 — 25.01.20 — 04:02

Фига тут наванговали уже)

Нет, версия одна и запускаю на сервере. Проблема решилась перезапуском сервера 1С. Всем спасибо за участие.

   Mikhail Volkov

18 — 25.01.20 — 08:30

(10) > а вот разные 8.3 глючит.

Пытаюсь с базы на 8.3.10.2466 x86-64 установить OLE-соединение с базой на 8.3.14.1779 x64. Обе базы на одном сервере разнесены по портам, 8.3.14.1779 на портах 16хх. В строке подключения к имени сервера дописываю «:1640». Получаю ошибку: «Несоответствие версий клиента и сервера 1С:Предприятия». Показывает: версию сервера правильную, клиента — нет: 8.3.10.2466!?

(11) > хотя там надо просто зарегать COM+-приложение

Поподробнее бы. А то читал в http://catalog.mista.ru/public/276794/: «Для начала создадим для коннектора обертку COM+, чтобы вызовы происходили не в контексте 1cv8.exe (1cv8c.exe), а в контексте dllhost.exe. В интернете достаточно публикаций на тему как это сделать…», а что конкретно имеется ввиду?

(17) > Проблема решилась перезапуском сервера 1С.

Моя проблема не решается перезагрузкой сервера Службы компонентов: возможно ли создать обертку OLE соединения V83.Application

   Mikhail Volkov

19 — 27.01.20 — 12:19

Вроде COM-соединение возможно с базой на другой версии платформы 8.3 А OLE-соединение возможно?

   1C_coder

20 — 27.01.20 — 13:56

Решение ошибки подключения через COM

http://catalog.mista.ru/public/97085/

открытие вручную cmd.exe в папке C:WindowsSysWOW64

запуск от имени администратора

C:WindowsSysWOW64>regsvr32 «C:Program Files1cv88.3.16.1063bincomcntr.dll»

(кстати на 16-ю версию платформы люди жалуются, нам сейчас пока запретили её ставить)

Панель управленияВсе элементы панели управленияАдминистрированиеСлужбы компонентовКомпьютерыМой компьютерПриложения COM+CommCtrlРолиCreatorOwnerПользователи

Сюда добавить пользователей ОС сервера, под кем приходится запускать регламентные задания, а главное USR1CV8.

В свойствах CommCtrl на вкладке Безопасность убрать галочку Принудительная проверка доступа для приложения, поставить галочку Применить политику программных ограничений, выбрать Уровень ограничений «Неограниченный».

В http://catalog.mista.ru/public/97085/ советуют самому создать V82.COMConnector. Я не создавал.

И лучше физически перезагрузить сервер сам компьютер.

   Mikhail Volkov

21 — 27.01.20 — 16:03

(20) > И лучше физически перезагрузить сервер сам компьютер.

У меня все базы на 8.3.10.2466 (x86-64), только одна 8.3.14.1779 (x64) на диапазоне портов 16хх. Когда к ней подключаюсь в строке подключения к имени сервера дописываю «:1640». Даже вручную делаю команду C:WindowsSysWOW64regsvr32 «c:Program Files1cv88.3.14.1779bincomcntr.dll», пишет: Успешно выполнено DllRtgisterServer в c:Program Files1cv88.3.14.1779bincomcntr.dll. Но при этом все равно ошибка: «Несоответствие версий клиента и сервера 1С:Предприятия» (8.3.10.2466 — 8.3.14.1779).

   Garykom

22 — 27.01.20 — 16:20

(21) Я вот думаю сказать или нет что COM как и прочие приложения могут быть как x32 так и x64…

И короче регать думать надо что и откуда. И откуда и куда подключаться.

Ну не выйдет цыветочек и x32 не умеет с x64 через COM или OLE

   Garykom

23 — 27.01.20 — 16:21

(22)+ Точнее не умеет в типовом уровне, можно разные ухищрения

   Mikhail Volkov

24 — 27.01.20 — 16:33

(22) Все дело в разной разрядности, с 32-х на 64-х разрядную не подключиться?

   Garykom

25 — 27.01.20 — 16:48

(24) x64 можно сделать чтобы к x32 подрубилось, наоборот не видел

Спроси у H A D G E H O G s как он провернул Проблемы выгрузки больших XML в 7.7 и их решения.

   Garykom

26 — 27.01.20 — 16:51

(25)+ Подразумевал что «обертку COM+» позволяет из x64 1С подключиться к x32 1C по COM/OLE, где x32 выступает как inproc server

А вот как наоборот я лично хз, думать лень но вот товарищ провернул с XML

   Mikhail Volkov

27 — 28.01.20 — 10:54

Ладно, создал (перенес процедуры подключения по Com) базу, которую можно запускать на 8.3.10.2466 x86-64 и 8.3.14.1779 x64. Запускаю на 8.3.10.2466, соединяюсь с базой на 8.3.14.1779, получаю как в рабочей базе ошибку: «Несоответствие версий клиента и сервера 1С:Предприятия». Запускаю на 8.3.14.1779, соединяюсь с базой на 8.3.14.1779, и опять же получаю ошибку: «Несоответствие версий клиента и сервера 1С:Предприятия» (8.3.10.2466 — 8.3.14.1779)!? При чем СисИнфо = Новый СистемнаяИнформация; СисИнфо.ВерсияПриложения пишет версию 8.3.14.1779.

   Mikhail Volkov

28 — 28.01.20 — 16:05

+ Зато открывает из 8.3.14.1779 формы объектов базы на 8.3.10.2466! Получается что клиентскую часть Com-соединения определяет не платформа, из которой устанавливается Com-соединение, а нечто другое. Что?

   Mikhail Volkov

29 — 28.01.20 — 18:05

+ Сделал перерегистрацию comcntr.dll: D:WindowsSysWOW64regsvr32 «D:Program Files1cv88.3.14.1779bincomcntr.dll», но это ничего не изменило, та же ошибка: «Несоответствие версий клиента и сервера 1С:Предприятия» (8.3.10.2466 — 8.3.14.1779). Почему версия клиентской части остается 8.3.10.2466? Сделал перерегистрацию comcntr.dll, Com-соединение устанавливается из базы на 8.3.14.1779… что еще?

   runoff_runoff

30 — 28.01.20 — 18:13

(29) в запуске базы не стоит принудительно 8.3.10?

   Mikhail Volkov

31 — 28.01.20 — 18:43

(30) Нет, специально базу сделал, из которой не было Com-соединений (в отличии от рабочей), на другом сервере.

   Garykom

32 — 28.01.20 — 19:03

Забей уже на COM и OLE это официально устаревшая технология.

Дальше будет только хуже с работоспособностью.

   Простенький вопросик

33 — 28.01.20 — 19:48

(0)

Выложи обмен на обменник, очень интересно

   olegves

34 — 28.01.20 — 19:56

(0) а регать 64-ю утилиту разве не другой приблудой?

У меня на РДП сессии тож проблема была с СОМ клиентским. Сегодня пролечили реганьем 64-битного СОМа. А так админы 2 недели не могли ладу дать — и 1С переставляли и сессию прибивали и профиль новый заводили — результат не было

   Mikhail Volkov

35 — 29.01.20 — 07:25

(34) А какой? Регистрация утилиты администрирования серверов x86-64 (8.3.14.1779) дает тот же результат: Успешно выполнено DllRtgisterServer в c:Program Files1cv88.3.14.1779bincomcntr.dll. Правда 8.3.14.1779 на нестандартном диапазоне портов 16хх. Может в этом дело, как правильно зарегистрировать comcntr.dll?

   Tarlich

36 — 29.01.20 — 11:21

(0) начни с того что удали все старые платформы… переустанови

   Mikhail Volkov

37 — 29.01.20 — 12:17

(36) Снести 8.3.10.2466, а 8.3.14.1779 пересадить на стандартный диапазон портов 15хх?

   Mikhail Volkov

38 — 29.01.20 — 14:32

Выполнил регистрацию с ключами regsvr32 /n /i:user теперь пишет: Ошибка при вызове конструктора (COMОбъект): -2147467262(0x80004002): Интерфейс не поддерживается

   makaorel

39 — 29.01.20 — 15:07

(38) отмените регистрацию  через regsvr32 /u и больше ничего не регистрируйте.

   Mikhail Volkov

40 — 30.01.20 — 08:07

(39) Выполнил: D:WindowsSysWOW64regsvr32 /u «D:Program Files1cv88.3.10.2466bincomcntr.dll», но ничего не изменилось: файловая база запущенная на 8.3.14.1779 при Com-соединении с базой на 8.3.14.1779 ошибку: «Несоответствие версий клиента и сервера 1С:Предприятия» (8.3.10.2466 — 8.3.14.1779).

   butterbean

41 — 30.01.20 — 08:24

(40) ты может на сервере это делаешь, а соединение на клиенте? Ну или наоборот

   Mikhail Volkov

42 — 30.01.20 — 08:33

(41) Рабочие сервера разделены на SQL и Терминал, но их пока не трогаю. Все эксперименты делаю на своем компе.

   Mikhail Volkov

43 — 31.01.20 — 14:56

(36) Сносить пока не стал, нашел старый системный диск, на нем по одной платформе 8.1, 8.2, 8.3. Обновил до 8.3.14.1779. Иногда возникает «Ошибка при вызове конструктора (COMОбъект): -2147467262(0x80004002): Интерфейс не поддерживается» — это вроде, когда при установки платформы забыл COM отметить? Но при установки 8.3.14.1779 с windows64full нет COM!?

Еще при перезагрузке компа пишет: «DTAget.exe Приложение не удалось запустить, поскольку DTCommonRes.ddt не был найден. Повторная установка приложения может исправить эту проблему» — это тоже по 1С не в порядке?

   Mikhail Volkov

44 — 01.02.20 — 11:18

Можно ли до начала Com-соединения как-то определить (через регистры): какая comcntr.dll (ее версию) в данный момент действует?

И можно ли ее поменять на нужной версии другими способами? (с админ. правами)

   Garykom

45 — 01.02.20 — 11:46

(44) RegEdit

И поры бы научиться пользоваться гуглом чтобы находить http://datadump.ru/regsvr32/

   Mikhail Volkov

46 — 02.02.20 — 08:15

(45) Статья может быть хорошая, подтверждает, что ссылка нужной версии comcntr.dll прописана в реестре. Но конкретно по моему вопросу (44) ничего. А в статье «COM соединения к базам 1С на различных версиях платформы» (http://catalog.mista.ru/public/276794/ автор Леонид Кириенко) указывается конкретная ссылка HKEY_CLASSES_ROOTWow6432NodeCLSID{2B0C1632-A199-4350-AA2D-2AEE3D2D573A}InprocServer32 для 64 битной ОС. Но на рабочем сервере ее нет, а в моем компе в ней прописана D:Program Files (x86)1cv828.2.19.130bincomcntr.dll — для моего случая бесполезна.

Перерыл все ссылки с значением параметра: D:Program Files1cv88.3.10.2466bincomcntr.dll и D:Program Files (x86)1cv88.3.10.2466bincomcntr.dll. Их было 3 и 8, когда добавил платформу 8.3.14.1779, то часть ссылок 2 и 5 переписались со значением параметра D:Program Files1cv88.3.14.1779bincomcntr.dll. Когда обратно перерегистрирую на 8.3.10.2466 (только переустановкой платформы и перезагрузкой компа! Регистрация утилиты администрирования серверов x86-64 (8.3.10.2466) и D:WindowsSysWOW64regsvr32 «D:Program Files1cv88.3.10.2466bincomcntr.dll» не помогают!?) значения этих ссылок не меняется!!!??? Допускаю, что есть еще ссылка, которая содержит одну из этих ссылок, и переписывает ее при регистрации. Но как ее найти?

А Леонид Кириенко переключает платформу Com-соединения переписыванием ссылки с comcntr.dll нужной версии. Плюс еще делает taskkill.exe /f /im dllhost.exe с административными правами. По поводу последнего он пишет «Для начала создадим для коннектора обертку COM+, чтобы вызовы происходили не в контексте 1cv8.exe (1cv8c.exe), а в контексте dllhost.exe. В интернете достаточно публикаций на тему как это сделать…», конкретную ссылку не дает. На рабочем сервере в службе компонентов добавил V8COMConnector, не знаю правильно ли, результата нет…

   Mikhail Volkov

47 — 03.02.20 — 08:15

При ошибках: различия версий https://i.ibb.co/pdrH9Wy/COM.jpg, база не обнаружена на сервере (предлагает создать), и других в ОписаниеОшибки() не пишет конкретную причину, а лишь: «Ошибка при вызове метода контекста (Connect): Неизвестная ошибка».

   d4rkmesa

48 — 03.02.20 — 08:23

(44) regdllview и regdllview-x64

   Папа Гапа

49 — 03.02.20 — 08:23

В семерке в базовой не было com…

   d4rkmesa

50 — 03.02.20 — 08:24

(48) это мини-утилитка, там удобнее смотреть, чем в реестре.

   Mikhail Volkov

51 — 03.02.20 — 10:02

(50) Скачал, как ей пользоваться?

   Mikhail Volkov

52 — 03.02.20 — 14:36

Нашел https://ibb.co/rQMZNnn «RegDllView — миниатюрная утилита, выводящая список всех зарегистрированных файлов dll/ocx/exe (COM-регистрация), причем для каждого файла можно посмотреть дату и время последней регистрации, а также список всех записей в системном реестре (CLSID/ProgID).

Кроме этого, RegDllView позволяет без труда отменить регистрацию dll/ocx или, наоборот, зарегистрировать в системе нужные dll/ocx — так, для регистрации нужно будет всего лишь перетащить один или несколько файлов из окна Explorer в окно RegDllView».

Отменить регистрацию понимаю удалением строки с D:Program Files1cv88.3.10.2466bincomcntr.dll, а как зарегистрировать D:Program Files1cv88.3.14.1779bincomcntr.dll — не понял?

   Mikhail Volkov

53 — 03.02.20 — 16:44

Перерегистрировал платформу на 8.3.14.1779, а все равно ошибка различий версий!? https://ibb.co/jVV9jHW Откуда он берет клиентскую часть 8.3.10.2466?

   Флориан

54 — 03.02.20 — 16:53

   Mikhail Volkov

55 — 03.02.20 — 18:22

(54) У меня нет проблемы «Недопустимая строка с указанием класса». Запускаю Com-соединение из базы на платформе 8.3.14.1779. RegDllView показывает что запущена comcntr.dll версии 8.3.14.1779. Соединяюсь с базой на 8.3.14.1779. И такая ошибка, откуда он берет клиентскую часть 8.3.10.2466? Хотя если соединяюсь с базой на платформе 8.3.10.2466, то все нормально.

   Mikhail Volkov

56 — 04.02.20 — 07:53

+ Выходит RegDllView только видимость создает, не зря в () писал, что перерегистрация платформы возможна только переустановкой платформы и перезагрузкой компа! Регистрация утилиты администрирования серверов x86-64 (8.3.10.2466) и D:WindowsSysWOW64regsvr32 «D:Program Files1cv88.3.10.2466bincomcntr.dll» не помогают. Но сейчас переустановка платформы не помогла!?

   Mikhail Volkov

57 — 04.02.20 — 07:55

   Mikhail Volkov

58 — 05.02.20 — 15:50

Бог с ней RegDllView, что она показывает не понятно. Вернулся к статье «COM соединения к базам 1С на различных версиях платформы» (http://catalog.mista.ru/public/276794/ автор Леонид Кириенко). По поводу «Для начала создадим для коннектора обертку COM+, чтобы вызовы происходили не в контексте 1cv8.exe (1cv8c.exe), а в контексте dllhost.exe» пригодилась ссылка (54). Правда не понял суть этого, но сделал https://ibb.co/HHXj1hG, не знаю правильно ли?

В 1С прописал:

Процедура СменитьВерсиюПлатформы(СтруктураПодключения, СтрокаПодключения, ВерсияПриложения)

    Если Найти(СтрокаПодключения, «PatrERP») > 0 Тогда

        СтрокаПодключения = СтрЗаменить(СтрокаПодключения, СтруктураПодключения.ИмяСервера, СтруктураПодключения.ИмяСервера + «:1740»);

    КонецЕсли;

    ТребуемаяВерсия    = ?(Найти(СтрокаПодключения, «PatrERP») = 0, «8.3.10.2466», «8.3.14.1779»);

    CLSID = «{181E893D-73A4-4722-B61D-D604B3D67D47}»;    

    Ключ = «HKEY_CLASSES_ROOTWow6432NodeCLSID» + CLSID + «InprocServer32»;

    
    WshShell = Новый COMОбъект(«WScript.Shell»);    

    Значение = WshShell.RegRead(Ключ);

    Если Найти(Значение, ТребуемаяВерсия) > 0 Тогда

        ВерсияПриложения = ТребуемаяВерсия;

        Возврат;

    Иначе

        Сообщить(«Значение ключа » + Ключ + «: » + Значение, СтатусСообщения.Внимание);

    КонецЕсли;

    Если ТребуемаяВерсия = «8.3.14.1779» Тогда

        Значение = СтрЗаменить(Значение, » (x86)1cv88.3.10.2466″, «1cv88.3.14.1779»);

    Иначе

        Значение = СтрЗаменить(Значение, «1cv88.3.14.1779″, » (x86)1cv88.3.10.2466″);

    КонецЕсли;

    WshShell.RegWrite(Ключ, Значение);

    ЗапуститьПриложение(«taskkill.exe /f /im dllhost.exe»,, Истина);

    ВерсияПриложения = ТребуемаяВерсия;

КонецПроцедуры // СменитьВерсиюПлатформы()

Запускаю на 8.3.14.1779, соединяюсь с базой на 8.3.10.2466 — все нормально (и раньше так было). Соединяюсь с базой на 8.3.14.1779 — происходит замена ссылки в реестре HKEY_CLASSES_ROOTWow6432NodeCLSID{181E893D-73A4-4722-B61D-D604B3D67D47}InprocServer32 на параметр D:Program Files1cv88.3.14.1779bincomcntr.dll, DLL в службе компонентов (это же значение). Но 1С выдает ошибку: «Несоответствие версий клиента и сервера 1С:Предприятия» (8.3.10.2466 — 8.3.14.1779). Что ни так сделал?

   Mikhail Volkov

59 — 05.02.20 — 16:20

А запускаю эту же базу на 8.3.10.2466, получаю: Ошибка при вызове метода контекста (RegRead) Значение = WshShell.RegRead(Ключ);

по причине: Произошла исключительная ситуация (WshShell.RegRead): Неверная ссылка на корень в разделе реестра «HKEY_CLASSES_ROOTWow6432NodeCLSID{181E893D-73A4-4722-B61D-D604B3D67D47}InprocServer32».

В чем дело?

   Mikhail Volkov

60 — 06.02.20 — 07:51

Вопрос открытый: По какому принципу запускается именно клиентская часть 8.3.10.2466 для COM соединения? (а не 8.3.14.1779)

   Mikhail Volkov

61 — 09.02.20 — 14:15

Тишина… никто не знает? А главный вопрос: возможна ли смена версии до начала COM соединения?

   Mikhail Volkov

62 — 11.02.20 — 15:34

Для запуска файловой базы всегда стартует последняя платформа. Для запуска серверной базы смотрит на порт сервера, как-то понимает какую платформу запускать для клиентской и серверной частей. Почему для COM соединения всегда запускается одна и та же клиентская часть? На реестр никак не реагирует, какой указана версия comcntr.dll. Может в файлах ini надо самому настройки менять? Где, в каком?

   dmrjan

63 — 11.02.20 — 15:45

На сервере в последнее время ставлю только 64разрядный клиент, устанавливая платформу проверяю компоненту com. Предыдущую платформу всегда сношу. Стараюсь до удаления старой платформы не переносить каталог с её инсталляцией в другое место и не удалять его, иначе могут возникнуть сложности с деинсталляцией. Вроде после этого com работает.

   Mikhail Volkov

64 — 11.02.20 — 15:52

(63) > Предыдущую платформу всегда сношу.

Нужны 2 версии платформы на одном сервере.

   d4rkmesa

65 — 11.02.20 — 16:03

(64) Читали?

http://catalog.mista.ru/public/610960/

Но придется переписать вызов V83COMConnector, чтобы использовались разные ProgID в обработке обмена. RegDLLView все правильно показывает, но надо понимать, что она показывает, к тому же, там 32 и 64-битные dll надо смотреть соответствующими версиями. По крайней мере, RegDLLView дает очевидное понимание, что сейчас зарегистрировано.

   sikuda

66 — 11.02.20 — 16:08

(0) Если достало глючное поведение COM, выверенные конвертации хочется использовать прямым подключением — http://catalog.mista.ru/public/1176839/

   Mikhail Volkov

67 — 11.02.20 — 16:30

(65) > RegDLLView дает очевидное понимание, что сейчас зарегистрировано.

Где его смотреть?

http://catalog.mista.ru/public/610960/ читал, но это для COM с ограниченными возможностями, мне нужно OLE-соединение.

(66) Задача так поставлено — открывать объекты другой базы. Когда все базы на одной платформе, не спорю, удобно. Но по моему не очень надо, если очень надо, то зайди в нее, найди нужный объект, открой его, и делай что хочешь…

   d4rkmesa

68 — 11.02.20 — 17:02

(67) А, так вам Application нужен, что же вы тему немного офтопите? comcntr.dll — это только COM «с ограниченными возможностями». Application регистрируется обычно через: C:Program Files1cv8[версия платформы]bin1cv8.exe» /regserver . Зарегить обе версии сразу — готового решения нет. Проще всего — разнести платформы по разным серверам. А лучше всего — не использовать v83.application, Automation — позапрошлый век в наше время.

   Mikhail Volkov

69 — 11.02.20 — 17:32

(68) > Application регистрируется обычно через: C:Program Files1cv8[версия платформы]bin1cv8.exe» /regserver .

А где смотреть (менять если получится), в реестре?

   Garykom

70 — 11.02.20 — 17:49

(69) Прекрати уже фигней страдать, технология COM/OLE все, забыть про нее и делать другими способами.

Есть смысла в COM когда дикий легаси из кровавого энтерпрайза и переписывать влом, некому и нет денег.

   pechkin

71 — 11.02.20 — 17:50

(70) ну так у него так все и есть

   Garykom

72 — 11.02.20 — 18:00

(71) Он херней страдает, давно бы поставил одну платформу 8.2 для альфы и вторую (тоже одну) 8.3 для КА или что там у него.

Несколько одновременно 8.3.Х.Y глючит COM/OLE по страшному

   Mikhail Volkov

73 — 11.02.20 — 18:40

(68) Да, значение D:Program Files (x86)1cv88.3.10.2466bin1cv8.exe найдено в 6 реестрах:

HKEY_CLASSES_ROOTCLSID{E92B75E3-2EA1-4FEC-B493-CEF3EC59FCA6}LocalServer32

HKEY_CLASSES_ROOTWow6432NodeCLSID{E92B75E3-2EA1-4FEC-B493-CEF3EC59FCA6}LocalServer32

HKEY_LOCAL_MACHINESOFTWAREClassesCLSID{E92B75E3-2EA1-4FEC-B493-CEF3EC59FCA6}LocalServer32

HKEY_LOCAL_MACHINESOFTWAREClassesWow6432NodeCLSID{E92B75E3-2EA1-4FEC-B493-CEF3EC59FCA6}LocalServer32

HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionInstallerUserDataS-1-5-18ComponentsB322A3EFECA3A15429059AD028FECAB3

HKEY_LOCAL_MACHINESOFTWAREWow6432NodeClassesCLSID{E92B75E3-2EA1-4FEC-B493-CEF3EC59FCA6}LocalServer32

А значений значение D:Program Files1cv88.3.10.2466bin1cv8.exe и значение D:Program Files1cv88.3.14.1779bin1cv8.exe не найдено. Хорошо, перепишу в них на значение D:Program Files1cv88.3.14.1779bin1cv8.exe, и надо выполнить что-то. Что? Например, в http://catalog.mista.ru/public/276794/ автор выполняет taskkill.exe /f /im dllhost.exe для COM. А мне что?

(70) Отвечал уже в (67), до меня так было, все уже привыкли к этому.

   Garykom

74 — 11.02.20 — 19:07

(73) А DOS или CP/M у вас там случаем нету? С Clipper и FoxPro под них?

   Garykom

75 — 11.02.20 — 19:09

   Сияющий в темноте

76 — 11.02.20 — 19:58

Automation до сих пор жива,как жив Microsoft Office

собственно,для него она и придумывалась.

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

но,решение Automation не для интеграции,а для упрощения взаимодействия с пользователем.

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

   Mikhail Volkov

77 — 12.02.20 — 09:14

(68) что еще нужно, чтобы запускалась клиентская часть платформы 8.3.14.1779 (а не 8.3.10.2466) при OLE-соединении, кроме перезаписи реестра?

   d4rkmesa

78 — 12.02.20 — 09:22

(77) Зарегьте какую-нибудь одну через: C:Program Files1cv8[версия платформы]bin1cv8.exe» /regserver . От второй отказывайтесь или установите на другой компьютер(если речь о файловой, то наверняка найдется, где развернуть). Т.е., на данном этапе уже лучше изменить подход, чем тратить ресурсы и время на «костыли».

   Mikhail Volkov

79 — 12.02.20 — 09:35

(78) Это как, командой (из командной строки)?

   d4rkmesa

80 — 12.02.20 — 09:39

   Mikhail Volkov

81 — 15.02.20 — 12:34

Интересно, при запуске серверной базы 1С смотрит какой порт приписал к имени сервера, и запускает нужную версию платформы для серверной части. Почему для клиентской части не использован этот алгоритм?

   Mikhail Volkov

82 — 16.02.20 — 16:55

+ Вроде значения реестров не меняются после регистрации версии платформы. Как определить какая версия зарегистрирована последней, какая запустится клиентская часть для OLE-соединения?

   Mikhail Volkov

83 — 17.02.20 — 12:39

Странно, у меня сейчас даже C:Program Files1cv8[версия платформы]bin1cv8.exe» /regserver не переключается, и после перезагрузки.

   Mikhail Volkov

84 — 17.02.20 — 16:43

+ Это я переустанавливал платформы 8.3, Агент сервера 1С:Предприятия 8.3 со стандартными портами 15хх исчез, остался только добавленный с нестандартными портами!? Как его восстановить?

   Garykom

85 — 17.02.20 — 16:46

(84) «Ручки шаловливые кошельку покоя не дают»©

   Mikhail Volkov

86 — 17.02.20 — 17:15

+ Хотя HKEY_LOCAL_MACHINESYSTEMControlSet001Services1C:Enterprise 8.3 Server Agent (x86-64) остался со значением ImagePath «D:Program Files1cv88.3.10.2466binragent.exe» -srvc -agent -regport 1541 -port 1540 -range 1560:1591 -d «D:Program Files1cv8srvinfo».

   Mikhail Volkov

87 — 18.02.20 — 07:34

(78) > установите на другой компьютер

Впервые столкнулся с проблемой COM/OLE-соединения когда подключался к базе партнера. Другой сервер и домен, только локальная сеть общая (работаем на территории одного АСК). Версии 1С 8.3 были разные. Пока не поставил версию такую же как у них ничего не получалось.

   Mikhail Volkov

88 — 18.02.20 — 17:44

Кажется нашел http://catalog.mista.ru/public/803433/ — «Показывает текущие версии зарегистрированных компонент 1С (требуется .NET Framework 4.0 и права администратора)». Как определить есть у меня .NET Framework 4.0?

   luter-89

89 — 18.02.20 — 17:49

(0) Это в 8.3.16 что-то наделали,у меня такая же ерунда.

Не советую ставить, ибо глюков там до хрена, только что откатился обратно до 8.3.13

   pechkin

90 — 18.02.20 — 17:50

а что за компонента V8x.ServerAbout из (88)

   Mikhail Volkov

91 — 18.02.20 — 18:48

(90) Не знаю, меня интересует V8x.Application.

   VladZ

92 — 18.02.20 — 18:53

(0) Переходи на веб-сервисы. Ком — в топку!

   d4rkmesa

93 — 18.02.20 — 19:45

(0) (89) 8.3.15, похоже, тоже. Судя по всему, что-то сейчас работает иначе, чем раньше. Я *censored* [устал] регить V83COMConnector сегодня разными способами. Благо, на сервере вроде получилось сделать через «Исправить» установленной платформы. А вот на клиентах (есть обработки, где на клиенте, то бишь сервере терминалов, запускается соединение) что-то не получалось совсем. Такое ощущение, что теперь не просто регистрируется компонента, а еще где-то какие-то зависимости прописываются. Причем эти зависимости кэшируются системой, судя по тому, что перезапуск помогает в некоторых случаях. И еще следствие этого — различные «костыли» с запуском разных версий ComConnector не работают, по крайней мере, 8.3.12 и 8.3.15 не удалось подружить как то совсем. Похоже, придется ставить Апач и кодить http-сервисы. Либо выносить кластер 8.3.15 на отдельную виртуалку и инициировать V83COMConnector только НаСервере.

   Garykom

94 — 18.02.20 — 21:02

(89) Были глюки со «старым» апачем 2.4.39 и то после обновления пропали.

Так что 8.3.16.1148 вполне гуд.

   Mikhail Volkov

95 — 19.02.20 — 09:00

(93) > Причем эти зависимости кэшируются системой, судя по тому, что перезапуск помогает в некоторых случаях.

Выше 8.3.14 у меня нет платформ. Агента со стандартными портами восстановил. Избежать кэширование удалось?

   Mikhail Volkov

96 — 19.02.20 — 20:12

(87)+ Вряд-ли система обращается к реестру того сервера, на котором находится подсоединяемая база, чтобы определить зарегистрированную версию. Наверное к своему реестру (или к чему?). Если бы предварительно переписать значение на нужную версию платформы, то было бы все нормально?

   Garykom

97 — 19.02.20 — 20:27

(96) Не будет нормально. Забудь про COM/OLE. Скоро железо на ARM перейдет с x86 и где этот COM?

   sitex

98 — 19.02.20 — 22:11

(0) в  (2)  же написали чего не понятно. Это всего лишь вопрос времени .

   Сияющий в темноте

99 — 19.02.20 — 22:23

(97) windows ce прекрасно там работало и com тоже.

а вот поставить туда httpd было сложнее.

   Garykom

100 — 20.02.20 — 00:23

(99) com там на wince на arm было свое, несовместимое с x86 на большой винде

так что 100

Возможно, вам также будет интересно:

  • 1с ошибка формата потока 1с базовая
  • 1с ошибка соединения с предметом отладки
  • 1с ошибка усн на патенте
  • 1с ошибка соединения с интернет не могу установить соединение
  • 1с ошибка удаления соединения соединение не найдено

  • Понравилась статья? Поделить с друзьями:
    0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии