Как настроить обмен данными между ЗУП 3.1 и УПП 1.3 и устранить типичные ошибки?

Программист 1С v8.3 (Обычные формы) 1С:Зарплата и Управление Персоналом Бухгалтерский учет
← На главную

Переход на ведение кадрового учета и расчет заработной платы в конфигурации ЗУП 3.1 при сохранении регламентированного учета в УПП 1.3 — задача распространенная, но технически сложная. Поскольку типового механизма синхронизации между этими решениями не существует, разработчикам приходится использовать правила обмена, созданные в «Конвертации данных 2.0», или адаптировать существующие наработки. В процессе настройки возникают специфические проблемы: от «битых» ссылок в документах до блокировки работы самого механизма обмена со стороны системы. Рассмотрим наиболее острые вопросы и способы их решения.

Проблема 1: Сообщение «Элемент не выбран» при наличии данных в форме

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

В архитектуре 1С справочник Сотрудники неразрывно связан со справочником ФизическиеЛица. В ЗУП 3.1 эта связь реализована иначе, чем в старой архитектуре УПП 1.3. Основная причина кроется в том, что при выгрузке данных были перенесены только элементы справочника Сотрудники, а связанные с ними записи ФизическиеЛица отсутствуют в базе-приемнике. Поскольку реквизит Физлицо в карточке сотрудника является обязательным для многих механизмов (включая открытие формы), ссылка становится «битой» или неполной.

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

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

Проблема 2: Ошибка «Выполнение обмена запрещено администратором»

При попытке запустить синхронизацию со стороны ЗУП 3.1 может возникнуть исключительная ситуация: ОбщийМодуль.ОбменДаннымиСервер.Модуль(5419): Выполнение обмена запрещено администратором. Выясним причину этого поведения.

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


Процедура ПроверитьИспользованиеОбменаДанными() Экспорт
    Если ПолучитьФункциональнуюОпцию("ИспользоватьСинхронизациюДанных") <> Истина Тогда
        ЗаписьЖурналаРегистрации(СобытиеЖурналаРегистрацииОбменДанными(), УровеньЖурналаРегистрации.Ошибка,,,
            НСтр("ru = 'Выполнение обмена запрещено администратором.'"));
        ВызватьИсключение НСтр("ru = 'Выполнение обмена запрещено администратором.'");
    КонецЕсли;
КонецПроцедуры

Решение: Для устранения ошибки необходимо активировать возможность обмена в интерфейсе программы:

  1. Перейдем в раздел Администрирование — Синхронизация данных.
  2. Установим флаг Синхронизация данных. Только после активации этой константы функциональная опция ИспользоватьСинхронизациюДанных примет значение Истина, и программный интерфейс обмена станет доступен.

Проблема 3: Настройка регистрации изменений в планах обмена

Если вы создаете собственный план обмена (например, ОбменЗУП_УПП) путем копирования типового, вы можете столкнуться с тем, что объекты (например, ВедомостьНаВыплатуЗарплатыВБанк) не регистрируются автоматически для выгрузки. Разберем, как работает механизм авторегистрации.

В настройках плана обмена для каждого входящего в него объекта есть свойство Авторегистрация. Она может принимать значения Разрешить или Запретить. Если установлено Запретить, то платформа 1С не будет автоматически записывать изменения в таблицу регистрации при записи объекта.

Почему типовые правила часто используют «Запретить»? Это делается для того, чтобы контролировать регистрацию программно. Например, нам не нужно выгружать каждую запись черновика документа, а нужно регистрировать его только при проведении или при выполнении определенных условий. В типовых конфигурациях за это отвечают Подписки на события.

Проанализируем ситуацию: если вы добавили свой план обмена, типовые подписки на события (такие как ПриЗаписиОбъектаДляОбмена) о нем «не знают», так как в их коде прописаны конкретные узлы или условия.

Варианты решения проблемы регистрации:

  1. Простой способ: Установить в составе плана обмена для нужных документов Авторегистрация = Разрешить. В этом случае любое сохранение объекта будет помещать его в очередь на выгрузку.
  2. Программный способ: Создать свою подписку на событие ПриЗаписи для группы документов. В обработчике подписки пропишем код для регистрации изменений в вашем узле:

Процедура ПриЗаписиОбъектаДляОбменаУПП(Источник, Отказ) Экспорт
    Если Источник.ОбменДанными.Загрузка Тогда
        Возврат;
    КонецЕсли;
    
    // Получаем узел вашего плана обмена
    УзелОбмена = ПланыОбмена.ОбменЗарплата3УПП1.НайтиПоКоду("001");
    
    Если Не УзелОбмена.Пустая() Тогда
        ПланыОбмена.ЗарегистрироватьИзменения(УзелОбмена, Источник);
    КонецЕсли;
КонецПроцедуры

Методические рекомендации по обмену ЗУП 3.1 — УПП 1.3

Помимо технических ошибок, важно учитывать методику переноса данных, чтобы бухгалтерский учет в УПП оставался корректным:

Таким образом, успех обмена зависит не только от корректности написанных правил в «Конвертации данных», но и от правильной настройки функциональных опций БСП в ЗУП и понимания механизмов регистрации изменений в планах обмена.

← На главную