Как интерактивно редактировать документы другой базы 1С из текущей конфигурации?

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

В процессе сопровождения и развития учетных систем нередко возникает задача объединения нескольких информационных баз для пользователя. Типовая ситуация: оператор вынужден параллельно открывать две или более базы 1С с одинаковыми либо смежными конфигурациями, переносить нормативно-справочную информацию и дублировать оформление первичных документов. Рассмотрим, какие технические возможности предоставляет платформа 1С для работы с данными соседних баз, разберем ограничения встроенных инструментов и выделим наиболее надежные архитектурные решения.

Анализ задачи и технические ограничения прямого открытия форм

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

  1. Ограничения COM-соединений: Объект V83.ComConnector предназначен исключительно для серверного взаимодействия без графической подсистемы. С его помощью можно читать и записывать объекты прикладного решения, но невозможно сгенерировать пользовательский интерфейс. В свою очередь, объект V83.Application запускает полноценное интерактивное приложение, но жестко привязан к операционной системе Windows, требует совпадения разрядности библиотек (32/64 бит), не поддерживается веб-клиентом и ОС Linux.
  2. Сложности интеграции через поле HTML-документа: Размещение управляемой формы второй базы во встроенном браузере через поле HTML-документа накладывает ограничения политик безопасности (Same-Origin Policy). Кроме того, такое решение требует реализации сквозной аутентификации (SSO) и не позволяет родительской форме перехватывать события записи и валидации данных дочерней формы.
  3. Блокировки и задержки: Синхронное прямое редактирование чужого объекта замораживает поток текущего клиента на время ожидания ответа по сети. Если целевая база недоступна или объект заблокирован другим пользователем, сеанс оператора зависает.

Решение 1. Использование COM-соединения с V83.Application

Если задача сводится к строго локальному запуску на рабочей станции под управлением Windows и необходимо открыть окно целевой базы, разберем пример использования COM-клиента. Посмотрим на программный вызов:


ПараметрыПодключения = "Srvr=""Server1C"";Ref=""TargetBase"";Usr=""User"";Pwd=""Password"";";
Попытка
    AppConnector = Новый COMObject("V83.Application");
    AppConnector.Connect(ПараметрыПодключения);
    AppConnector.Visible = Истина;
    AppConnector.ОткрытьФорму("Документ.РеализацияТоваровУслуг.ФормаОбъекта");
Исключение
    Сообщить("Ошибка подключения к удаленной базе: " + ОписаниеОшибки());
КонецПопытки;

Важно: Этот способ считается устаревшим и не рекомендуется для промышленной эксплуатации, так как приводит к нестабильности при фоновых обновлениях платформы, блокировкам COM-процессов в памяти и полной несовместимости с кроссплатформенными клиентами.

Решение 2. Разработка промежуточной формы ввода и обмен через Web/HTTP-сервисы

Наиболее масштабируемый и современный способ организации совместной работы — создание локальной формы обработки в текущей базе с последующей асинхронной передачей структуры данных через REST или HTTP-сервисы. Разберем по шагам, как устроена такая схема:

  1. Оператор заполняет документ в локальном интерфейсе (все справочники и табличные части доступны без сетевых задержек).
  2. По нажатию кнопки записи в текущей базе формируется JSON-структура документа.
  3. Клиент обращается к собственному серверному модулю, который через HTTPСоединение и HTTPЗапрос отправляет данные в целевую базу.
  4. На стороне приемника работает опубликованный HTTP-сервис, который десериализует JSON, находит соответствующие ссылки справочников по GUID (или бизнес-ключам) и проводит документ.

Посмотрим на пример отправки структурированных данных во внешнюю базу через 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);
КонецФункции

Решение 3. Использование стандартного интерфейса OData

Если нет возможности разрабатывать собственные HTTP-сервисы и вносить изменения в конфигурацию целевой базы, задействуем стандартный интерфейс OData платформы 1С. Публикация стандартного интерфейса выполняется штатными средствами администрирования веб-сервера. Это позволяет получать списки справочников и создавать документы с помощью стандартных HTTP-запросов (GET, POST, PATCH) напрямую из формы текущей базы.

Решение 4. Организация асинхронной репликации и распределенных баз

Когда конфигурации баз полностью идентичны, оптимальным архитектурным решением является отказ от попыток прямого межсистемного ввода в пользу стандартных механизмов платформы:

  1. Распределенная информационная база (РИБ): Создаем центральный и периферийные узлы. Оператор работает только в своем узле, а платформа берет на себя автоматическую миграцию документов и синхронизацию справочников по расписанию.
  2. Универсальный обмен данными и Конвертация данных: Настраиваем правила выгрузки и загрузки на базе планов обмена. Документы регистрируются к выгрузке при записи и передаются регламентным заданием в фоновом режиме.
  3. Событийная шина данных (Message Broker): Применение брокеров сообщений (например, RabbitMQ) для гарантированной доставки пакетов данных между системами с валидацией нормативно-справочной информации (НСИ).

Решение 5. Бесшовный переход по навигационным ссылкам

Если оператору все же требуется полный интерактивный доступ к типовой форме удаленной базы со всеми проверками и экранной логикой, используем механизм навигационных ссылок (e1cib). По клику на команду в текущей базе формируется внешняя ссылка вида e1cib/data/Документ.РеализацияТоваровУслуг?ref=..., после чего вызывается метод ЗапуститьСистему. При настроенной доменной авторизации (OpenID / Kerberos) перед пользователем мгновенно открывается тонкий или веб-клиент целевой информационной базы непосредственно на нужной форме.

Резюме и рекомендации

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

← На главную