Интеграция современных решений на платформе «1С:Предприятие» с корпоративными информационными системами часто упирается в ограничения устаревшей архитектуры. Типичный пример — необходимость подружить легендарную, но технологически устаревшую конфигурацию «1С:Управление производственным предприятием» (УПП 1.3) с современной системой «1С:Документооборот» (1С:ДО).
Главный вопрос, который возникает перед разработчиком: как организовать бесшовную интеграцию, какие подсистемы БСП (Библиотеки стандартных подсистем) для этого требуются и как обойти технологические ограничения совместимости старой платформы? В этой статье мы подробно разберем, как решить эту задачу оптимальным путем, минимизируя трудозатраты и риски для стабильности учетной системы.
Часто разработчики начинают искать подходящую версию БСП, чтобы внедрить ее модули в УПП для бесшовной интеграции. Это не совсем верный подход. На самом деле для интеграции с 1С:ДО фирма «1С» выпускает отдельный продукт — Библиотеку интеграции с 1С:Документооборотом (БИД), которая на портале технологической поддержки помечается аббревиатурой DMIL (Document Management Integration Library).
БИД — это специализированный набор объектов метаданных и программного кода, предназначенный для встраивания в интегрируемую (потребительскую) конфигурацию. Тем не менее, БИД жестко завязана на стандартные механизмы БСП и использует ее базовый функционал. Для работы БИД в вашей конфигурации-потребителе должны присутствовать следующие подсистемы БСП:
Если в вашей конфигурации (например, в УПП) эти подсистемы БСП отсутствуют или сильно устарели, то простое объединение с БИД не заработает — возникнет множество ошибок компиляции кода из-за отсутствия необходимых общих модулей и объектов метаданных.
Выбор версии БИД напрямую зависит от используемой редакции «1С:Документооборота» и текущей версии БСП, внедренной в вашу рабочую базу:
Основное препятствие при попытке связать УПП и 1С:ДО через стандартную современную библиотеку БИД — это режим совместимости конфигурации. УПП 1.3 штатно работает в режиме совместимости «Версия 8.2.16» (или даже «Версия 8.2»).
Современные версии БИД активно используют синтаксические конструкции и объекты метаданных, которые в этом режиме недоступны:
ОписаниеОповещения вместо модальных окон);СтрНайти, СтрЗаменить, СтрШаблон);ОпределяемыеТипы;Полноценный апгрейд БСП в УПП до версии 2.4 или 3.x потребует отключения режима совместимости всей конфигурации. Для крупных рабочих баз УПП это колоссальный объем работы, сопряженный с огромным риском нарушить стабильность существующего партионного или РАУЗ-учета, расчета себестоимости и интеграций с другими системами. Поэтому данный путь выбирают крайне редко.
Проанализируем три основных практических сценария, как подружить УПП и Документооборот с учетом технологических ограничений.
Этот способ упомянут опытными разработчиками на форумах. Суть метода заключается в ручной адаптации исходного кода интеграционной библиотеки под старый синтаксис платформы 8.2.
Рассмотрим алгоритм действий по шагам:
Разберем пример замены асинхронного вызова на синхронный. В исходном коде БИД для платформы 8.3 открытие файла для редактирования выглядит так:
// Современный асинхронный код БИД
ПараметрыВыбора = Новый ПараметрыВыбораФайла();
ОписаниеОповещения = Новый ОписаниеОповещения("ПослеВыбораФайла", ЭтотОбъект);
НачатьВыборФайла(ОписаниеОповещения, ПараметрыВыбора);
Для корректной работы в УПП в режиме совместимости 8.2 мы вынуждены переписать этот код на синхронный лад:
// Адаптированный синхронный код для УПП (Режим совместимости 8.2)
ДиалогВыбора = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
Если ДиалогВыбора.Выбрать() Тогда
ИмяВыбранногоФайла = ДиалогВыбора.ПолноеИмяФайла;
// Вызываем обработчик напрямую, передавая результат
ПослеВыбораФайлаСинхронно(ИмяВыбранногоФайла);
КонецЕсли;
Аналогично переписываются вызовы функций работы со строками, заменяясь на классические методы Найти и Сред, а также удаляются несовместимые свойства объектов конфигурации.
Если вы используете версию 1С:ДО 2.1, обратите внимание на каталог шаблонов установки конфигурации «Документооборот». В папке шаблона присутствует подкаталог со вспомогательными файлами (обычно это Вспомогательные файлы\Библиотека интеграции...).
Там поставляются готовые конфигурации (файлы .cf) интеграции, адаптированные под конкретные типовые решения. Среди них часто можно найти специализированные сборки интеграционных модулей для старых конфигураций.
При объединении файлов конфигурации следуйте правилу избирательности: не переносите лишнее. Если вы настраиваете бесшовную интеграцию с конкретной версией (например, с 1С:ДО 3.0), при объединении исключите все объекты метаданных, относящиеся к устаревшей Редакции 2. Вам понадобятся только общие модули базовой функциональности интеграции и модули интеграции конкретной целевой редакции. Это защитит конфигурацию от «мусорного» кода и существенно облегчит последующие обновления.
Если внедрение БИД кажется избыточным и опасным из-за необходимости обновления БСП в УПП, оптимальным решением станет отказ от бесшовной интеграции «из коробки» в пользу прямого обмена данными через API.
1С:Документооборот предоставляет мощный веб-сервис DMService, который содержит готовые методы для решения большинства задач автоматизации:
В этом случае в УПП не нужно затягивать тяжелые библиотеки БСП. Мы можем написать простой код вызова веб-сервиса 1С:ДО напрямую.
Рассмотрим пример создания подключения к веб-сервису DMService из УПП:
Функция ПолучитьПроксиДокументооборота() Экспорт
АдресWSDL = "http://server-do/do_corp/ws/DMService?wsdl";
Пользователь = "Администратор";
Пароль = "123456";
Определения = Новый WSОпределения(АдресWSDL, Пользователь, Пароль);
// Получаем точку подключения и прокси-класс
Прокси = Новый WSПрокси(Определения, "http://www.1c.ru/dm", "DMService", "DMServiceSoap");
Прокси.Пользователь = Пользователь;
Прокси.Пароль = Пароль;
Возврат Прокси;
КонецФункции
С помощью полученного объекта Прокси мы можем вызывать любые методы интеграции. Например, запрашивать список задач пользователя или передавать файлы непосредственно из документов УПП (таких как «Заказ покупателя» или «Договор контрагента») напрямую в карточку документа 1С:ДО.
Выбор стратегии интеграции зависит от ваших ресурсов и требований к системе: