Почему не выгружается документ при ручной регистрации в 1С:Конвертации данных 2.1?

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

Настройка обмена данными между конфигурациями 1С с использованием конфигурации «Конвертация данных 2.1» (КД 2.1) — стандартная задача для разработчика. Однако часто возникает ситуация: новый тип документа добавлен в правила обмена, объект успешно зарегистрирован к обмену на узле плана обмена (например, вручную), запускается синхронизация, но в результирующем XML-файле сообщения обмена в блоке ДанныеПоОбмену пусто. При этом сама регистрация объекта на узле сбрасывается, как будто обмен прошел успешно.

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

---

Причина 1. Отсутствие Правила выгрузки данных (ПВД)

Это самая распространенная техническая ошибка при доработке правил обмена в КД 2.1. Разработчики часто путают назначение правил конвертации и правил выгрузки объектов.

Рассмотрим структуру правил КД 2.1 подробнее:

Если для нового документа создано только ПКО, но отсутствует соответствующее ПВД, то у обработчика обмена просто нет алгоритма выборки этих данных из базы. В таком случае документ сможет выгрузиться исключительно «по ссылке» (если он указан в качестве реквизита в другом полноценно выгружаемом объекте), но не как самостоятельная зарегистрированная сущность.

Решение: Создайте в КД 2.1 новое Правило выгрузки данных для вашего документа и свяжите его с соответствующим ПКО. После этого выгрузите правила обмена и загрузите их в информационную базу.

---

Причина 2. Двухэтапная фильтрация в Библиотеке стандартных подсистем (БСП)

В современных конфигурациях 1С (таких как «Управление торговлей», «Розница», «ERP» и др.) обмен работает под управлением механизмов БСП. Правила регистрации объектов (ПРО) в БСП работают по двухэтапной схеме фильтрации:

  1. Первый этап (при записи объекта): Механизм отслеживает изменения объекта в базе данных и автоматически ставит его на регистрацию на соответствующем узле плана обмена.
  2. Второй этап (в момент выгрузки): Перед тем как физически записать объект в файл XML, БСП повторно прогоняет объект через правила регистрации.

Если вы принудительно зарегистрировали документ на узле плана обмена вручную (например, с помощью обработки «Регистрация изменений для обмена»), вы обошли только первый этап. При старте обмена БСП применит правила регистрации повторно. Если в правилах регистрации данный тип документа не описан, или для него настроены жесткие отборы (по организации, по дате начала обмена, по складу), то БСП тихо отфильтрует объект прямо в процессе выгрузки.

При этом происходит следующее: регистрация с узла плана обмена снимается (так как попытка выгрузки была предпринята), но в XML-файл данные не записываются.

Решение: Проверьте правила регистрации объектов. Внесите ваш новый документ в ПравилаРегистрацииОбъектов (ПР) в Конвертации данных, настройте для него условия регистрации и обновите правила в узле плана обмена.

---

Причина 3. Проверка версии объекта (оптимизация обмена)

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

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


// Пример логики проверки изменения ключевых реквизитов перед выгрузкой
Если Не МодифицированностьОбъекта(Источник) Тогда
    Отказ = Истина; // Объект не изменен, выгрузка отменяется
КонецЕсли;

Чтобы исключить влияние этого механизма при тестировании, внесите в документ любое незначительное изменение (например, перезапишите его с изменением комментария) и заново зарегистрируйте.

---

Причина 4. Отказ в глобальных обработчиках событий КД 2.1

Иногда логику обмена ограничивают на уровне глобальных обработчиков самой конвертации. Например, в событиях Перед выгрузкой данных или Перед конвертацией объекта может содержаться код, который принудительно устанавливает параметр Отказ = Истина для определенных типов документов.

Проанализируем пример такого глобального ограничения:


// Глобальный обработчик "Перед выгрузкой объекта"
Если ТипЗнч(Источник) = Тип("ДокументСсылка.НовыйДокумент") Тогда
    Если Источник.Дата < ДатаНачалаОбмена Тогда
        Отказ = Истина; // Блокировка выгрузки документов прошлых периодов
    КонецЕсли;
КонецЕсли;

Внимательно изучите все текстовые обработчики в вашей настройке конвертации в КД 2.1 на наличие подобных конструкций.

---

Как локализовать проблему и отладить выгрузку?

Если визуальный анализ правил не принес результатов, выполним диагностику по шагам:

Шаг 1. Проверка в «чистом» режиме

Попробуйте выгрузить проблемный документ из базы-источника не через план обмена БСП, а напрямую с помощью внешней обработки УниверсальныйОбменДаннымиXML.

Если через обработку документ выгружается без проблем, значит, правила конвертации (ПКО и ПВД) настроены абсолютно верно. Проблема кроется исключительно в механизмах БСП (правилах регистрации, интерактивных отборах на самом узле плана обмена или ограничениях по дате начала выгрузки).

Шаг 2. Использование отладки обработчиков

Для точечного поиска места, где происходит сброс выгрузки, выполним отладку:

  1. Откройте обработку УниверсальныйОбменДаннымиXML в режиме «Предприятие».
  2. Перейдите на вкладку «Дополнительные настройки» и включите режим отладки обработчиков событий.
  3. Сгенерируйте модуль отладки и сохраните его как внешнюю обработку.
  4. Откройте эту обработку в конфигураторе вашей базы-источника, установите точку останова в интересующих вас событиях (например, в обработчиках ПВД или ПКО ПередВыгрузкой) и запустите выгрузку. Шагая по коду с помощью клавиши F11, вы легко увидите, в какой момент переменная Отказ принимает значение Истина.

Используя этот комплексный подход, мы сможем быстро определить причину "тихого" исчезновения документов из файла обмена и успешно решить проблему интеграции данных.

← На главную