Чуда нет. Просто подключение Вы организуете заранее.
Я не являюсь автором идеи и привожу ссылку на первоисточник. Мой скромный вклад заключается в перекомпиляции библиотеки, первоначально предназначенной для 1С77 для использования с 1С81 и 1С82. Для тех же, кому лень читать 6 страниц обсуждения темы на приведенном форуме, постараюсь привести здесь выжимку из всех этих обсуждений.
1. Что это такое и зачем это нужно?
Когда мы соединяемся с базой 1С77 по OLE (с базой 1С8х через COMConnector) на соединение с базой уходит несколько секунд, что ограничивает область применения этой технологии. В обсуждениях мелькала идея о том, что было бы здорово иметь уже запущенный экземпляр 1С и с помощью какой-то внешней компоненты соединяться с ним и затем отсоединяться. Так как 1С уже запущена, соединение должно проходить значительно быстрее.
Собственно, v82Server.dll (как и v7Server.dll и v8Server.dll) ровно это и делает с использованием встроенной в ОС Windows технологии COM+. Причем COM+ дает нам дополнительные бонусы:
1. Мы имеем возможность настроить пул запущенных экземпляров, то есть указать их минимальное и максимальное количество и таймаут, после которого незадействованные экземпляры будут отключаться. Причем следить за всем будет сама подсистема COM+.
2. Есть возможность удаленного выполнения процедур, то есть сама v82Server.dll может располагаться на сервере, а на клиентском компьютере будет установлена сформированная подсистемой COM+ заглушка (stub), переадресующая вызовы на сервер.
Как это применить? Ну, например, если у Вас уже есть сайт на PHP, то для организации взаимодействия с 1С вы можете написать:
2. Как настроить, чтобы это заработало?
- Создать COM+ приложение:
- Панель управления -> Администрирование -> Службы компонентов;
- найти в дереве консоли узел "Мой компьютер". Открыть свойства и проверить на закладке "Свойства по умолчанию", что на данном компьютере разрешено исполнение приложений DCOM. Если галочка не стоит, включить.
- в дереве консоли найти узел "Мой компьютер - > Приложения Com+" и в контекстном меню этого узла выбрать Создать -> Приложение;
- в мастере установки нажать кнопку "создать новое приложение" и ввести имя приложения (например "v82Server")
Способ активации выбрать "серверное приложение" и проклацать "далее" до завершения работы мастера.
- Создать компонент в приложении
- в только что созданном приложении найти группу "Компоненты" и в контекстном меню выбрать "Создать -> Компонент"
- в мастере установки компонентов нажать "Установка новых компонентов", указать путь к файлу v82Server.dll и нажать "Готово"
- в свойствах компонента, на закладке "Активация" включить группировку объектов в пул и указать минимальный и максимальный размер пула (например 1 и 3);
- включить флажок "Включить создание объектов" и в поле "строка конструктора" написать параметры строки соединения для V82.ComConnector (например: Srvr="mysrvr";Ref="UPP";Usr=remote;Pwd=123) (сразу замечу, что у пользователя remote в базе должны быть права на внешнее подключение);
- запустить приложение (через контекстное меню v82Server).
После этого в списке процессов должны появиться n процессов 1cv8.exe, где n-минимальный размер пула объектов, а если зайти в базу 1С и посмотреть список активных пользователей, то мы увидим n пользователей remote.
Каждый клиент, который пытается создать объект v82Server.Connection, будет получать его из пула объектов (если есть свободные объекты в пуле) и по окончании работы с ним будет возвращать объект в пул.
Проверить, что эта штука работает, можно при помощи скрипта:
set v82=CreateObject("v82Server.Connection")
MsgBox v82.UserName()
3. Как сделать, чтобы было соединение и с базой Бухгалтерии и с базой Торговли?
Создать 2 приложения COM+ с разными именами, например v8BUH и v8Trade. При создании компонентов указать соответствующую строку подключения. При программном создании объектов указывать имена "v8BUH.Connection" и "v8Trade.Connection"
4. Как сделать, чтобы я вызывал объект на локальном компьютере, а код исполнялся на удаленном?
- Зайти в консоль Службы компонентов (Панель управления -> Администрирование -> Службы компонентов) на сервере - компьютере, где уже установлено наше COM+ приложение, найти его в дереве, и щелкнув правой кнопкой мышки в контекстном меню выбрать "Экспорт".
- В открывшемся мастере выбрать "Прокси-приложение установка доступа с других компьютеров к этому" и назначить имя для файла MSI, который для Вас сформирует мастер.
- перенести сформированный мастером инсталляционный пакет на клиентский компьютер и установить.
- Установка требует прав администратора, поэтому я делал так:
- Запускаем консоль Службы компонентов от имени администратора.
- в дереве консоли находим узел "Мой компьютер - > Приложения Com+" и в контекстном меню этого узла выбираем Создать -> Приложение;
- в мастере установки нажимаем кнопку "Выбрать готовое приложение" и выбираем наш инсталляционный пакет.
- В консоли Службы компонентов клиентского компьютера должно появиться приложение COM+ с таким же именем, как и на сервере, но свойства его будут недоступны для изменения, кроме параметра "Имя удаленного сервера".
- перезапустить приложение COM+ в консоли сервера.
Проверить работу на клиенте можно также с помощью вышеприведенного скрипта. Код 1С82 должен выполняться и в том случае, если восьмерка на клиентском компьютере вообще не установлена.
PS. Я проверял работу данного компонента на MS Windows 2003 и XP. Возможно, что-то может не заработать. Это зависит от настроек безопасности в вашем домене.
Если нет домена, тогда удаленная работа с COM+ приложением будет возможна, если на сервере существует пользователь, под которым вы работаете на локальном компьютере, у него совпадает пароль с вашим, настроены права на DCOM и на использование данного приложения. В общем случае читайте справку в консоли "Службы компонентов". Там все достаточно детально описано. Кроме того, советую все же почитать ветку форума, указанную в начале статьи. В этой ветке можно найти также компоненты для доступа к 1С77 и к 1С81 с исходными текстами.
Обновление от 08.03.2020:
Добавлен архив с версией библиотеки для 1с83 (32 и 64-разрядная), а также исходниками (проект VS).
К сожалению, проверить смог только 64-разрядную версию на Windows 10 (версия платформы 8.3.15.1830, УПП 1.3.132.2).
Удачи в экспериментах!