При работе со старыми или сильно кастомизированными конфигурациями на платформе 1С:Предприятие 8.2 часто возникает необходимость настроить обмен данными с современными типовыми решениями. Новые конфигурации используют современные стандарты обмена и актуальные версии Библиотеки стандартных подсистем (БСП). Попытка интегрировать современную БСП (например, версии 2.4 или выше) в конфигурацию, работающую в режиме совместимости «8.2.13» и использующую обычные формы, вызывает множество технических трудностей: от несовместимости интерфейсов до жестких требований к модальности и режиму совместимости платформы.
В этой статье мы подробно проанализируем эту проблему, рассмотрим риски и разберем три основные стратегии интеграции обмена данными в устаревшую конфигурацию.
Это наиболее технологичный, но и самый трудоемкий путь. Он позволяет использовать возможности современной БСП 2.4, но требует подготовки старой конфигурации к работе в новых реалиях платформы 8.3. Разберем этот процесс по шагам.
Режим совместимости на «Не использовать».Вопрос(), Предупреждение() или ОткрытьФормуМодально()) в старой самописной конфигурации — задача колоссальная. Платформа 8.3 позволяет обойти это ограничение: в свойствах конфигурации установите параметр Режим использования модальности в значение «Использовать». Код БСП спроектирован асинхронно и не вызовет конфликтов, а ваш старый код на обычных формах продолжит стабильно работать с модальными окнами.Использовать обычные формы в управляемом приложении. Установите основной режим запуска «Управляемое приложение». Обычные формы продолжат открываться внутри управляемого интерфейса./RunModeManagedApplication. Администратор настроит обмен в управляемом интерфейсе БСП, а сам обмен будет выполняться в фоновом режиме на сервере или в сессии обычного приложения.
Блокировка = Новый БлокировкаДанных;
ЭлементБлокировки = Блокировка.Добавить("РегистрНакопления.ТоварыНаСкладах");
ЭлементБлокировки.УстановитьЗначение("Склад", СкладСсылка);
ЭлементБлокировки.Режим = РежимБлокировкиДанных.Исключительный;
Блокировка.Заблокировать();
Если вы не готовы переводить конфигурацию на платформу 8.3 и снимать режим совместимости из-за рисков повредить стабильно работающий функционал, рассмотрите альтернативу. Необязательно внедрять БСП 2.4 в старую базу ради интеграции с новой конфигурацией.
Выгрузка и загрузка данных по правилам Конвертации данных 2.1 (КД 2.0) полностью стандартизирована на уровне XML-структуры. Это означает, что база-источник на платформе 8.2 с внедренной старой версией БСП (например, 1.2 или 2.1) может успешно обмениваться данными с базой-приемником на БСП 2.4 или 3.x.
Рассмотрим порядок действий для реализации этого сценария:
Внедрение любой версии БСП в старую нетиповую базу неизбежно повлечет за собой перенос множества «тяжелых» сопутствующих подсистем, таких как ИдентификаторыОбъектовМетаданных, Пользователи, ОбновлениеВерсииИБ. Это сильно раздует структуру конфигурации и потребует ручной адаптации кода, особенно если у вас вместо справочника Пользователи используется справочник Сотрудники.
Если цель — просто передавать данные, лучшим решением будет отказаться от интеграции БСП в старую базу и настроить «классический» обмен:
Универсальный обмен данными в формате XML (файл v8Exchan.epf).
Процедура ПриНачалеРаботыСистемы()
ПараметрыЗапуска = ПараметрыСеанса.ПолучитьПараметрыЗапуска();
Если ПараметрыЗапуска = "ВыполнитьОбменДанными" Тогда
// Подключение внешней обработки v8Exchan.epf
// Передача параметров: файл правил, файл данных, узел обмена
// Выполнение выгрузки/загрузки
ЗавершитьРаботуСистемы(Ложь);
КонецЕсли;
КонецПроцедуры
Этот скрипт можно запускать по расписанию через Планировщик задач Windows (Task Scheduler) на сервере. Такой подход гарантирует, что программный код вашей старой базы вообще не пострадает, а обмен будет выполняться стабильно и независимо.
Если вы всё же решились на интеграцию подсистемы «Обмен данными» из БСП, будьте готовы к тому, что вам придется внедрить несколько связанных подсистем, без которых обмен функционировать не будет:
Пользователи, вам придется либо создать его в качестве пустой структуры («заглушки») для удовлетворения требований компилятора БСП, либо глубоко переписывать общие модули ОбменДаннымиСервер и ОбменДаннымиПереопределяемый, что крайне не рекомендуется.Современные конфигурации 1С активно продвигают обмен через универсальный формат EnterpriseData (КД 3.0). Однако для старой нетиповой конфигурации на платформе 8.2 этот путь практически нереализуем по следующим причинам:
Резюме: Если архитектура вашей старой базы позволяет безболезненно снять режим совместимости и перевести конфигурацию на управляемые блокировки платформы 8.3 — внедряйте БСП 2.4 (Стратегия 1). Если риски высоки, а конфигурация должна оставаться на 8.2 — внедряйте старую версию БСП (Стратегия 2) или настраивайте обмен через стандартную обработку v8Exchan.epf по расписанию (Стратегия 3), что убережет вашу систему от лишних ошибок компиляции и сбоев в работе пользователей.