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