При настройке типовой синхронизации данных между конфигурациями 1С (например, из 1С:Комплексная автоматизация 2.2 в 1С:Бухгалтерия 3.0 на базе КД 3.0 и формата EnterpriseData) часто возникает задача разграничить режим выгрузки для разных типов данных. Пользователи сталкиваются с ограничением: типовой интерфейс БСП предлагает выбор либо выгружать все данные, либо только те объекты, которые задействованы в документах по ссылкам.
Разберем, как обойти это ограничение и настроить процесс так, чтобы элементы справочника Договоры контрагентов выгружались полностью при создании или изменении, а остальные справочники передавались только при их фактическом использовании в документах.
Проанализируем, почему возникает эта проблема. В Библиотеке Стандартных Подсистем (БСП) флаг «Выгружать только задействованные по ссылкам» сохраняется в параметрах узла плана обмена. Когда параметр активен, механизм регистрации изменений накладывает глобальное ограничение на все ссылочные типы.
Кроме того, при передаче по ссылке в формате EnterpriseData объекты отправляются в урезанном виде — выгружаются только ключевые свойства, необходимые для поиска (например, уникальный идентификатор, наименование, ИНН/КПП). Чтобы передать полную карточку договора со всеми реквизитами, для него должно сработать полноценное Правило обработки данных (ПОД).
Посмотрим на наиболее гибкий способ решения задачи без снятия конфигурации с поддержки — использование расширения конфигурации и подписки на событие.
Выясним логику работы: при записи или изменении элемента справочника ДоговорыКонтрагентов система должна программно зарегистрировать его на узле обмена, игнорируя пользовательский флаг выгрузки по ссылкам.
ПриЗаписи для справочника ДоговорыКонтрагентов.
Процедура Расш1_ПриЗаписиДоговораПриЗаписи(Источник, Отказ) Экспорт
Если Источник.ОбменДанными.Загрузка Тогда
Возврат;
КонецЕсли;
// Получаем узел обмена с целевой базой
УзелОбмена = ПланыОбмена.СинхронизацияДанныхЧерезУниверсальныйФормат.НайтиПоРеквизиту("Код", "БП");
Если ЗначениеЗаполнено(УзелОбмена) Тогда
ОбменДаннымиСервер.ЗарегистрироватьИзменения(УзелОбмена, Источник.Ссылка);
КонецЕсли;
КонецПроцедуры
Этот подход гарантирует, что каждый новый или отредактированный договор попадет в очередной пакет выгрузки вне зависимости от настроек выгрузки по ссылкам.
Рассмотрим вариант доработки правил обмена без изменения программного кода конфигурации. Правила регистрации объектов (ПРО) управляют тем, какие элементы попадают в службу регистрации изменений при их сохранении.
Перед обработкой для справочника ДоговорыКонтрагентов переопределим проверку параметров узла.ВыгружатьДанныеПоСсылкам для данного справочника, чтобы алгоритм всегда возвращал необходимость регистрации.Разберем важный нюанс КД 3.0 (модуля менеджера обмена). Чтобы зарегистрированный договор выгружался как самостоятельный объект с полным набором реквизитов, для него должно быть правильно настроено Правило обработки данных (ПОД).
В правилах конвертации убедимся, что:
ДоговорыКонтрагентов присутствует и активен отдельный ПОД, а не только правило конвертации объектов (ПКО).Если требуется разово передать накопленный справочник договоров без постоянной авторегистрации всех изменений, воспользуемся встроенным инструментарием БСП.
Договоры контрагентов.Проанализируем возможные последствия принудительной выгрузки всех элементов справочника: