Совместная работа БП 3.0 и ЗУП 3.1. Устранение ошибки синхронизации персональных данных физических лиц (часть 2)
1. Про ошибки
1.1 Первоначальное состояние
Зарплата считалась в ЗУП 2.5, данные о физических лицах (в том числе, об их документах) заполнялись в ней. В БП 3.0 данные о физических лицах передавались по ссылке, с документами обмена (через обработку выгрузки данных в бухгалтерскую программу). В процессе перехода на ЗУП 3.1 данные были перенесены в данную конфигурацию, после чего встала задача настройки синхронизации между базами через план обмена.
Используемые при настройке версии конфигураций:
• БП 3.0.58.20
• ЗУП 3.1.5.129
1.2 При использовании встроенных правил обмена
Было замечено, что при редактировании информации о физическом лице, либо при добавлении нового физического лица в любой из конфигураций, данные изменения не отражаются в базе-корреспонденте. Как выяснилось, во встроенных правилах регистрации объектов, для справочника Физические лица установлен режим выгрузки РежимВыгрузкиПриНеобходимости, который позволяет выгружать данные о физическом лице только по ссылке. Нас такая ситуация совершенно не устраивает, ставилась задача полной синхронности данных о физических лицах в обоих базах.
Кроме этого, была замечена странность, приводящая к ошибке: если изменить информацию о физическом лице, хранящуюся в регистрах сведений, то эти изменения регистрируются к обмену.
К примеру, если изменить данные документа Паспорт гражданина РФ у какого-либо физического лица, то после синхронизации в базе-приёмнике у данного физического лица пропадает запись о документе Паспорт гражданина РФ. Это происходит в том случае, когда нет соответствия объектов (отсутствует запись в регистре сведений Соответствие объектов информационных баз, относящаяся к данному физическому лицу).
Вторая странность: если соответствие объектов установлено (оно устанавливается автоматически, при выгрузке объекта по ссылке), то любые изменения данных таких физических лиц начинают регистрироваться к обмену, как в случае режима РежимВыгрузкиПерсональныеДанные.
2. Источник.Ссылка
Если изменить в правилах выгрузки для физического лица режим на РежимВыгрузкиПерсональныеДанные, то любые изменения информации о физических лицах регистрируются к обмену. Однако, в этом случае записи регистров сведений, связанных с физическими лицами, начали исчезать в совершенно различных ситуациях. Анализ правил обмена выявил следующее:
При выгрузке записи справочника Физические лица, соответствующее ПКО (правило конвертации объекта) содержит обработчик события После выгрузки в файл следующего содержания:
Выполнить(Алгоритмы.ВыгрузитьСведенияФизическогоЛица);
Смысл данного алгоритма в том, чтобы сразу за выгрузкой XML узла записи о физическом лице выгрузить все записи регистров сведений ФИОФизическихЛиц, ГражданствоФизическихЛиц, ДокументыФизическихЛиц, связанных с выгружаемой записью о физическом лице.
Проанализировав состав отправленного сообщения, мы обнаружили, что сразу после объекта Физическое лицо созданы три набора записей регистра, однако, они не содержат, собственно, строк набора записей. Это говорит о том, что отборы записей в алгоритме ВыгрузитьСведенияФизическогоЛица возвращают пустой набор. Это приводит к тому, что в корреспондирующей базе записи вышеперечисленных регистров сведений, связанных с данным физическим лицом, замещается пустыми наборами, или проще говоря, удаляются. После замены в алгоритме Источник на Источник.Ссылка записи регистров начали выгружаться корректно.
Примеры сообщений при выгрузке здесь.
как вспомню столько мудохался с правилами выгрузки из зуп3 в бп2 так дрожь берет
типовых то нет. пришлось с нуля рисовать
Схожая особенность есть во многих правилах обмена. Например, в РБД БП 3 пропадают адреса организаций, хоть это ТЧ, а не РС.