В современных конфигурациях на базе 1С:ERP (включая Управление торговлей 11.4) механизм работы журналов документов значительно усложнен по сравнению со старыми версиями. Часто возникает ситуация: программист дает права на документы поступления, дает права на сам журнал, но пользователь видит пустой список. Разберем детально, почему так происходит и как заставить документы отображаться.
Проанализируем сначала архитектурную особенность. В УТ 11.4 журналы (например, «Закупки», «Продажи») строятся не по физическим таблицам документов (таким как Документ.ПриобретениеТоваровУслуг), а по вспомогательному объекту — регистру сведений РеестрДокументов. Это сделано для повышения производительности при работе с большими объемами данных и сложными фильтрами.
Если в этом регистре нет записей или у пользователя нет прав на чтение конкретных строк этого регистра, журнал будет абсолютно пустым, даже если сами документы в базе есть и права на них выданы. Выясним причину, проверив, заполнен ли этот регистр. Для этого под полными правами откроем «Все функции» (или «Функции для технического специалиста») и найдем РегистрСведений.РеестрДокументов. Если он пуст, значит, в системе отключено или не сработало регламентное задание по обновлению реестра. Однако чаще всего проблема кроется именно в RLS (Record Level Security).
Рассмотрим ситуацию, когда стандартный шаблон RLS ограничивает видимость данных. В УТ 11.4 часто используется расширенный шаблон. Посмотрим на пример типичного ограничения для этого регистра:
#ПоЗначениямРасширенный("РегистрСведений.РеестрДокументов","Чтение","",
"",
"",
"Организации","Т.Организация","И(",
"ГруппыПартнеров","Т.Партнер","ИЛИ",
"Условие","Т.Партнер = ЗНАЧЕНИЕ(Справочник.Партнеры.ПустаяСсылка)",") И (",
"Подразделения","Т.Подразделение","ИЛИ",
"Условие", "Т.Подразделение = ЗНАЧЕНИЕ(Справочник.СтруктураПредприятия.ПустаяСсылка)",") И (",
"Кассы,Подразделения,Склады","Т.МестоХранения.Ключ","ИЛИ",
"Условие","Т.МестоХранения.Ключ = НЕОПРЕДЕЛЕНО ИЛИ Т.МестоХранения.Ключ ЕСТЬ NULL",") И",
"ПравоЧтенияПоИдентификатору","Т.ТипСсылки","",
"","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","")
Проанализируем этот код. Система проверяет доступ одновременно по множеству разрезов: Организации, Партнеры, Подразделения и Склады. Если у пользователя в профиле настроен хотя бы один из этих видов доступа (например, «Склады»), но не указаны разрешенные значения (или не выбрано «Разрешить все, кроме исключений»), RLS отсечет все записи реестра, где указан склад.
Чтобы окончательно убедиться, что виноват механизм RLS, выполним проверку. Запустим сеанс под проблемным пользователем и воспользуемся консолью запросов. Попробуем выполнить простой запрос:
ВЫБРАТЬ ПЕРВЫЕ 10
Реестр.Ссылка,
Реестр.Организация,
Реестр.Склад
ИЗ
РегистрСведений.РеестрДокументов КАК Реестр
Если запрос возвращает пустой результат под пользователем, но под администратором данные видны — причина на 100% в праве «Чтение» и установленных ограничениях в ролях. Если же в консоли данные видны, а в журнале нет — проблема в праве «Просмотр» или программных фильтрах в форме журнала.
Разберем, как правильно настроить права типовыми средствами, не прибегая к снятию конфигурации с поддержки. Рекомендуется использовать следующий алгоритм:
Чтение реестра документов. Без нее работа любых журналов будет некорректной.Как показывает практика (и сообщение №11 из обсуждения), иногда типовые ограничения RLS в РеестрДокументов работают избыточно жестко. Если бизнес-задача позволяет пользователю видеть список всех документов (даже если он не может открыть сам документ без прав), можно создать новую роль.
Разберем этот метод по шагам:
ЧтениеРеестраДокументовБезОграничений.РегистрСведений.РеестрДокументов.После этого динамический список журнала закупок начнет отображать записи, так как платформа перестанет фильтровать таблицу РеестрДокументов на уровне СУБД для этого пользователя.
Рассмотрим еще несколько неочевидных причин, которые стоит проверить:
Просмотр на справочники Организации, Партнеры, Контрагенты и Склады. Если есть право только на «Чтение» (без просмотра), платформа может скрывать строки, где эти объекты используются в качестве колонок.Чтение хотя бы на один из типов документов, входящих в состав журнала, динамический список может работать нестабильно.Выясним, не наложены ли программные фильтры. В форме журнала закупок часто присутствует скрытый программный код в обработчике ПриСозданииНаСервере, который устанавливает параметры запроса динамического списка. Проанализируем этот код через отладчик, чтобы понять, какие параметры передаются в запрос списка под конкретным пользователем.
Таким образом, для решения проблемы пустых журналов в УТ 11.4 следует в первую очередь фокусироваться на правах доступа к регистру сведений «Реестр документов» и корректности заполнения настроек в Группах доступа. Использование роли без RLS для этого регистра является самым быстрым и эффективным «лечением» в случае, если типовые профили не обеспечивают нужной видимости данных.