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