РЛС, как отловить сработавшее ограничение?

1. НовенькийЯ 28.03.17 15:32 Сейчас в теме
Добрый день.
Имею УТ 10.3, платформа 8.2.19

Была сделана доработка, пользователи могут видеть документы только по определенным складам и создавать документы тоже по определенным складам, и не всегда эти склады одинаковые. Т.е. по одному складу может быть разрешен просмотр но запрещено редактирование доков.
Так вот все работает, только пользователей напрягает тот факт, что они периодически не могут записать документ и при этом выскакивает просто сообщение о нарушении прав доступа. Опять таки не понятно каких именно прав и на что не хватает. Т.к. в документах есть еще типовые РЛС с ограничением по контрагенту/организации и прочая лабудень.
Можно как то выяснить, какой именно РЛС сработал и выдать пользователю соответствующее сообщение, типа:
"Вам запрещено создавать документы по данному складу".
Или
"Вы не можете редактировать документы по данному проекту".

Или придется перед записью документа, до того как сработал РЛС, проверять а можно ли этому пользователю изменять документ по этому складу/проекту/контрагенту? Т.е. двойная проверка пойдет!!!
+
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. dark_kardinal 11 29.03.17 08:54 Сейчас в теме
по идее при этом сообщении он делает запись в Журнал регистрации - с указанием по каким именно объектам запрещена запись
попробуй в конце записи или отловить Это сообщение из журнала и вывести его на Экран - кажется это не должно быть сложно.
прицепись к какой нибудь процедуре при записи, проведении или может даже послеЗаписиНаФорме???
корум; +1
3. nickpugachev 29.03.17 09:20 Сейчас в теме
(2) И получить неслабые тормоза, особенно если в журнал пишется много записей


(1) Форма документа не должна давать пользователю редактировать документ, если у него нет на это права. Также она не должна давать выбрать недоступный пользователю склад или проект. Ну и конечно она должна проверять корректность данных перед записью. Это в идеале.
Если пользователи получают ошибки RLS при записи документов, значит либо вы не доделали RLS, либо вы используете не то, что стоило бы использовать.
al0shka; корум; ice-net; +3
5. НовенькийЯ 29.03.17 15:13 Сейчас в теме
(2) - искать ошибку в журнале это вообще не вариант, слишком долго.
(3) - Не хотелось бы переделывать несколько десятков документов, и запрещать в них выбирать запрещенный склад или проект.
Может и не то что надо использую, но это позволяет жестко ограничить запись документов по складам.
При этом пользователь может читать документ по определенному складу а вот записать по этому складу не может, именно в этот момент и происходит ошибка.
Скажем есть Склад1,Склад2 и Склад3
У пользователя права
Склад1 - Чтение
Склад2 - Чтение/Запись
Склад3 - Нет прав
При открытии списка документов, пользователь видит только доки со складами 1 и 2. Так же при открытии справочника Склады видит Склад1 и Склад2, т.е. Склад3 пользователю не доступен ни в каком виде.
При записи документа со складом 2 - проблем ни каких.
при записи документа со складом 1 - возникает ошибка о нарушении доступа. - именно эту ошибку я и хочу отловить.

Как вариант попробую сделать подписку на событие перед записью документов, если есть Склад, СкладОрдер или складполучатель/отправитель, тогда уж проверить доступность склада, и соответственно выдать необходимое предупреждение. Надеюсь событие ПередЗаписью срабатывает раньше чем РЛС
+
6. herfis 498 29.03.17 15:30 Сейчас в теме
(5) Используете вы что надо. Но проблему доступов вы уже решили. Сейчас вы хотите решить проблему юзабилити (которая подчас сложнее).
С точки зрения юзабилити идеальный вариант - когда пользователь видит при выборе склада в документе только те склады, по которым он имеет право его оформлять. Тогда и вопросов никаких и вероятность ошибки исключена, и работа пользователя ускоряется.
Да, с помощью RLS это не решается. Тут нужен более комплексный подход. А кому сейчас легко?
+
4. collider 29.03.17 09:35 Сейчас в теме
Как буквально звучит ошибка о том, что недостаточно прав? Может и скриншот есть?
Не факт, что речь там о таблице этого документа.

Можно легко представить такую ситуацию, что при записи выполняются запросы в другие таблицы. Так вот, бывает, что не на все записи из той таблицы у пользователя есть права.
Поэтому надо либо вписывать в запросе ВЫБРАТЬ РАЗРЕШЁННЫЕ, либо устанавливать привелегированный режим перед "Запрос.Выполнить()".
+
7. НовенькийЯ 29.03.17 15:38 Сейчас в теме
Просто в списке складов убрать склад, по которому запрещена запись не вариант.
Т.к. документ может создать один человек с доступным складом, потом второй человек открывает этот документ и пытается его записать/провести.
Так вот тут либо при открытии формы проверять склад и делать форму только для чтения, либо при записи выдавать предупреждение.
Склоняюсь к первому варианту, к тому же есть типовой механизм проверки документа на дату запрета. Если этот механизм прописан во всех доках, тогда можно будет в него воткнуть проверку и по складам.
+
Внимание! Тема сдана в архив

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