СКД + RLS + Параметры сеанса. Проблемка с доступом

1. Grek_Master 11.03.19 08:19 Сейчас в теме
Добрый всем день!

Небольшая проблемка с СКД + RLS + Параметры сеанса. Сразу что то не получается решить проблемку.

Выручайте!

Суть проблемы:

1. УТ 11.4, пользователи входят под своими логинами и им устанавливается параметр сеанса = подразделению, откуда зашел пользователь

2. Есть роль, назовем ее Товаровед, у которой есть разрешение на "Чтение" только тех документов (в частности ПриобретениеТоваровУслуг), у которых подразделение = данному параметру сеанса: ПриобретениеТоваровУслуг ГДЕ ПриобретениеТоваровУслуг.Подразделение = &G_ПодразделениеПользователя. На "Просмотр", "Проведение" и т.д. ограничений нет по RLS. Этим подходом мы ограничиваем видимость документов, которые не относятся к подразделению пользователя

3. И есть отчетик простой на СКД к табличной части Товары данных документов, без ограничений каких либо на выборку данных

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

5. Если формирует пользователь со всеми правами, то отчет формируется корректно

6. Сам параметр сенаса "ПодразделениеПользователя" под пользователем товаровед "Инициализируется" корректно, проблема не в инициализации. В СКД при "СкомпоноватьРезультат" вылетает ошибка "Попытка получения неинициализированного значения параметра сеанса"

7. Если для роли "Товаровед" убрать RLS из "Чтение", то отчет формируется корректно

8. Вот ломаю голову, как обойти данную проблемку
Найденные решения
7. dhurricane 11.03.19 13:32 Сейчас в теме
(1) А как у Вас устанавливается параметр сеанса?

Есть такое предположение. При установке параметра сеанса подразделение выбирается запросом из элемента справочника "Пользователи" для текущего пользователя ИБ. Если так, то вот возможное проблемное место: отчет формируется фоновым заданием, где нет пользователя, а значит и нет подразделения, т.е. параметр сеанса не инициализируется.

UPD. Почитал получше про фоновые задания, теперь мне кажется, что глупость написал. Прошу прощения.

UPD2. При запуске фонового задания действительно срабатывает обработчик события "УстановкаПараметровСеанса". При этом задание должно выполняться от имени того же пользователя, который выполнил вызов фонового задания. Следовательно проблема вероятнее всего именно в инициализации параметра. Может таки некорректно определяется текущий пользователь ИБ, либо что-то еще?
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
7. dhurricane 11.03.19 13:32 Сейчас в теме
(1) А как у Вас устанавливается параметр сеанса?

Есть такое предположение. При установке параметра сеанса подразделение выбирается запросом из элемента справочника "Пользователи" для текущего пользователя ИБ. Если так, то вот возможное проблемное место: отчет формируется фоновым заданием, где нет пользователя, а значит и нет подразделения, т.е. параметр сеанса не инициализируется.

UPD. Почитал получше про фоновые задания, теперь мне кажется, что глупость написал. Прошу прощения.

UPD2. При запуске фонового задания действительно срабатывает обработчик события "УстановкаПараметровСеанса". При этом задание должно выполняться от имени того же пользователя, который выполнил вызов фонового задания. Следовательно проблема вероятнее всего именно в инициализации параметра. Может таки некорректно определяется текущий пользователь ИБ, либо что-то еще?
8. Grek_Master 11.03.19 14:31 Сейчас в теме
(7) Параметр сеанса инициализируется либо пустым значением (пустая ссылка на подразделение), но инициализируется, либо подразделением при входе пользователя в базу, через параметр запуска 1С (это rdp сессии, где один пользователь может перемещаться между подразделениями и жестко привязать пользователя нельзя). И сегодня он работает на одном подразделении, завтра на другом)……..

Хм…кстати, возможно проблема именно в этом - обратил внимание, что ошибка возникает в фоновом задании, при компоновке данных....

Инициализация параметров (УТ 11.4.6.207) в моем случае идет через:

- модуль "ОбщегоНазначенияПереопределяемый",
- далее через Процедуру "ПриДобавленииОбработчиковУстановкиПараметровСеанса(Обработчики) Экспорт", где прописываем ссылку уже на свою процедуру инициализации наших параметров
- далее уже в своей процедуре устанавливаем параметры нужными значениями


Сейчас попробую проверить свое смутное предположение....
9. Grek_Master 11.03.19 18:23 Сейчас в теме
(7) В общем проблема оказалось в корректной инициализации параметров сеанса...У меня пользователи не привязаны жестко к подразделению. Текущее подразделение пользователя определяется через указание доп. параметра запуска 1С с рабочего стола (rdp сессии).

Соответственно при запуске фонового задания нет никакого доп. параметра входа в 1С (а для отчетов мне не принципиально ограничивать пользователей только "своими" подразделениями, у них и так хватает других ограничений)


Вы были правы. Спасибо
2. toypaul 63 11.03.19 11:08 Сейчас в теме
6. Grek_Master 11.03.19 13:14 Сейчас в теме
(2) Попробовал, но что то не получилось. Возможно ранее, в 2013 году это и прокатывало
3. Grek_Master 11.03.19 11:24 Сейчас в теме
Кстати, забыл написать - платформа 8.3.13.1513...
4. Kovekh 11.03.19 12:20 Сейчас в теме
http://programmist1s.ru/osobennost-razreshennyie-v-zaprose-1s/


Может, в запросе отчета нужно всё же указать конструкцию "РАЗРЕШЕННЫЕ"?
5. Grek_Master 11.03.19 13:13 Сейчас в теме
Нет, указание "Разрешенные" в запросе не решает проблему...
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот