Как внедрить подсистему «Обмен данными» из БСП в старую конфигурацию на 1С 8.2 с обычными формами?

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

При работе со старыми или сильно кастомизированными конфигурациями на платформе 1С:Предприятие 8.2 часто возникает необходимость настроить обмен данными с современными типовыми решениями. Новые конфигурации используют современные стандарты обмена и актуальные версии Библиотеки стандартных подсистем (БСП). Попытка интегрировать современную БСП (например, версии 2.4 или выше) в конфигурацию, работающую в режиме совместимости «8.2.13» и использующую обычные формы, вызывает множество технических трудностей: от несовместимости интерфейсов до жестких требований к модальности и режиму совместимости платформы.

В этой статье мы подробно проанализируем эту проблему, рассмотрим риски и разберем три основные стратегии интеграции обмена данными в устаревшую конфигурацию.

Стратегия 1: Перевод базы на платформу 8.3 со снятием режима совместимости

Это наиболее технологичный, но и самый трудоемкий путь. Он позволяет использовать возможности современной БСП 2.4, но требует подготовки старой конфигурации к работе в новых реалиях платформы 8.3. Разберем этот процесс по шагам.

  1. Перенос базы на платформу 8.3 и снятие совместимости. Установите актуальную версию платформы 1С:Предприятие 8.3. В свойствах конфигурации измените значение свойства Режим совместимости на «Не использовать».
  2. Настройка режима модальности. БСП 2.4 по умолчанию разрабатывается с учетом отказа от модальных окон. Однако переписывать сотни модальных вызовов (таких как Вопрос(), Предупреждение() или ОткрытьФормуМодально()) в старой самописной конфигурации — задача колоссальная. Платформа 8.3 позволяет обойти это ограничение: в свойствах конфигурации установите параметр Режим использования модальности в значение «Использовать». Код БСП спроектирован асинхронно и не вызовет конфликтов, а ваш старый код на обычных формах продолжит стабильно работать с модальными окнами.
  3. Решение проблемы интерфейса (Обычные vs Управляемые формы). БСП целиком написана на управляемых формах. Если ваша база работает в режиме «Толстый клиент (обычное приложение)», вы не сможете открыть стандартные обработки настроек обмена БСП. Для обхода этой проблемы примените один из двух подходов:
    • Гибридный режим запуска: Включите в свойствах конфигурации свойство Использовать обычные формы в управляемом приложении. Установите основной режим запуска «Управляемое приложение». Обычные формы продолжат открываться внутри управляемого интерфейса.
    • Разделение прав и ярлыков запуска: Оставьте для обычных пользователей режим запуска «Обычное приложение». Для администратора, настраивающего обмен, создайте ярлык запуска с параметром /RunModeManagedApplication. Администратор настроит обмен в управляемом интерфейсе БСП, а сам обмен будет выполняться в фоновом режиме на сервере или в сессии обычного приложения.
  4. Контроль управляемых блокировок (Критически важно!). При снятии режима совместимости конфигурация перейдет на управляемый режим блокировок. Если в вашей старой конфигурации проведение документов было настроено в автоматическом режиме, в многопользовательской среде начнутся массовые взаимоблокировки (deadlocks). Вам потребуется переписать транзакционную логику проведения документов или точечно управлять блокировками в коде:

Блокировка = Новый БлокировкаДанных;
ЭлементБлокировки = Блокировка.Добавить("РегистрНакопления.ТоварыНаСкладах");
ЭлементБлокировки.УстановитьЗначение("Склад", СкладСсылка);
ЭлементБлокировки.Режим = РежимБлокировкиДанных.Исключительный;
Блокировка.Заблокировать();

Стратегия 2: Внедрение исторической версии БСП, совместимой с 8.2

Если вы не готовы переводить конфигурацию на платформу 8.3 и снимать режим совместимости из-за рисков повредить стабильно работающий функционал, рассмотрите альтернативу. Необязательно внедрять БСП 2.4 в старую базу ради интеграции с новой конфигурацией.

Выгрузка и загрузка данных по правилам Конвертации данных 2.1 (КД 2.0) полностью стандартизирована на уровне XML-структуры. Это означает, что база-источник на платформе 8.2 с внедренной старой версией БСП (например, 1.2 или 2.1) может успешно обмениваться данными с базой-приемником на БСП 2.4 или 3.x.

Рассмотрим порядок действий для реализации этого сценария:

  1. Скачайте дистрибутив БСП версии 2.1 или 1.2, которые официально поддерживают работу на платформе 8.2 в режиме совместимости и содержат обычные формы для настройки.
  2. Протестируйте интеграцию на демо-базе БСП выбранной версии.
  3. Внедрите подсистему «Обмен данными» устаревшей версии БСП в вашу самописную конфигурацию. Так как структуры метаданных и форматы XML-файлов обмена КД 2.0 совместимы между версиями БСП, вы сможете настроить бесшовный обмен с современной конфигурацией.
  4. Разработайте правила обмена в конфигурации «Конвертация данных 2.1».

Стратегия 3: Реализация обмена по КД 2.0 без внедрения БСП

Внедрение любой версии БСП в старую нетиповую базу неизбежно повлечет за собой перенос множества «тяжелых» сопутствующих подсистем, таких как ИдентификаторыОбъектовМетаданных, Пользователи, ОбновлениеВерсииИБ. Это сильно раздует структуру конфигурации и потребует ручной адаптации кода, особенно если у вас вместо справочника Пользователи используется справочник Сотрудники.

Если цель — просто передавать данные, лучшим решением будет отказаться от интеграции БСП в старую базу и настроить «классический» обмен:

  1. Создание плана обмена. В конфигураторе 8.2 создайте простой план обмена (без использования механизмов БСП). Включите в его состав справочники и документы, которые должны участвовать в миграции.
  2. Использование внешней обработки. Для осуществления импорта/экспорта используйте стандартную и надежную обработку Универсальный обмен данными в формате XML (файл v8Exchan.epf).
  3. Автоматизация процесса. Напишите скрипт автоматического запуска сессии 1С под специальным пользователем и настройте вызов обработки в модуле приложения при начале работы системы:

Процедура ПриНачалеРаботыСистемы()
    ПараметрыЗапуска = ПараметрыСеанса.ПолучитьПараметрыЗапуска();
    Если ПараметрыЗапуска = "ВыполнитьОбменДанными" Тогда
        // Подключение внешней обработки v8Exchan.epf
        // Передача параметров: файл правил, файл данных, узел обмена
        // Выполнение выгрузки/загрузки
        ЗавершитьРаботуСистемы(Ложь);
    КонецЕсли;
КонецПроцедуры

Этот скрипт можно запускать по расписанию через Планировщик задач Windows (Task Scheduler) на сервере. Такой подход гарантирует, что программный код вашей старой базы вообще не пострадает, а обмен будет выполняться стабильно и независимо.

Скрытые зависимости подсистемы «Обмен данными»

Если вы всё же решились на интеграцию подсистемы «Обмен данными» из БСП, будьте готовы к тому, что вам придется внедрить несколько связанных подсистем, без которых обмен функционировать не будет:

Выбор формата обмена: КД 2.0 или КД 3.0 (EnterpriseData)

Современные конфигурации 1С активно продвигают обмен через универсальный формат EnterpriseData (КД 3.0). Однако для старой нетиповой конфигурации на платформе 8.2 этот путь практически нереализуем по следующим причинам:

Резюме: Если архитектура вашей старой базы позволяет безболезненно снять режим совместимости и перевести конфигурацию на управляемые блокировки платформы 8.3 — внедряйте БСП 2.4 (Стратегия 1). Если риски высоки, а конфигурация должна оставаться на 8.2 — внедряйте старую версию БСП (Стратегия 2) или настраивайте обмен через стандартную обработку v8Exchan.epf по расписанию (Стратегия 3), что убережет вашу систему от лишних ошибок компиляции и сбоев в работе пользователей.

← На главную