При разработке собственных решений на платформе «1С:Предприятие 8.3» часто возникает необходимость задействовать готовые механизмы синхронизации и обмена данными из Библиотеки стандартных подсистем (БСП). Однако при попытке перенести подсистему «Обмен данными» через стандартное сравнение и объединение конфигураций разработчики сталкиваются с тем, что за выбранным блоком тянется значительная часть метаданных библиотеки. В этом материале мы подробно разберем, почему так происходит, какие подсистемы являются обязательными и как правильно выполнить выборочное внедрение БСП в нетиповую конфигурацию.
Подсистема «Обмен данными» в БСП не является изолированной. Для своей полноценной работы она использует инфраструктуру и сервисы других модулей библиотеки:
БазоваяФункциональность, ОбновлениеВерсииИБ и Пользователи. Без них работа большинства механизмов БСП невозможна в принципе.Префиксация объектов (для генерации кодов и номеров), Файловые функции (для передачи пакетов обмена через сетевые каталоги, FTP или e-mail), Завершение работы пользователей и Удаление отмеченных объектов.Поэтому попытка перенести «только обмен» неизбежно задействует множество общих модулей, справочников и регистров сведений. Однако мы можем минимизировать число загружаемых объектов, правильно настроив связи между подсистемами.
В комплекте поставки БСП присутствуют специальная обработка ПервоеВнедрениеБСП.epf и конфигурация-демонстрация. Эта обработка позволяет наглядно увидеть дерево зависимостей подсистем и сформировать правильный файл настроек для сравнения и объединения.
Рассмотрим алгоритм работы с обработкой:
ПервоеВнедрениеБСП.epf в информационной базе БСП.Проанализируем базовый алгоритм частичного внедрения БСП в чистую или существующую нетиповую конфигурацию:
1Cv8.cf из поставки БСП.БазоваяФункциональность, ОбновлениеВерсииИБ, Пользователи) и нажмем Установить.После завершения объединения метаданных необходимо корректно прописать регистрацию новой конфигурации в служебных процедурах БСП.
МояКонфигурация) и версию (например, 1.0.0.1).ОбновлениеИнформационнойБазы и переименуем его, добавив префикс нашей программы — например, ОбновлениеИнформационнойБазыМК.
Процедура ПриДобавленииПодсистемы(Описание) Экспорт
Описание.Имя = "МояКонфигурация";
Описание.Версия = "1.0.0.1";
// Требуется библиотека стандартных подсистем
Описание.ТребуемыеПодсистемы.Добавить("СтандартныеПодсистемы");
КонецПроцедуры
Процедура ПриДобавленииОбработчиковОбновления(Обработчики) Экспорт
КонецПроцедуры
Процедура ПередОбновлениемИнформационнойБазы() Экспорт
КонецПроцедуры
Процедура ПослеОбновленияИнформационнойБазы(Знач ПредыдущаяВерсия, Знач ТекущаяВерсия, Знач ВыполненныеОбработчики, ВыводитьОписаниеОбновлений, МонопольныйРежим) Экспорт
КонецПроцедуры
Процедура ПриПодготовкеМакетаОписанияОбновлений(Знач Макет) Экспорт
КонецПроцедуры
Процедура ПриДобавленииОбработчиковПереходаСДругойПрограммы(Обработчики) Экспорт
КонецПроцедуры
Процедура ПриОпределенииРежимаОбновленияДанных(РежимОбновленияДанных, СтандартнаяОбработка) Экспорт
КонецПроцедуры
Процедура ПриЗавершенииПереходаСДругойПрограммы(Знач ПредыдущееИмяКонфигурации, Знач ПредыдущаяВерсияКонфигурации, Параметры) Экспорт
КонецПроцедуры
4. Включим возможность изменения для общего модуля ПодсистемыКонфигурацииПереопределяемый и добавьте в процедуру ПриДобавленииПодсистем вызов нашего нового модуля:
Процедура ПриДобавленииПодсистем(МодулиПодсистем) Экспорт
МодулиПодсистем.Добавить("ОбновлениеИнформационнойБазыМК");
КонецПроцедуры
После первого запуска конфигурации в режиме «1С:Предприятие» необходимо выполнить технические процедуры для старта работы механизмов обмена:
Справочники.ИдентификаторыОбъектовМетаданных.ОбновитьДанныеСправочника().ОбменДаннымиПереопределяемый в функции ПолучитьПланыОбмена().ПередЗаписью и ПередУдалением для нужных объектов, вызывающие стандартные обработчики БСП.Если задача заключается исключительно в передачи данных между системами и нет жесткого требования использовать интерфейсы БСП, проанализируем более легкие альтернативы: