При развитии корпоративных информационных систем на базе 1С часто возникает задача интеграции различных конфигураций. Типичный сценарий — необходимость связать нетиповую (или сильно кастомизированную) рабочую базу с системой 1С:Документооборот (1С:ДО) для организации централизованного хранения файлов. Однако при попытке внедрить механизмы интеграции разработчики сталкиваются с жесткими требованиями к версиям Библиотеки стандартных подсистем (БСП).
В этой статье мы подробно разберем, с какими трудностями можно столкнуться при попытке обновить БСП с устаревшей версии 2.3.2.76 до современной 3.1.1.151 на платформе 1С:Предприятие 8.3.14, проанализируем риски изменения режима совместимости и рассмотрим альтернативные, более простые пути решения задачи интеграции без масштабного и болезненного обновления всей конфигурации.
---
В исходной ситуации мы имеем нетиповую конфигурацию, работающую на платформе 8.3.14 с установленным режимом совместимости 8.3.7. В системе используется БСП версии 2.3.2. Задача — подключить интеграцию с 1С:Документооборот версии 1.1.14.6.
Попытка простого переноса объектов или «накатывания» новой версии БСП 3.1 «в лоб» приводит к неработоспособности системы из-за отсутствия необходимых общих модулей, изменившейся структуры метаданных и критических требований к режиму совместимости платформы. Версия БСП 3.1 предназначена для работы на платформе 8.3.14 с отключенным режимом совместимости (или с совместимостью не ниже 8.3.14). Попытка отключить режим совместимости в базе, которая годами жила на режиме 8.3.7, гарантированно приведет к множественным ошибкам компиляции и отказу ядра системы.
---
Если вы приняли решение идти по пути полного обновления БСП, то важно понимать: обновиться в один клик через сравнение и объединение конфигураций невозможно. Главная причина кроется в обработчиках обновления данных, которые преобразуют структуру существующих справочников, регистров сведений и документов БСП от версии к версии.
Разберем по шагам правильный алгоритм поэтапного обновления:
2.3.x до финальной версии ветки 2.4.x.2.4.x на ветку 3.0.x. Снова запускаем «Предприятие» и выполняем отложенное обновление данных.3.1.x.Вопрос, Предупреждение, ОткрытьФормуМодально) перестанут работать. Нам придется переписать их на асинхронный лад с использованием описаний оповещений.НачатьПомещениеФайла или старых синхронных методов работы с файловой системой).Проанализируем пример замены старого модального вызова на новый асинхронный метод, который станет обязательным после отключения режима совместимости:
// Старый модальный код (не работает в режиме без совместимости 8.3.14):
Ответ = Вопрос("Выгрузить присоединенный файл в 1С:Документооборот?", РежимДиалогаВопрос.ДаНет);
Если Ответ = КодВозвратаДиалога.Да Тогда
ВыгрузитьФайлВДокументооборот();
КонецЕсли;
// Новый асинхронный код (требуемый для БСП 3.1):
Оповещение = Новый ОписаниеОповещения("ПослеВыбораВыгрузки", ЭтотОбъект);
ПоказатьВопрос(Оповещение, "Выгрузить присоединенный файл в 1С:Документооборот?", РежимДиалогаВопрос.ДаНет);
В модуле формы нам также потребуется определить процедуру-обработчик ожидания:
Процедура ПослеВыбораВыгрузки(РезультатВыбора, ДополнительныеПараметры) Экспорт
Если РезультатВыбора = КодВозвратаДиалога.Да Тогда
ВыгрузитьФайлВДокументооборот();
КонецЕсли;
КонецПроцедуры
Учитывая колоссальный объем работы по переписыванию нетипового кода, этот процесс действительно может занять у разработчика от нескольких недель до месяца кропотливого труда.
---
Давайте выясним истинную цель интеграции. Если перед нами стоит задача исключительно хранения файлов в 1С:Документооборот и обеспечения доступа к ним из обеих систем через веб-сервисы, нам абсолютно не обязательно затевать глобальное обновление БСП и менять режим совместимости всей базы.
1С:Документооборот «из коробки» предоставляет мощный и готовый к работе веб-сервис DMService. Мы можем написать собственную легкую интеграционную подсистему (обертку), которая будет напрямую общаться с веб-сервисом ДО посредством SOAP-запросов.
Рассмотрим по шагам, как реализовать подключение и базовые операции с веб-сервисом 1С:ДО:
http://[АдресСервера]/[ИмяБазы]/ws/DMService?wsdl.Посмотрим на пример кода, инициализирующего подключение к веб-сервису 1С:ДО и выполняющего авторизацию:
Функция ПодключитьсяКВебСервисуДО(АдресWSDL, Пользователь, Пароль)
Попытка
// Создаем определение WS-ссылки динамически
Определение = Новый WSОпределения(АдресWSDL, Пользователь, Пароль);
// Создаем прокси для обращения к методам DMService
ПроксиДО = Новый WSПрокси(Определение, "http://www.1c.ru/dm", "DMService", "DMServiceSoap");
ПроксиДО.Пользователь = Пользователь;
ПроксиДО.Пароль = Пароль;
Возврат ПроксиДО;
Исключение
ЗаписьЖурналаРегистрации("Интеграция с 1С:ДО", УровеньЖурналаРегистрации.Ошибка, , , ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
ВызватьИсключение "Не удалось подключиться к веб-сервису 1С:Документооборот. Подробности в журнале регистрации.";
КонецПопытки;
КонецФункции
Используя полученный объект ПроксиДО, мы можем вызывать стандартные методы API 1С:Документооборота, такие как создание папок, загрузка двоичных данных файлов, чтение реквизитов документов и получение файлов обратно по их идентификаторам UID.
Этот подход обладает неоспоримыми преимуществами:
8.3.7.---
Если разработка собственного велосипеда для работы с SOAP-сервисами кажется вам слишком трудоемкой, обратите внимание на специализированный продукт от компании 1С — БИД (Библиотеку интеграции с 1С:Документооборотом).
БИД — это отдельный программный модуль, который поставляется независимо от БСП. Он предназначен специально для встраивания бесшовной интеграции в любые нетиповые конфигурации. Основные особенности этого пути:
---
Подводя итоги, мы можем составить четкую карту принятия решений для разработчика: