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

06.03.21

Интеграция - Перенос данных 1C

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

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
Настройка возможности подключение по технологии COM к базам данных работающим на различных версиях платформы 1С.:
.epf 9,84Kb
32
32 Скачать (1 SM) Купить за 1 850 руб.

В организации, где я сейчас работаю, для обмена данными между базами 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%

Перенос данных 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. Не требуется синхронного обновления правил после обновления другой конфигурации, участвующей в обмене. Типовой обмен через планы обмена кнопкой Синхронизация вручную или автоматически по расписанию, или вручную обработкой.

27660 руб.

12.06.2017    143336    821    297    

428

SALE! 10%

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

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

55778 50200 руб.

04.08.2015    168378    344    279    

380

SALE! 10%

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

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

35000 31500 руб.

23.07.2020    53447    236    73    

192

SALE! 10%

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

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

35000 31500 руб.

15.12.2021    24830    174    51    

132

SALE! 10%

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

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

53111 47800 руб.

03.12.2020    37254    99    66    

95

Перенос данных 1C Программист Бухгалтер Платформа 1С v8.3 Сложные периодические расчеты 1С:Зарплата и Управление Персоналом 3.x Россия Бухгалтерский учет НДФЛ ФОМС, ЕФС Платные (руб)

Обработки для быстрого перехода с конфигураций «КАМИН:Расчет заработной платы 3.0», «КАМИН:Зарплата для бизнеса 4.0» и «КАМИН:Зарплата 5.0» на конфигурацию «Зарплата и управление персоналом» версии 3.1.

12000 руб.

25.09.2016    81571    324    253    

276

SALE! 10%

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

Перенос данных из 1С:Управление производственным предприятием 1.3 в 1С:Бухгалтерия предприятия 3.0 с помощью правил обмена | Можно выполнить переход с УПП на БП 3 или запускать выгрузку данных за выбранный период времени | Переносятся документы, начальные остатки и вся справочная информация | Есть фильтр по организации и множество других параметров выгрузки | Поддерживается несколько сценариев работы: как первичный полный перенос, так и перенос только новых документов | Перенос данных возможен в "1С: Бухгалтерия 3.0" версии ПРОФ, КОРП или базовую | Переход с "1С: УПП1.3" / "1С:КА 1.1" на "1С:БП3.0" с помощью правил конвертации будет максимально комфортным! | Можно бесплатно проверить перенос на вашем сервере!

48278 43450 руб.

25.02.2015    172025    307    258    

384

Зарплата Внешние источники данных Бюджетный учет Перенос данных 1C Системный администратор Программист Платформа 1С v8.3 Сложные периодические расчеты 1С:Зарплата и кадры государственного учреждения 3 Государственные, бюджетные структуры Россия Бухгалтерский учет Бюджетный учет Платные (руб)

Обработка позволяет перенести кадровую информацию и данные по заработной плате, фактическим удержаниям, НДФЛ, вычетам, страховым взносам из базы Парус 8 учреждений (далее Парус) в конфигурацию 1С:Зарплата и кадры государственного учреждения ред. 3 (далее 1С) и начать с ней работать с любого месяца года.

120000 руб.

19.08.2020    25702    25    1    

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

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