Как исключить передачу лишних организаций при обмене между 1С:УНФ и 1С:БП?

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

При настройке синхронизации данных между конфигурациями 1С:Управление нашей фирмой (УНФ) и 1С:Бухгалтерия предприятия (БП) через «Универсальный формат» (EnterpriseData) специалисты часто сталкиваются с неприятной ситуацией. Несмотря на установленные фильтры «Выгружать только по выбранным организациям» и «Выгружать НСИ, используемую в документах», система все равно регистрирует и пытается отправить в целевую базу справочные данные по организациям, которые не должны участвовать в обмене. В этой статье мы подробно разберем, почему так происходит, и как очистить «лишнюю» регистрацию.

Анализируем механизмы регистрации данных

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

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


ВЫБРАТЬ РАЗЛИЧНЫЕ
    ШапкаПланаОбмена.Ссылка КАК Узел
ИЗ
    ПланОбмена.СинхронизацияДанныхЧерезУниверсальныйФормат КАК ШапкаПланаОбмена
ЛЕВОЕ СОЕДИНЕНИЕ
    РегистрСведений.ДанныеОбъектовДляРегистрацииВОбменах КАК ДанныеОбъектовДляРегистрацииВОбменах
ПО
    ШапкаПланаОбмена.Ссылка = ДанныеОбъектовДляРегистрацииВОбменах.УзелИнформационнойБазы
    И ДанныеОбъектовДляРегистрацииВОбменах.Ссылка = &Объект
ГДЕ
         НЕ ШапкаПланаОбмена.ЭтотУзел
    И    ШапкаПланаОбмена.РежимВыгрузкиСправочников = ЗНАЧЕНИЕ(Перечисление.РежимыВыгрузкиОбъектовОбмена.ВыгружатьПриНеобходимости)
    И НЕ ШапкаПланаОбмена.ПометкаУдаления
    И    ДанныеОбъектовДляРегистрацииВОбменах.Ссылка = &Объект

Этот запрос наглядно показывает, что система ориентируется на содержимое регистра ДанныеОбъектовДляРегистрацииВОбменах. Если запись об организации попала в этот регистр, она будет зарегистрирована на узле обмена, даже если она не проходит по основным фильтрам документов.

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

Выясним причину появления «лишних» записей в этом регистре. Рассмотрим основные факторы:

  1. Проблема «первого прохода»: При создании новой синхронизации система запускает фоновый процесс анализа данных. На этом этапе 1С пытается определить связи между всеми объектами. Если в какой-то момент (даже в старых закрытых периодах) организация «Бета» была связана с объектом, который разрешен к выгрузке, она попадет в этот регистр «на всякий случай» для обеспечения целостности.
  2. Скрытые ссылки в настройках: Проверим справочник Сотрудники и настройки пользователей. Если у пользователя или сотрудника в качестве основной организации указана та, которую мы хотим исключить, она может подтянуться по ссылке при выгрузке данных о физических лицах.
  3. Связанная НСИ: В УНФ существует тесная связь между организациями и структурными единицами (складами, подразделениями, кассами). Если в документе по «правильной» организации указан склад, который формально закреплен за «неправильной» организацией, механизм ВыгружатьПриНеобходимости зарегистрирует владельца склада.
  4. Константы и учетная политика: Ссылки на организации могут содержаться в общих настройках учета, которые система считывает при инициализации обмена.

Способ 1: Очистка регистра сведений (Практическое решение)

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

Порядок действий:

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

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

Способ 2: Проверка соответствия объектов

Проанализируем ситуацию, когда организации продолжают появляться снова. Возможно, они уже были когда-то сопоставлены между базами. Рассмотрим регистр сведений СоответствиеОбъектовИнформационныхБаз. Если в нем есть запись, связывающая организацию в УНФ с объектом в БП, система будет считать этот объект «участвующим в обмене» и пытаться актуализировать его при любом изменении.

В этом случае необходимо удалить записи о сопоставлении для ненужных организаций в обеих базах.

Способ 3: Настройка «Правил регистрации объектов» (Для продвинутых)

Если вышеуказанные меры не помогают и записи в регистре ДанныеОбъектовДляРегистрацииВОбменах появляются вновь при записи любого документа, рассмотрим более радикальный метод — редактирование Правил регистрации объектов (ПРО).

Для этого нам понадобится конфигурация «Конвертация данных 2.0» или «3.0» (в зависимости от версии обмена). Мы можем добавить условие в обработчик ПередРегистрациейОбъекта для справочника Организации:


// Пример логики в правилах регистрации
Если Ссылка.Наименование = "Лишняя Организация" Тогда
    Отказ = Истина;
КонецЕсли;

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

Резюме

Мы выяснили, что основная причина избыточного переноса организаций — это работа механизма БСП по анализу связей, результаты которого кэшируются в регистре ДанныеОбъектовДляРегистрацииВОбменах.

Рассмотрим краткий чек-лист для исправления проблемы:

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

← На главную