При переносе данных из конфигурации "Управление торговлей 10.3" в "Управление торговлей 11.5" часто возникает следующая ситуация: документы, такие как "Поступление товаров и услуг" или "Реализация товаров и услуг", успешно загружаются и видны в своих "родных" журналах. Однако в обобщенных журналах, например, "Документы закупки (все)" или "Документы продажи (все)", они отсутствуют. Проблема решается, если открыть каждый такой документ и перепровести его вручную, но это трудоемко и не подходит для массовой загрузки. Давайте разберемся, почему так происходит и как исправить это на уровне правил конвертации.
На первый взгляд кажется, что журналы документов должны просто показывать список соответствующих объектов из базы данных. Но в современных конфигурациях, таких как УТ 11.5, для оптимизации производительности используются более сложные механизмы. Проанализируем ситуацию по шагам, чтобы понять корень проблемы.
РеестрДокументов. Этот регистр агрегирует ключевую информацию по разным видам документов (контрагент, сумма, дата и т.д.) и позволяет системе быстро строить списки без необходимости объединять множество "тяжелых" таблиц документов.
ОбменДанными.Загрузка = Истина. Он предназначен для ускорения процесса и предотвращения выполнения "лишней" бизнес-логики, которая может привести к ошибкам или искажению уже подготовленных данных. В этом режиме система:
ПередЗаписью или ПриПроведении.РеестрДокументов, как раз и является одной из таких "пропускаемых" операций.ОбменДанными.Загрузка = Истина система не создает для них соответствующие записи в регистре сведений РеестрДокументов. В результате журналы, которые строятся на основе этого регистра, просто "не видят" новые документы. Когда же вы перепроводите документ вручную, запускается стандартная процедура проведения в интерактивном режиме, которая уже корректно формирует все необходимые записи, в том числе и в РеестрДокументов, после чего документ появляется в журнале.
Чтобы решить проблему, нам нужно дать системе команду обработать загруженные документы дополнительно, уже после завершения основного этапа обмена, чтобы инициировать создание записей во всех служебных регистрах. Для этого в "Конвертации данных" существует специальный механизм.
Решение заключается в том, чтобы в правилах конвертации для нужных нам документов ("ПоступлениеТоваровУслуг", "РеализацияТоваровУслуг" и других) использовать обработчик события "После загрузки".
Разберем по шагам, что нужно сделать:
Параметры.ДокументыДляПроведения.
Код для обработчика "После загрузки":
Параметры.ДокументыДляПроведения.Добавить(Объект);
Что делает эта строка?
Параметр Параметры.ДокументыДляПроведения — это специальный массив, доступный во время загрузки данных. Платформа собирает в этот массив все объекты, которые требуют дополнительной обработки. После того как весь файл обмена будет прочитан и все объекты будут первично записаны, система пройдет по этому массиву и для каждого документа в нем выполнит процедуры, аналогичные интерактивному проведению. Это гарантирует, что будут созданы все необходимые движения и записи в служебных регистрах, включая РеестрДокументов.
Этот подход является стандартным и рекомендованным при переносе данных, особенно при использовании типовых правил обмена, например, из стандартной обработки "Выгрузка данных для перехода с УТ 10.3 на УТ 11.5". Если вы создавали правила с нуля, этот важный шаг мог быть упущен.
После внесения этого изменения в правила конвертации для всех проблемных документов, выгрузите данные заново и загрузите их в УТ 11.5. Теперь документы должны сразу появиться во всех предназначенных для них журналах без необходимости ручного перепроведения.