В процессе сопровождения и развития учетных систем нередко возникает задача объединения нескольких информационных баз для пользователя. Типовая ситуация: оператор вынужден параллельно открывать две или более базы 1С с одинаковыми либо смежными конфигурациями, переносить нормативно-справочную информацию и дублировать оформление первичных документов. Рассмотрим, какие технические возможности предоставляет платформа 1С для работы с данными соседних баз, разберем ограничения встроенных инструментов и выделим наиболее надежные архитектурные решения.
Попытка вызвать экранную форму чужой базы напрямую из сеанса текущей базы сталкивается с фундаментальными принципами работы клиент-серверной архитектуры платформы 1С. Выделим ключевые технологические особенности и ограничения существующих механизмов:
V83.ComConnector предназначен исключительно для серверного взаимодействия без графической подсистемы. С его помощью можно читать и записывать объекты прикладного решения, но невозможно сгенерировать пользовательский интерфейс. В свою очередь, объект V83.Application запускает полноценное интерактивное приложение, но жестко привязан к операционной системе Windows, требует совпадения разрядности библиотек (32/64 бит), не поддерживается веб-клиентом и ОС Linux.Если задача сводится к строго локальному запуску на рабочей станции под управлением Windows и необходимо открыть окно целевой базы, разберем пример использования COM-клиента. Посмотрим на программный вызов:
ПараметрыПодключения = "Srvr=""Server1C"";Ref=""TargetBase"";Usr=""User"";Pwd=""Password"";";
Попытка
AppConnector = Новый COMObject("V83.Application");
AppConnector.Connect(ПараметрыПодключения);
AppConnector.Visible = Истина;
AppConnector.ОткрытьФорму("Документ.РеализацияТоваровУслуг.ФормаОбъекта");
Исключение
Сообщить("Ошибка подключения к удаленной базе: " + ОписаниеОшибки());
КонецПопытки;
Важно: Этот способ считается устаревшим и не рекомендуется для промышленной эксплуатации, так как приводит к нестабильности при фоновых обновлениях платформы, блокировкам COM-процессов в памяти и полной несовместимости с кроссплатформенными клиентами.
Наиболее масштабируемый и современный способ организации совместной работы — создание локальной формы обработки в текущей базе с последующей асинхронной передачей структуры данных через REST или HTTP-сервисы. Разберем по шагам, как устроена такая схема:
HTTPСоединение и HTTPЗапрос отправляет данные в целевую базу.Посмотрим на пример отправки структурированных данных во внешнюю базу через HTTP API:
Функция ОтправитьДокументВБазуПриемник(СтруктураДанныхJSON)
Сервер = "api.company.local";
Порт = 443;
ЗащищенноеСоединение = Новый ЗащищенноеСоединениеOpenSSL();
Соединение = Новый HTTPСоединение(Сервер, Порт,,,, 30, ЗащищенноеСоединение);
Запрос = Новый HTTPЗапрос("/target_base/hs/api/v1/documents");
Запрос.Заголовки.Вставить("Content-Type", "application/json; charset=utf-8");
Запрос.УстановитьТелоИзСтроки(СтруктураДанныхJSON, КодировкаТекста.UTF8);
Ответ = Соединение.ОтправитьДляОбработки(Запрос);
Возврат (Ответ.КодСостояния = 200 ИЛИ Ответ.КодСостояния = 201);
КонецФункции
Если нет возможности разрабатывать собственные HTTP-сервисы и вносить изменения в конфигурацию целевой базы, задействуем стандартный интерфейс OData платформы 1С. Публикация стандартного интерфейса выполняется штатными средствами администрирования веб-сервера. Это позволяет получать списки справочников и создавать документы с помощью стандартных HTTP-запросов (GET, POST, PATCH) напрямую из формы текущей базы.
Когда конфигурации баз полностью идентичны, оптимальным архитектурным решением является отказ от попыток прямого межсистемного ввода в пользу стандартных механизмов платформы:
Если оператору все же требуется полный интерактивный доступ к типовой форме удаленной базы со всеми проверками и экранной логикой, используем механизм навигационных ссылок (e1cib). По клику на команду в текущей базе формируется внешняя ссылка вида e1cib/data/Документ.РеализацияТоваровУслуг?ref=..., после чего вызывается метод ЗапуститьСистему. При настроенной доменной авторизации (OpenID / Kerberos) перед пользователем мгновенно открывается тонкий или веб-клиент целевой информационной базы непосредственно на нужной форме.
Прямое интерактивное редактирование форм другой базы через COM или веб-вставки создает критические уязвимости в отказоустойчивости инфраструктуры. Наиболее надежным и поддерживаемым подходом является четкое разделение ответственности: ввод данных оператором в едином интерфейсе с последующей асинхронной передачей через HTTP-сервисы, либо внедрение регулярных обменов данными на уровне планов обмена 1С.