Почему документы после переноса в УТ 11.5 не видны в общих журналах до перепроведения?

Программист 1С v8.3 (Управляемые формы) 1С:Управление торговлей Управленческий учет Торговля и дистрибуция
← На главную

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

Анализ проблемы: почему журналы "пустые"?

На первый взгляд кажется, что журналы документов должны просто показывать список соответствующих объектов из базы данных. Но в современных конфигурациях, таких как УТ 11.5, для оптимизации производительности используются более сложные механизмы. Проанализируем ситуацию по шагам, чтобы понять корень проблемы.

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

Решение: корректная обработка документов после загрузки

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

Решение заключается в том, чтобы в правилах конвертации для нужных нам документов ("ПоступлениеТоваровУслуг", "РеализацияТоваровУслуг" и других) использовать обработчик события "После загрузки".

Разберем по шагам, что нужно сделать:

  1. Откройте ваши правила конвертации в конфигурации "Конвертация данных 2.0" или "Конвертация данных 3.0".
  2. Найдите правило конвертации объекта (ПКО) для документа, который не отображается в журнале. Например, для документа "ПоступлениеТоваровУслуг".
  3. Перейдите на вкладку обработчиков событий и найдите обработчик "После загрузки". Этот обработчик выполняется после того, как объект уже записан в базу данных приемника.
  4. В коде этого обработчика необходимо добавить одну строку. Она добавляет только что загруженный объект в специальную коллекцию Параметры.ДокументыДляПроведения.

Код для обработчика "После загрузки":

Параметры.ДокументыДляПроведения.Добавить(Объект);

Что делает эта строка?

Параметр Параметры.ДокументыДляПроведения — это специальный массив, доступный во время загрузки данных. Платформа собирает в этот массив все объекты, которые требуют дополнительной обработки. После того как весь файл обмена будет прочитан и все объекты будут первично записаны, система пройдет по этому массиву и для каждого документа в нем выполнит процедуры, аналогичные интерактивному проведению. Это гарантирует, что будут созданы все необходимые движения и записи в служебных регистрах, включая РеестрДокументов.

Этот подход является стандартным и рекомендованным при переносе данных, особенно при использовании типовых правил обмена, например, из стандартной обработки "Выгрузка данных для перехода с УТ 10.3 на УТ 11.5". Если вы создавали правила с нуля, этот важный шаг мог быть упущен.

После внесения этого изменения в правила конвертации для всех проблемных документов, выгрузите данные заново и загрузите их в УТ 11.5. Теперь документы должны сразу появиться во всех предназначенных для них журналах без необходимости ручного перепроведения.

← На главную