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