Почему загруженные через правила обмена документы видны в запросах, но не отображаются в журнале ERP?

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

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

Причина 1. Ограничение доступа на уровне записей (RLS) и нерассчитанные ключи доступа

Основная причина скрытия объектов в типовых конфигурациях линейки ERP — работа механизма разграничения прав доступа (RLS). По умолчанию при загрузке данных через стандартную обработку или правила обмена все объекты записываются в базу с установленным признаком ОбменДанными.Загрузка = Истина.

В этом режиме обработчики событий модулей объектов и подписки на события БСП намеренно отключаются платформой для ускорения загрузки. В результате для новых документов не формируются записи в служебных регистрах подсистемы управления доступом, таких как КлючиДоступаКОбъектам, КлючиДоступаПользователей и НаборыЗначенийДоступа. Механизм RLS в запросах динамических списков считает эти документы недоступными для текущего пользователя и просто исключает их из выборки формы, даже если у пользователя назначены полные административные права.

Разберем по шагам, как исправить ключи доступа:

  1. Проверка гипотезы с RLS. Перейдем в раздел администрирования пользователей и прав и временно снимем флаг «Ограничивать доступ на уровне записей». Если документы сразу появились в журнале, дело гарантированно в ключах доступа.
  2. Запуск регламентных заданий БСП. Перейдем в список регламентных и фоновых заданий и вручную выполним задания «Обновление ключей доступа к данным» и «Обновление ключей доступа пользователей». После завершения расчета ключей документы отобразятся в журнале.
  3. Программное обновление ключей. Для принудительного обновления ключей через внешнюю обработку можно вызвать типовую процедуру БСП: УправлениеДоступом.ОбновитьКлючиДоступа(...).

Причина 2. Служебный регистр сведений «Реестр документов»

Во многих современных версиях ERP журналы документов (например, журнал документов продаж или закупок) для оптимизации быстродействия строятся не прямым обращением к таблицам документов, а на основании вспомогательного регистра сведений РеестрДокументов.

Поскольку при загрузке из XML свойство ОбменДанными.Загрузка равно Истина, движения по служебным регистрам сведений автоматически не создаются. В итоге документ физически присутствует в таблице базы данных, но запись о нем в РеестрДокументов отсутствует, из-за чего форма журнала остается пустой.

Для устранения этой проблемы выполним перерегистрацию или перезапись объектов:

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

Причина 3. Скрытые отборы и кэш динамического списка

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

  1. Отбор по рабочей организации или подразделению (если в загруженных документах реквизиты заполнены иначе, чем в текущей рабочей сессии).
  2. Интервал журнала документов (период отображения списка).
  3. Отбор по статусу или признаку пометки на удаление.

Чтобы исключить влияние пользовательских настроек, откроем меню «Еще» в форме журнала и выберем пункт «Установить стандартные настройки» или выполним сброс настроек формы.

Решение на уровне правил обмена (КД 2)

Если мы планируем выполнять перенос на регулярной основе, правильным решением будет доработка алгоритмов загрузки непосредственно в конфигурации «Конвертация данных 2».

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


Объект = СсылкаНаДокумент.ПолучитьОбъект();
Если Объект <> Неопределено Тогда
    Объект.ОбменДанными.Загрузка = Ложь;
    Объект.Записать(РежимЗаписиДокумента.Запись);
КонецЕсли;

Такой подход обеспечит автоматическое формирование записей в РеестрДокументов и корректный расчет ключей доступа RLS сразу в момент импорта данных.

← На главную