При совместной работе конфигураций БП 3.0 и ЗУП 3.1 с использованием встроенного плана обмена ОбменЗарплата3Бухгалтерия3
персональные данные физических лиц передаются некорректно. Это связано с ошибкой в правилах обмена (замшелой уже, с учётом того, сколько времени эта ошибка «кочует» из версии в версию правил). Суть ошибки в том, что в алгоритме ВыгрузитьСведенияФизическогоЛица
некорректно указаны условия отбора (аж три раза…). Вместо GUID объекта <Источник.Ссылка>
в процедуру отбора в качестве параметра передаётся абстрактнейшее <Источник>
.
Правила обмена, используемые по умолчанию, встроены в план обмена в виде набора шаблонов. Убедимся, что в исследуемых нами релизах ошибка присутствует:
Для исправления ситуации необходимо выгрузить правила в соответствующие xml файлы (с помощью буфера обмена или через меню Файл/Сохранить как…
), исправить ошибки и загрузить изменённые файлы правил при настройке синхронизации.
Комплект правил плана обмена ОбменЗарплата3Бухгалтерия3
состоит из следующих правил:
Регистрации
Обмена
Обмена корреспондента
В режиме Конфигуратор
правила доступны здесь:
Общие | ||||||||||||||||||||
Планы обмена | ||||||||||||||||||||
ОбменЗарплата3Бухгалтерия3 | ||||||||||||||||||||
Макеты | ||||||||||||||||||||
Таблица соответствия объектов типа Макет
и файлов:
Макет | Файл |
---|---|
ПравилаРегистрации | RegistrationRules.xml |
ПравилаОбмена | ExchangeRules.xml |
ПравилаОбменаКорреспондента | CorrespondentExchangeRules.xml |
В плане обменаОбменЗарплата3Бухгалтерия3
открываем макет ПравилаОбмена
и находим в нём:
<Наименование>ЗУП 3.1.9 --> БП 3.0.68</Наименование>
Значит имя архива: accounting_3.0.68-hrm_3.1.9-rulespersdata
<Наименование>ЗУП 3.1.9 --> БП 3.0.68</Наименование>
Значит имя архива: hrm_3.1.9-accounting_3.0.68-rulespersdata
Для архива с оригиналами используем суффикс _orig
Для подготовки архива создадим папку (например, с именем RulesPersData
), создадим в ней файлы RegistrationRules.xml
, ExchangeRules.xml
, CorrespondentExchangeRules.xml
путём копирования содержимого соответствующих шаблонов. Откорректируем созданные файлы и упакуем их в архив. При настройке синхронизации, данный архив будет использован в качестве источника для загрузки правил обмена.
При настройке синхронизации есть возможность загрузить каждые правила из отдельного xml
файла, либо в виде архива, содержащего эти файлы.
В связи с тем, что необходимо корректировать несколько файлов, логичнее подготовить архив.
Для работы с правилами регистрации и правилами обмена формата 2 существует специальная конфигурация Конвертация данных 2.1. В случае разработки собственных правил или доработки существующих, настоятельно рекомендуется использовать для этого данную конфигурацию. В нашем случае имеет место банальное исправление ошибки, поэтому мы считаем, что корректно будет просто внести изменения любым текстовым редактором, не изменяя при этом Идентификатор
правил.
Правила обмена, встроенные в конфигурацию, время от времени редактируются разработчиками, поэтому при обновлении конфигурации рекомендуется проверять, отличаются ли правила обмена в новом релизе от тех, которые были нами откорректированы. В случае наличия изменений и наличия данной ошибки, рекомендуется загрузить новые правила, предварительно исправив ошибку.
Если же ошибка наконец-то будет исправлена разработчиками, необходимо в настройке синхронизации указать, что будут использоваться встроенные правила обмена.
В файлах:
CorrespondentExchangeRules.xml
ExchangeRules.xml
нужно произвести следующие замены:
найти:
НаборЗаписей.Отбор.ФизическоеЛицо.Установить(Источник);
заменить:
НаборЗаписей.Отбор.ФизическоеЛицо.Установить(Источник.Ссылка);
найти:
НаборЗаписей.Отбор.Физлицо.Установить(Источник);
заменить:
НаборЗаписей.Отбор.Физлицо.Установить(Источник.Ссылка);
В файле RegistrationRules.xml
у объекта:
<ОбъектМетаданныхИмя>Справочник.ФизическиеЛица</ОбъектМетаданныхИмя>
нужно найти:
<РеквизитРежимаВыгрузки>РежимВыгрузкиПриНеобходимости</РеквизитРежимаВыгрузки>
и заменить на:
<РеквизитРежимаВыгрузки>РежимВыгрузкиПерсональныеДанные</РеквизитРежимаВыгрузки>
Зарплата считалась в ЗУП 2.5, данные о физических лицах (в том числе, об их документах) заполнялись в ней. В БП 3.0 данные о физических лицах передавались по ссылке, с документами обмена (через обработку выгрузки данных в бухгалтерскую программу). В процессе перехода на ЗУП 3.1 данные были перенесены в данную конфигурацию, после чего встала задача настройки синхронизации между базами через план обмена.
Используемые при настройке версии конфигураций:
Было замечено, что при редактировании информации о физическом лице, либо при добавлении нового физического лица в любой из конфигураций, данные изменения не отражаются в базе-корреспонденте. Как выяснилось, во встроенных правилах регистрации объектов, для справочника Физические лица
установлен режим выгрузки РежимВыгрузкиПриНеобходимости
, который позволяет выгружать данные о физическом лице только по ссылке. Нас такая ситуация совершенно не устраивает, ставилась задача полной синхронности данных о физических лицах в обоих базах.
Кроме этого, была замечена странность, приводящая к ошибке: если изменить информацию о физическом лице, хранящуюся в регистрах сведений, то эти изменения регистрируются к обмену. К примеру, если изменить данные документа Паспорт гражданина РФ
у какого-либо физического лица, то после синхронизации в базе-приёмнике у данного физического лица пропадает запись о документе Паспорт гражданина РФ
. Это происходит в том случае, когда нет соответствия объектов (отсутствует запись в регистре сведений Соответствие объектов информационных баз
, относящаяся к данному физическому лицу).
Вторая странность: если соответствие объектов установлено (оно устанавливается автоматически, при выгрузке объекта по ссылке), то любые изменения данных таких физических лиц начинают регистрироваться к обмену, как в случае режима РежимВыгрузкиПерсональныеДанные
.
Если изменить в правилах выгрузки для физического лица режим на РежимВыгрузкиПерсональныеДанные
, то любые изменения информации о физических лицах регистрируются к обмену. Однако, в этом случае записи регистров сведений, связанных с физическими лицами, начали исчезать в совершенно различных ситуациях. Анализ правил обмена выявил следующее:
При выгрузке записи справочника Физические лица
, соответствующее ПКО (правило конвертации объекта) содержит обработчик события После выгрузки в файл
следующего содержания:
Выполнить(Алгоритмы.ВыгрузитьСведенияФизическогоЛица);
Смысл данного алгоритма в том, чтобы сразу за выгрузкой XML узла записи о физическом лице выгрузить все записи регистров сведений ФИОФизическихЛиц
, ГражданствоФизическихЛиц
, ДокументыФизическихЛиц
, связанных с выгружаемой записью о физическом лице.
Проанализировав состав отправленного сообщения, мы обнаружили, что сразу после объекта Физическое лицо
созданы три набора записей регистра, однако, они не содержат, собственно, строк набора записей. Это говорит о том, что отборы записей в алгоритме ВыгрузитьСведенияФизическогоЛица
возвращают пустой набор. Это приводит к тому, что в корреспондирующей базе записи вышеперечисленных регистров сведений, связанных с данным физическим лицом, замещается пустыми наборами, или проще говоря, удаляются.
После замены в алгоритме Источник
на Источник.Ссылка
записи регистров начали выгружаться корректно.
Примеры сообщений при выгрузке: