При настройке обмена между конфигурациями «Зарплата и управление персоналом 3.1» (ЗУП) и «Бухгалтерия предприятия 3.0» (БП) один из самых острых вопросов — это сохранность данных в принимающей базе. Часто возникает ситуация, когда в обеих базах уже накоплены сведения (например, об организациях, контрагентах или физических лицах), и при первом обмене велик риск получить дубли или, что еще опаснее, некорректное обновление реквизитов. Разберем детально, как работает этот механизм, в каком порядке система ищет объекты и как предотвратить нежелательное перезатирание информации.
В современных типовых решениях 1С, работающих на платформе 8.3, используется формат обмена Enterprise Data. В отличие от старых правил обмена (КД 2.0), здесь логика поиска объектов жестко зашита в механизмы платформы и программный код конфигурации. Проанализируем иерархию поиска, которая применяется при получении данных:
Организации это обычно ИНН + КПП, для Контрагентов — ИНН + КПП (или только ИНН для физлиц), для Физических лиц — СНИЛС или сочетание ФИО + Дата рождения.Рассмотрим классическую ситуацию: в ЗУП организация называется «Ромашка», а в БП та же самая организация по каким-то причинам заведена как «Василек» (но ИНН совпадает). Вы запускаете первичную синхронизацию.
Выясним, что произойдет при ручном сопоставлении. Если вы откроете окно сопоставления и свяжете эти две записи, то данные в базе-приемнике будут обновлены данными из базы-источника. После завершения синхронизации в «Бухгалтерии предприятия» организация «Василек» будет переименована в «Ромашку». Более того, перезапишутся и другие реквизиты: юридический адрес, телефон, коды статистики и расчетные счета, если они заполнены в ЗУП и передаются в пакете данных.
Важный вывод: при синхронизации ЗУП -> БП «главной» базой считается ЗУП. Все справочные данные, которые приходят из зарплатной базы, имеют приоритет. Если в ЗУП данные заполнены небрежно, они испортят качественные данные в БП.
Часто требуется, чтобы данные мигрировали только в одну сторону (из ЗУП в БП), а из БП в ЗУП ничего не улетало. Рассмотрим, как это реализовать технически. Одним из способов является использование Правил регистрации объектов. Программисты часто используют обработчик ПередОбработкой для запрета регистрации изменений.
Посмотрим на пример кода, который можно разместить в правилах регистрации для объектов в БП, чтобы они не попадали в план обмена для выгрузки в ЗУП:
// В правилах регистрации для конкретного объекта
// или в общем обработчике для всех объектов
Отказ = Истина;
Однако стоит помнить, что даже если вы запретили выгрузку через Отказ = Истина, система все равно будет обмениваться служебными сообщениями и квитанциями (подтверждениями получения пакетов). Чтобы полностью исключить влияние БП на справочники в ЗУП, проанализируем следующие шаги:
Проанализируем наиболее критичный момент обмена. В ЗУП 3.1 основная работа ведется в справочнике Сотрудники, но в БП 3.0 вся аналитика на счетах учета зарплаты (70, 68, 69) строится в разрезе справочника Физические лица.
При первой синхронизации крайне важно, чтобы физические лица сопоставились корректно (лучше всего по СНИЛС). Если у физлица в БП не заполнен СНИЛС, а в ЗУП заполнен, система может не найти соответствие по полям поиска и создать дубль. В результате:
Чтобы избежать хаоса в данных, рекомендуем придерживаться следующего алгоритма:
Несопоставленные объекты. Если вы видите, что одна и та же организация или сотрудник разделились на две строки, сопоставьте их вручную.Таким образом, первичная синхронизация — это процесс, требующий максимального внимания к деталям. Помните, что регистр сопоставления имеет абсолютный приоритет, а данные источника при совпадении или ручном выборе всегда замещают реквизиты приемника.