Как выгружать все договоры при синхронизации, если включена выгрузка только задействованных объектов?

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

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

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

Причина ограничения и механика работы обмена

Проанализируем, почему возникает эта проблема. В Библиотеке Стандартных Подсистем (БСП) флаг «Выгружать только задействованные по ссылкам» сохраняется в параметрах узла плана обмена. Когда параметр активен, механизм регистрации изменений накладывает глобальное ограничение на все ссылочные типы.

Кроме того, при передаче по ссылке в формате EnterpriseData объекты отправляются в урезанном виде — выгружаются только ключевые свойства, необходимые для поиска (например, уникальный идентификатор, наименование, ИНН/КПП). Чтобы передать полную карточку договора со всеми реквизитами, для него должно сработать полноценное Правило обработки данных (ПОД).

Вариант 1. Авторегистрация изменений через подписку на событие

Посмотрим на наиболее гибкий способ решения задачи без снятия конфигурации с поддержки — использование расширения конфигурации и подписки на событие.

Выясним логику работы: при записи или изменении элемента справочника ДоговорыКонтрагентов система должна программно зарегистрировать его на узле обмена, игнорируя пользовательский флаг выгрузки по ссылкам.

  1. Создадим расширение конфигурации.
  2. Добавим подписку на событие ПриЗаписи для справочника ДоговорыКонтрагентов.
  3. В модуле обработчика подписки вызовем штатный метод регистрации БСП:

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

КонецПроцедуры

Этот подход гарантирует, что каждый новый или отредактированный договор попадет в очередной пакет выгрузки вне зависимости от настроек выгрузки по ссылкам.

Вариант 2. Настройка Правил регистрации объектов (ПРО)

Рассмотрим вариант доработки правил обмена без изменения программного кода конфигурации. Правила регистрации объектов (ПРО) управляют тем, какие элементы попадают в службу регистрации изменений при их сохранении.

  1. Выгрузим типовые правила регистрации объектов из настройки синхронизации в файл XML.
  2. Откроем правила в конфигураторе или специализированной обработке.
  3. В обработчике Перед обработкой для справочника ДоговорыКонтрагентов переопределим проверку параметров узла.
  4. Напишем условие, которое игнорирует параметр ВыгружатьДанныеПоСсылкам для данного справочника, чтобы алгоритм всегда возвращал необходимость регистрации.
  5. Загрузим обновленные правила обратно в настройки обмена.

Вариант 3. Проверка и настройка ПОД в КД 3.0

Разберем важный нюанс КД 3.0 (модуля менеджера обмена). Чтобы зарегистрированный договор выгружался как самостоятельный объект с полным набором реквизитов, для него должно быть правильно настроено Правило обработки данных (ПОД).

В правилах конвертации убедимся, что:

  1. Для справочника ДоговорыКонтрагентов присутствует и активен отдельный ПОД, а не только правило конвертации объектов (ПКО).
  2. В настройках ПОД на вкладке Выборка данных не установлены жесткие фильтры, блокирующие самостоятельную выгрузку элемента.

Вариант 4. Интерактивная выгрузка через состав отправляемых данных

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

  1. Перейдем в раздел Администрирование — Синхронизация данных.
  2. Откроем настройки обмена и выберем пункт Состав отправляемых данных.
  3. Найдем в списке справочник Договоры контрагентов.
  4. Нажмем команду Зарегистрировать изменения всех объектов выбранных типов.
  5. Запустим процесс синхронизации. Все элементы справочника выгрузятся в приемник в очередном сеансе обмена.

Особенности и риски при реализации

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

  1. Рост объема пакетов обмена: В файл выгрузки будут попадать устаревшие или неиспользуемые договоры, что увеличит время формирования и обработки XML/JSON файлов.
  2. Коллизии при двухстороннем обмене: Если договоры редактируются в обеих базах, регулярная принудительная выгрузка из источника может перезаписывать изменения, внесенные в базе-приемнике. Необходимо заранее настроить правила разрешения коллизий на узле обмена.
← На главную