Почему не выгружаются договоры при ручном выборе в синхронизации УТ 11 — БП 3 и как это исправить

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

При работе с типовой синхронизацией между 1С:Управление торговлей 11 и 1С:Бухгалтерия предприятия 3.0 пользователи часто сталкиваются с ситуацией, когда ручной выбор объектов (например, конкретных договоров или контрагентов) в мастере выгрузки не приводит к их фактическому появлению в базе-приемнике. Помимо стандартного обмена, существуют и частные задачи, например, перенос остатков товаров. В этой статье мы разберем подробно, почему не выгружаются справочники, как работает механизм регистрации изменений в современных конфигурациях и какие способы решения существуют.

Проблема: «Пустая» выгрузка при наличии выбранных объектов

Рассмотрим стандартную ситуацию: бухгалтеру требуется перенести из УТ 11 в БП 3 только несколько новых договоров. Пользователь заходит в настройки синхронизации данных, нажимает «Добавить к выгрузке», выбирает нужные элементы справочника ДоговорыКонтрагентов, запускает обмен, и... ничего не происходит. В журнале регистрации ошибок нет, пакет данных сформирован, но в БП 3 новые объекты не появились.

Выясним причину такого поведения. В современных обменах, построенных на технологии Enterprise Data (использование КД 3), процесс выгрузки управляется не только желанием пользователя, но и строгими Правилами регистрации объектов (ПРО). Эти правила определяют, имеет ли объект «право» на выгрузку в текущем состоянии.

Разбор механизма работы правил регистрации (ПРО)

Проанализируем логику системы. Большинство типовых правил регистрации для справочников настроены в режиме «Выгружать по ссылке». Это означает, что справочник (например, договор или партнер) будет выгружен только в том случае, если на него ссылается какой-либо документ, который также подлежит выгрузке (например, РеализацияТоваровУслуг).

Когда мы вручную выбираем договор в окне синхронизации, мы принудительно регистрируем его к обмену. Однако в момент формирования XML-пакета срабатывает программный фильтр. Система «видит», что договор зарегистрирован, но проверяет его по правилам ПРО. Если в правилах указано, что договоры без связанных документов не выгружаются, система просто исключает его из состава отправляемых данных, чтобы не засорять базу-приемник «пустыми» справочниками без движений.

Способ 1. Принудительная регистрация через «Состав отправляемых данных»

Рассмотрим самый быстрый способ «протолкнуть» объект, если это разовое действие. Вместо использования мастера добавления в самой синхронизации, воспользуемся обработкой регистрации изменений.

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

Важный нюанс: если объект все равно не улетает, значит, ПРО блокируют его даже при наличии регистрации. В этом случае поможет изменение общей логики обмена в настройках.

Способ 2. Изменение режима выгрузки справочников

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

Разберем по шагам:

  1. Откроем Параметры синхронизации данных — Настроить правила отправки данных.
  2. Обратим внимание на переключатель Справочники. Обычно там установлено значение «Отправлять только используемые в документах».
  3. Если нам нужно выгружать справочники отдельно, нам придется временно или постоянно переключить этот режим в положение «Отправлять все».

Внимание: Установка режима «Отправлять все» приведет к тому, что обмен может переполниться данными, и при любом изменении любого договора в УТ 11 он будет пытаться уйти в БП 3. Чтобы ограничить этот поток, обязательно используйте Отборы в этой же форме настроек. Например, установите отбор по конкретной организации или по группе контрагентов.

Способ 3. Синхронизация через универсальную обработку

Проанализируем ситуацию, когда типовой обмен слишком сложен для простой задачи переноса десяти договоров. Если структура баз позволяет (одинаковые релизы или совместимые метаданные), можно использовать обработку ВыгрузкаЗагрузкаДанныхXML.epf.

Этот метод работает в обход правил регистрации и КД 3:

  1. Открываем обработку в базе УТ 11.
  2. Выбираем справочник ДоговорыКонтрагентов.
  3. Устанавливаем отбор по нужным элементам.
  4. Выгружаем в файл.
  5. В базе БП 3 открываем ту же обработку на вкладке Загрузка и выбираем файл.

Технические нюансы: Владелец и Группы финансового учета

Рассмотрим еще одну причину, по которой договор может «не доехать». Договор в 1С всегда имеет владельца — справочник Контрагенты (или Партнеры в УТ 11). Если вы регистрируете договор, но не зарегистрировали самого контрагента, и этого контрагента еще нет в БП 3, загрузка может завершиться с ошибкой.

Также посмотрим на реквизиты. В БП 3 для записи договора часто требуются заполненные счета учета или Группа финансового учета (ГФУ). Если в УТ 11 эти данные не заполнены, то при загрузке в БП 3 сработает отказ в методе ПередЗаписью. Проверить это можно в базе-приемнике через Журнал регистрации, отфильтровав события по ошибкам или предупреждениям.

Резюме для разработчика

Чтобы успешно выгружать произвольные справочники в типовом обмене, необходимо помнить:

Посмотрим на пример запуска обмена через код, который может использоваться в расширении для снятия подобных ограничений (в модуле МенеджерОбменаЧерезУниверсальныйФормат), если вы решите править логику программно:


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

Таким образом, мы выяснили, что наиболее эффективным решением без программирования является сочетание режима «Отправлять все» с жестко заданными Отборами в настройках синхронизации данных.

← На главную