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