Настройка возможности подключения по технологии COM к базам данных, работающим на различных версиях платформы 1С

06.03.21

Интеграция - Обмен между базами 1C

Пошаговое руководство по установке нескольких версий COMConnector на одном компьютере для соединения с базами данных на разных платформах 1С. Приложенную обработку можно запускать на любой версии платформы.

Скачать исходный код

Наименование Файл Версия Размер
Настройка возможности подключение по технологии COM к базам данных работающим на различных версиях платформы 1С.:
.epf 9,84Kb
29
.epf 9,84Kb 29 Скачать

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

Пришлось искать решение. Я имею представление о принципах работы технологии COM (безотносительно к 1С) и посчитал, что есть шанс решить проблему.

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

В ходе эксперимента возникали ошибки. При поиске решения этих ошибок наткнулся на хорошую статью «Параллельное использование нескольких версий COM control (несколько версий платформ)»; и сама статья и комментарии к ней мне очень помогли, но всех проблем решить не смогли.

Эксперименты проводились на виртуальной машине с установленной Windows Server 2012 R2 Standard (англоязычная). Сервер приложений не ставил. Экспериментировал с 32-х разрядной клиентской частью 1С. Для экспериментов написал простую обработку, которая позволяет задавать и сохранять в настройках параметры нескольких COM-подключений, с их помощью подключаться к базам и выполнять произвольный код для проверки корректности подключения. Обработка позволяет выбрать где будет создаваться подключение: на клиенте или на сервере. Обработку прикладываю.

Итак, вот что у меня получилось.

Чтобы не запутаться, приложения буду называть «Приложение1» и «Приложение2», компоненты «Компонент1» и «Компонент2» (само собой их может быть больше). Приложение1 и Компонент1 будут использоваться для подключения к базам на платформе 8.3.12.1595, а Приложение2 и Компонент2 – для 8.3.17.1851.

Порядок действий:

1. В проводнике правой кнопкой мыши по This PC -> Manage. Откроется окно «Server manager. Dashboard».

2. В правом верхнем углу этого окна Tools - > Component services. Откроется соответствующее окно.

3. В дереве левой части окна разворачиваем Console Root -> Component Sarvices -> Computers -> My Computer -> COM+ Applications.

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

    a. В контекстном меню COM+ Applications в дереве -> New -> Application. Откроется мастер.

 

   

 

     b. В окне приветствия жмем Next.

 

   

 

    c. Выбираем «Create an empty application».

    d. Вводим имя приложения для первого соединения COM. Я в имени использовал номер версии платформы.

 

   

 

    e. Жмем Next, и на следующем шаге указываем, пользователя, от имени которого будет работать компонент (я использовал первый вариант, т.к. для эксперимента это не важно).

 

   

 

    f. Жмем Next, и следующий шаг позволяет добавить роли, позволяющие работать с этим компонентом. Тут я ничего делать не стал.

    g. Жмем Next, и можем в каждую из ролей предыдущего шага добавить конкретных пользователей. Тут также оставил все без изменений.

    h. Жмем Next, затем Finish, и у нас есть Приложение1.

    i. Аналогично создаем Приложение2.

    j. Наше дерево в левой части окна выглядит примерно вот так:

 

   

 

5. Создаем компоненты.

    a. Для Приложения1 вызываем контекстное меню для раздела Components –> New -> Component. Откроется мастер установки компонентов.

    b. На странице приветствия нажимаем Next, и на следующем шаге выбираем «Install new component(s)».

 

   

 

    c. Откроется диалог выбора файла, в котором мы указываем путь к файлу comcntr.dll соответствующей версии.

 

   

 

    d. Жмем Next, затем Finish, и у нас появляется новый компонент с названием по умолчанию.

 

   

 

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

    f. Жмем правой кнопкой мыши по этому компоненту и в контекстном меню выбираем «Alias…». Откроется инструмент, позволяющий создать копию этого компонента с новыми ProgID и CLSID.

    g. В открывшемся окне указываем название нового компонента (я использовал в названии часть номера релиза платформы). Список в левой части окна ("Please select a destination") показывает, в каком приложении будет располагаться наша копия, проверяем, что она остается в Приложении1 и жмем OK.

 

   

 

    У нас есть Компонент1.

    h. Создаем новый компонент повторяя шаги f и g еще раз, но в названии используем номер другого релиза платформы и в левой части окна указываем, что вторая копия будет располагаться в Приложении2. У нас есть и Компонент2.

    i. Структура наших приложений и компонентов теперь выглядит так:

 

   

 

    j. Осталась небольшая проблема: все наши компоненты ссылаются на одну и ту-же dll. Для её решения вызываем контекстное меню Компонент2, открываем Properties и копируем CLSID.

 

   

 

    k. Запускаем regedit и ищем в дереве узел соответствующий CLSID из предыдущего пункта и содержащий в себе подузел InprocServer32.

   

  

  l. Путь указанный в значении (Default) меняем на путь к comcntr.dll версии, соответствующей Компонент2.

    m. Закрываем regedit.

 

6. Можем проверить COM-соединения с помощью приложенной обработки.

 

Обработка для проверки.

Интерфейс обработки прост. По нажатии кнопки «Проверить соединение» выполняется попытка создать соединение с параметрами, указанными в текущей строке, и выполнить код прописанный в поле «Код проверки».

 

 

Почему сделано именно так:

1. Мы копируем компоненты вместо того, чтобы просто создавать новые. Если уже создан компонент с одной из имеющихся concntr.dll, и мы создаем второй, то вместо создания второго компонента программа выдается ошибку 80110802. Решение создавать копии компонентов, а потом их править подсказал user982256 в комментарии к статье «Параллельное использование нескольких версий COM control (несколько версий платформ)».

2. Создаем отдельные приложения для каждой версии платформы. Если компоненты разных версий размещать в одном приложении, то при последовательном использовании разных компонентов, выдается ошибка "-2147024769(0x8007007F): The specified procedure could no be found.".

 

 

Видимо, первый из используемых компонентов как-то кэшируется, и второй перестает работать.

P.S. Хочу выразить свою огромную благодарность Дмитрию Петрову за помощь в оформлении этой статьи.

P.S.S. После написания нашел статью «COM соединения с базами 1С на различных версиях платформы "Без перерегистрации и СМС"», где в комментариях рассматриваются все возникшие у меня ошибки, и дается рецепт их исправления, но все равно решил статью опубликовать, чтобы можно было на эти ошибки и не натыкаться.

V83.COMConnector COM

См. также

SALE! 10%

Перенос данных из УПП 1.3 в ERP 2 / УТ 11 / КА 2. Переносятся документы, справочная информация и остатки

Обмен между базами 1C Платформа 1С v8.3 1С:Управление производственным предприятием 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Платные (руб)

Перенос документов, начальных остатков и справочной информации из УПП 1.3 в ERP 2 | из УПП 1.3 в УТ 11 | из УПП в КА 2 | Правила конвертации (КД 2) в продаже с 2015 года, постоянно работаем над их развитием | Более 360 предприятий выполнили переход с использованием этого продукта! | Сэкономьте время - используйте готовое решение для перехода! | Позволяет перенести из УПП 1.3 в ERP / УТ 11 / КА 2 всю возможную информацию | В переносе есть фильтр по организации и множество других опциональных параметров выгрузки | Есть несколько алгоритмов выгрузки остатков на выбор

50722 45650 руб.

04.08.2015    160260    368    268    

349

SALE! 15%

[ED3] Обмен для ERP 2.5, КА 2.5, УТ 11.5 БП 3.0, Розница, УНФ и других с EnterpriseData (универсальный формат обмена), правила обмена

Обмен между базами 1C Файловый обмен (TXT, XML, DBF), FTP Платформа 1С v8.3 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Россия Платные (руб)

Правила в универсальном формате обмена для ERP 2.5, КА 2.5, УТ 11.5, БП 3.0, Розница, УНФ, для последних версий конфигураций. Ссылки на другие конфигурации в описании публикации. Правила совместимы со всеми другими версиями конфигураций новыми и старыми, поддерживающими обмен в формате EnterpriseData. Не требуется синхронного обновления правил после обновления другой конфигурации, участвующей в обмене. Типовой обмен через планы обмена кнопкой Синхронизация вручную или автоматически по расписанию, или вручную обработкой.

25080 руб.

12.06.2017    135530    730    291    

391

Перенос данных из УПП 1.3 в БП 3.0. Переносятся документы (обороты за период), справочная информация и остатки

Обмен между базами 1C Файловый обмен (TXT, XML, DBF), FTP Платформа 1С v8.3 1С:Управление производственным предприятием 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Управленческий учет Платные (руб)

Перенос данных из 1С:Управление производственным предприятием 1.3 в 1С:Бухгалтерия предприятия 3.0 с помощью правил обмена. Переносятся остатки, документы (обороты за период), справочная информация. Правила проверены на конфигурациях УПП 1.3 (1.3.226.x) и БП 3.0 (3.0.151.x). Правила подходят для версии ПРОФ и КОРП.

28000 руб.

15.12.2021    20597    137    38    

94

SALE! 10%

Перенос данных из ERP 2 / КА 2 / УТ 11 в БП 3.0. Переносятся документы, начальные остатки и справочники

Обмен между базами 1C Файловый обмен (TXT, XML, DBF), FTP Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Платные (руб)

Перенос данных из ERP в БП 3 | из КА 2 в БП 3 | из УТ 11 в БП 3 | из ЕРП в БП 3 | В продаже с 2019г. | Воспользовались более 176 предприятий! | Сэкономьте время - используйте готовое решение для перехода! | Перенос разработан в формате КД 2 (правила конвертации данных) | Переносятся все возможные виды документов, начальных остатков и нормативно-справочная информация| Можно опционально выгружать каждую пару "номенклатура+характеристика" как отдельную номенклатуру | Есть выгрузка настроек счетов учета и зарплатных данных из ERP / КА 2 | Можно проверить на вашем сервере перед покупкой, обращайтесь!

38500 34650 руб.

15.04.2019    68818    179    139    

111

Перенос данных из УТ 10.3 в УТ 11.5. Переносятся документы (обороты за период), справочная информация и остатки

Обмен между базами 1C Файловый обмен (TXT, XML, DBF), FTP Платформа 1С v8.3 Оперативный учет 1С:Управление торговлей 10 1С:Управление торговлей 11 Россия Управленческий учет Платные (руб)

Перенос данных из 1С:Управление торговлей 10.3 в 1С:Управление торговлей 11.5 с помощью правил обмена. Переносятся остатки, документы (обороты за период), справочная информация. Правила проверены на конфигурациях УТ 10.3 (10.3.87.x) и УТ 11.5 (11.5.16.x).

28000 руб.

23.07.2020    46748    199    64    

162

SALE! 10%

Перенос данных из БП 3.0 в УТ 11 / КА 2 / ERP 2. Переносятся начальные остатки, документы и справочники

Обмен между базами 1C Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Платные (руб)

В продаже с 2014г. | Воспользовались более 122 предприятий! | Перенос данных из БП 3.0 в УТ 11 | из БП 3.0 в КА 2 | из БП 3.0 в ERP | Сэкономьте свое время - используйте готовое решение для перехода! | Постоянно работаем над развитием переноса данных | Обновляем на новые релизы 1С | Есть фильтр выгрузки по организациям | Переносятся начальные остатки на выбранную дату, документы за период времени и вся возможная справочная информация | Перенос сделан на технологии КД 2 (правила конвертации данных)

50722 45650 руб.

31.10.2014    231870    124    327    

296

SALE! 10%

Перенос данных из БП 3.0 в УНФ 3.0 / УНФ 1.6. Переносятся остатки, документы и справочная информация

Обмен между базами 1C Файловый обмен (TXT, XML, DBF), FTP Платформа 1С v8.3 1С:Управление нашей фирмой 1.6 1С:Бухгалтерия 3.0 1С:Управление нашей фирмой 3.0 Россия Платные (руб)

В продаже с 2018г. | Воспользовались более 41 предприятия! | Правила конвертации (КД 2) для переноса данных из БП 3 в УНФ | Переносятся все виды документов, начальные остатки и вся возможная справочная информация | Есть фильтр по организациям | Оперативно обновляем на новые релизы | Оказываем техподдержку | В комплект файлов входит инструкция, авторская версия обработки "Универсальный обмен...", актуальные правила переноса данных и архив старых версий переноса | Учет в БП 3 должен быть корректным, некорректные данные не переносятся | Можно бесплатно проверить на вашем сервере до покупки!

50722 руб.

10.07.2018    67741    41    123    

46

SALE! 10%

Перенос данных из ERP 2 / КА 2 в ЗУП 3. Переносятся остатки, документы и справочники

Обмен между базами 1C Файловый обмен (TXT, XML, DBF), FTP Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Комплексная автоматизация 2.х 1С:Зарплата и Управление Персоналом 3.x Россия Бухгалтерский учет Управленческий учет Платные (руб)

Перенос данных из ERP в ЗУП 3 | из КА 2 в ЗУП | Воспользовались более 79 предприятий! | Предлагаем приобрести готовые правила конвертации данных (КД 2) для переноса остатков, документов с движениями и справочной информации 3 | В продаже с 2020г. | Оперативно обновляем правила до актуальных релизов 1С | Есть перенос начальной задолженности по зарплате и начальной штатной расстановки на выбранную дату | Обороты за прошлые годы (данные для расчета среднего) переносятся свернуто в документ "Перенос данных" | Есть фильтр по организациям | Документы за текущий период переносятся сразу с движениями, поэтому не потребуется делать перерасчеты | Перенос можно проверить перед покупкой, обращайтесь!

48278 43450 руб.

03.12.2020    34410    81    58    

78
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. tormozit 7140 06.03.21 17:35 Сейчас в теме
Видимо в статье опечатка - вместо "Приложение2 и Компонент2 – для 8.2.17.1851" имелось ввиду "Приложение2 и Компонент2 – для 8.3.17.1851"?
+
3. user1082819 25 09.03.21 17:31 Сейчас в теме
(1) Большое спасибо! Исправил опечатку.
+
2. tormozit 7140 07.03.21 12:32 Сейчас в теме
Подтверждаю. Способ рабочий. Автору спасибо за то, что он первый описал подробно и понятно все шаги. Благодаря этому я добавил реализацию описанной возможности в инструмент "Управление COM-классами 1С (ИР)" https://www.hostedredmine.com/issues/922012
Прикрепленные файлы:
Pavel_Vladivostok; alk; +2
4. wolder 130 25.05.21 12:56 Сейчас в теме
Да это работает! Для 8.3.хх.хххх

И в коде пишем что-то типа:
Если Элементы.СтарницыВариантовПодключения.ТекущаяСтраница = Элементы.Вариант1 Тогда
// запуска к КА
V8 = Новый COMОбъект("V83.COMConnector.1.8315");
ИНаче
// запуска к Розница
V8 = Новый COMОбъект("V83.COMConnector.1.8318");
КОнецЕСлИ;
Прикрепленные файлы:
+
Оставьте свое сообщение