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

06.03.21

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

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

Файлы

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

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

Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний

Оформите подписку на компанию для решения рабочих задач

Оформить подписку и скачать решение со скидкой

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

12.06.2017    148486    864    302    

455

Перенос данных 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.21.x).

35000 руб.

23.07.2020    58792    284    75    

224

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

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

35000 руб.

15.12.2021    27857    198    58    

153

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    175154    319    267    

388

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

Регулярный обмен, выгрузка, перенос из КА 1.1, УПП 1.3, УТ 10.3 для обмена с любыми конфигурациями, поддерживающими обмен в формате EnterpriseData (КД3) - БП 3.0, ERP, КА 2, УТ 11, Розница 2, УНФ 1.6 и другими. Правила для старых и доработанных конфигураций не требуют синхронного обновления и совместимы с новыми и будущими конфигурациями. Обмен по расписанию, через папку, FTP, почту.

16260 руб.

18.02.2016    191386    626    536    

545

SALE! 10%

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

Перенос данных из КА 1.1 в КА 2 | из КА 1.1 в УТ 11 | Воспользовались более 367 компаний! | Переносятся все возможные виды документов, начальных остатков и вся справочная информация из "1С:КА 1.1" в "1С:КА 2.х" / "1С:УТ 11" | Разработан в формате КД 2 (правила конвертации данных) | Фильтр по организациям при выгрузке | Выбор разных алгоритмов выгрузки начальных остатков | Можно проверить перенос до покупки!

55778 50200 руб.

04.12.2015    194264    254    351    

409

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    39736    112    73    

106

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

Продукт "Интеграция с 1С:Документооборот" позволяет использовать функции программы "1С:Документооборот 8" напрямую из учетной системы (1С:УПП; 1С:КА, 1С:УТ 10.3, 1С:БГУ 1.0, 1С:ЗБУ 1.0, 1С:УПП для Казахстана и отраслевых решений, разработанных на их основе) на платформе "1С:Предприятие 8": выполнять и ставить задачи, просматривать документы, скан-копии и прочие файлы, штрих-кодировать документы отправлять письма, вести учет рабочего времени - не входя в "1С:Документооборот 8", работая в одной программе, что значительно сокращает время и делает работу более комфортной и эффективной. Продукт прошел сертификацию 1С-Совместимо

110400 руб.

11.06.2015    59195    38    20    

47
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. tormozit 7290 06.03.21 17:35 Сейчас в теме
Видимо в статье опечатка - вместо "Приложение2 и Компонент2 – для 8.2.17.1851" имелось ввиду "Приложение2 и Компонент2 – для 8.3.17.1851"?
3. user1082819 27 09.03.21 17:31 Сейчас в теме
(1) Большое спасибо! Исправил опечатку.
2. tormozit 7290 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");
КОнецЕСлИ;
Прикрепленные файлы:
Оставьте свое сообщение