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