Почему новый справочник не выгружается при обмене данными в УПП и как это исправить?

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

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

Понимание механизма регистрации изменений

Прежде всего, проанализируем, как работает обмен данными в 1С. Когда мы добавляем объект в состав ПланОбмена и устанавливаем свойство Авторегистрация в значение Разрешить, система начинает отслеживать изменения этого объекта с этого момента времени. Это означает, что если вы запишете новый элемент справочника или измените существующий, платформа автоматически внесет запись в специальную вспомогательную таблицу изменений (в базе данных она имеет суффикс .Изменения).

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

Важный вывод: Само по себе включение объекта в план обмена не приводит к немедленной выгрузке всех существующих данных. Чтобы существующие элементы «улетели» в другую базу, их нужно зарегистрировать принудительно.

Шаг 1. Первоначальная регистрация данных

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

  1. Откроем обработку «Регистрация изменений для обмена» (ее можно найти через меню «Операции» — «Обработки» или в интерфейсе администратора).
  2. Выберем нужный узел обмена (базу-приемник).
  3. Найдем в списке наш новый справочник.
  4. Нажмем правую кнопку мыши и выберем пункт «Зарегистрировать все объекты данного типа».

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

Шаг 2. Проверка внешних правил регистрации (ПР)

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

Для исправления ситуации необходимо:

Шаг 3. Настройка правил конвертации объектов (ПКО) и выгрузки (ПВД)

Даже если объект успешно зарегистрирован, он не будет выгружен, если в правилах обмена (XML-файл правил конвертации) отсутствуют инструкции по его обработке. Разберем по шагам, что должно быть в правилах:

  1. Правило конвертации объекта (ПКО): Определяет соответствие реквизитов справочника источника и приемника. Как отметил автор, важно установить флажок «Искать объект приемника по внутреннему идентификатору», если мы хотим обеспечить идентичность GUID в обеих базах.
  2. Правило выгрузки данных (ПВД): Это критически важный элемент. Именно ПВД говорит системе: «Для этого узла нужно выбирать объекты типа Справочник.ИмяСправочника». Если ПВД отсутствует, автоматический механизм выгрузки может проигнорировать зарегистрированные изменения.

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


// Выберем узел, для которого хотим зарегистрировать данные
УзелОбмена = ПланыОбмена.Полный.НайтиПоКоду("001");
// Зарегистрируем весь справочник "НовыйСправочник"
ПланыОбмена.ЗарегистрироватьИзменения(УзелОбмена, Метаданные.Справочники.НовыйСправочник);

Шаг 4. Проверка идентичности метаданных

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

Шаг 5. Анализ коллизий и фильтров выгрузки

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

Резюме для успешной выгрузки

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

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

← На главную