Почему в регистре «Выручка и себестоимость продаж» не видны записи и как исправить проблему с ключами аналитики партнеров?

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

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

Анализ проблемы: почему удаление ключа аналитики ломает базу

Проанализируем механику работы регистра накопления ВыручкаИСебестоимостьПродаж. В этом регистре измерение аналитики ссылается на справочник КлючиАналитикиУчетаПоПартнерам. Когда в системе включен производительный RLS, права рассчитываются не динамически в каждом тяжелом запросе, а берутся из специальных служебных регистров сведений, где хранятся готовые соответствия ключей доступа пользователям и группам.

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

Причины сбоя расчета прав доступа

Выясним причину, почему данные для ключа аналитики перестают читаться пользователем:

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

Способ 1: Штатное обновление кеша доступа через интерфейс

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

  1. Перейдем в раздел НСИ и администрирование → Настройки пользователей и прав.
  2. Откроем подраздел Группы доступа.
  3. Найдем пункт Настройка доступа на уровне записей (или панель обновления доступа).
  4. Запустим ручное обновление кеша доступа (кнопка Обновить или Обновить данные доступа в зависимости от релиза конфигурации).

Система принудительно пересчитает таблицы групп доступа и ключей, после чего скрытые записи в регистре ВыручкаИСебестоимостьПродаж сразу станут доступны пользователю в рамках его прав.

Способ 2: Точечное обновление конкретного ключа аналитики программно

На крупных рабочих базах запуск глобального обновления кеша может вызвать длительные эксклюзивные блокировки таблиц прав (например, ТаблицыГруппДоступа или КлючиДоступаПользователей), что мешает оперативной работе пользователей. В таких ситуациях выполним точечный пересчет только проблемного ключа аналитики.

Посмотрим на пример кода, который можно выполнить во внешней обработке под полными правами:


// Передаем ссылку на проблемный ключ аналитики
СсылкаНаКлюч = Справочники.КлючиАналитикиУчетаПоПартнерам.НайтиПоРеквизиту("Партнер", ПроблемныйПартнер);

Если ЗначениеЗаполнено(СсылкаНаКлюч) Тогда
    УправлениеДоступом.ОбновитьКлючиДоступа(СсылкаНаКлюч);
    Сообщить("Ключи доступа для объекта успешно обновлены!");
КонецЕсли;

Метод УправлениеДоступом.ОбновитьКлючиДоступа() инициирует мгновенный расчет прав именно для указанной ссылки и связанных с ней регистров без создания нагрузки на всю информационную базу.

Способ 3: Диагностика регистров и очередей обновления

Если проблема повторяется регулярно, проанализируем состояние очередей подсистемы управления доступом. Проверим содержимое следующих регистров сведений:

  1. ОчередьОбновленияКлючейДоступа и ОчередьОбновленияКлючейДоступаВФоне — если в этих таблицах постоянно накапливаются тысячи неразобранных записей, значит, регламентные задания не успевают за потоком проведения документов или вовсе аварийно завершаются.
  2. КлючиДоступаКОбъектам и КлючиДоступаКРегистрам — в них должно присутствовать актуальное соответствие между конкретным элементом справочника КлючиАналитикиУчетаПоПартнерам и таблицей ВыручкаИСебестоимостьПродаж.

Если ключи аналитики генерируются обработками загрузки данных, обязательно предусмотрим в коде явную регистрацию изменений для пересчета доступа после завершения транзакции обмена, чтобы избежать рассинхронизации прав в дальнейшем.

← На главную