Как обновить БСП с версии 2.3 до 3.1 в нетиповой конфигурации 1С и настроить интеграцию с 1С:Документооборот для хранения файлов?

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

При развитии корпоративных информационных систем на базе 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, гарантированно приведет к множественным ошибкам компиляции и отказу ядра системы.

---

Решение 1. Поэтапное обновление БСП и адаптация под новый режим совместимости

Если вы приняли решение идти по пути полного обновления БСП, то важно понимать: обновиться в один клик через сравнение и объединение конфигураций невозможно. Главная причина кроется в обработчиках обновления данных, которые преобразуют структуру существующих справочников, регистров сведений и документов БСП от версии к версии.

Разберем по шагам правильный алгоритм поэтапного обновления:

  1. Резервное копирование: Перед началом любых манипуляций обязательно создаем резервную копию информационной базы.
  2. Переход на промежуточные версии: Нам необходимо двигаться последовательно по ключевым релизам веток БСП:
    • Обновляемся с 2.3.x до финальной версии ветки 2.4.x.
    • Запускаем базу в режиме «Предприятие» под пользователем с административными правами. Обязательно дожидаемся окончания работы всех обработчиков обновления (контролировать процесс можно через обработку «Результаты обновления программы» или в журнале регистрации).
    • Выполняем переход с 2.4.x на ветку 3.0.x. Снова запускаем «Предприятие» и выполняем отложенное обновление данных.
    • И только после этого осуществляем переход на требуемую версию БСП 3.1.x.
  3. Отключение режима совместимости: Перевод конфигурации на работу без режима совместимости с версии 8.3.14 потребует от нас рефакторинга кода по следующим направлениям:
    • Отказ от модальности: Все модальные вызовы окон (такие как Вопрос, Предупреждение, ОткрытьФормуМодально) перестанут работать. Нам придется переписать их на асинхронный лад с использованием описаний оповещений.
    • Синхронные методы работы с файлами: Методы работы с локальными файлами на клиенте также потребуют асинхронных аналогов (например, вместо НачатьПомещениеФайла или старых синхронных методов работы с файловой системой).
    • Строгий синтаксис запросов: Платформа без режима совместимости жестче контролирует типы данных в запросах, особенно при работе с полями неопределенной длины и составными типами.

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


// Старый модальный код (не работает в режиме без совместимости 8.3.14):
Ответ = Вопрос("Выгрузить присоединенный файл в 1С:Документооборот?", РежимДиалогаВопрос.ДаНет);
Если Ответ = КодВозвратаДиалога.Да Тогда
    ВыгрузитьФайлВДокументооборот();
КонецЕсли;

// Новый асинхронный код (требуемый для БСП 3.1):
Оповещение = Новый ОписаниеОповещения("ПослеВыбораВыгрузки", ЭтотОбъект);
ПоказатьВопрос(Оповещение, "Выгрузить присоединенный файл в 1С:Документооборот?", РежимДиалогаВопрос.ДаНет);

В модуле формы нам также потребуется определить процедуру-обработчик ожидания:


Процедура ПослеВыбораВыгрузки(РезультатВыбора, ДополнительныеПараметры) Экспорт
    Если РезультатВыбора = КодВозвратаДиалога.Да Тогда
        ВыгрузитьФайлВДокументооборот();
    КонецЕсли;
КонецПроцедуры

Учитывая колоссальный объем работы по переписыванию нетипового кода, этот процесс действительно может занять у разработчика от нескольких недель до месяца кропотливого труда.

---

Решение 2. Использование веб-сервисов 1С:ДО напрямую (Альтернативный и самый быстрый путь)

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

1С:Документооборот «из коробки» предоставляет мощный и готовый к работе веб-сервис DMService. Мы можем написать собственную легкую интеграционную подсистему (обертку), которая будет напрямую общаться с веб-сервисом ДО посредством SOAP-запросов.

Рассмотрим по шагам, как реализовать подключение и базовые операции с веб-сервисом 1С:ДО:

  1. Получаем WSDL-описание веб-сервиса 1С:ДО. Обычно адрес выглядит следующим образом: http://[АдресСервера]/[ИмяБазы]/ws/DMService?wsdl.
  2. Создаем в нашей конфигурации новое WS-определение или подключаемся к нему динамически в коде.
  3. Реализуем вызовы необходимых методов веб-сервиса для передачи и получения файлов.

Посмотрим на пример кода, инициализирующего подключение к веб-сервису 1С:ДО и выполняющего авторизацию:


Функция ПодключитьсяКВебСервисуДО(АдресWSDL, Пользователь, Пароль)
    Попытка
        // Создаем определение WS-ссылки динамически
        Определение = Новый WSОпределения(АдресWSDL, Пользователь, Пароль);
        
        // Создаем прокси для обращения к методам DMService
        ПроксиДО = Новый WSПрокси(Определение, "http://www.1c.ru/dm", "DMService", "DMServiceSoap");
        ПроксиДО.Пользователь = Пользователь;
        ПроксиДО.Пароль = Пароль;
        
        Возврат ПроксиДО;
    Исключение
        ЗаписьЖурналаРегистрации("Интеграция с 1С:ДО", УровеньЖурналаРегистрации.Ошибка, , , ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
        ВызватьИсключение "Не удалось подключиться к веб-сервису 1С:Документооборот. Подробности в журнале регистрации.";
    КонецПопытки;
КонецФункции

Используя полученный объект ПроксиДО, мы можем вызывать стандартные методы API 1С:Документооборота, такие как создание папок, загрузка двоичных данных файлов, чтение реквизитов документов и получение файлов обратно по их идентификаторам UID.

Этот подход обладает неоспоримыми преимуществами:

---

Решение 3. Точечное внедрение Библиотеки интеграции с 1С:Документооборотом (БИД)

Если разработка собственного велосипеда для работы с SOAP-сервисами кажется вам слишком трудоемкой, обратите внимание на специализированный продукт от компании 1С — БИД (Библиотеку интеграции с 1С:Документооборотом).

БИД — это отдельный программный модуль, который поставляется независимо от БСП. Он предназначен специально для встраивания бесшовной интеграции в любые нетиповые конфигурации. Основные особенности этого пути:

---

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

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

← На главную