|
Как игнорировать "Пользователю недостаточно прав для выполнения операции" | ☑ | ||
---|---|---|---|---|
0
Boudybuilder
19.10.15
✎
20:08
|
Спотыкаемся все время тут
Карта = Справочники.ИнформационныеКарты.НайтиПоРеквизиту("КодКарты",Данные); На пользователе без прав администратора. Можно ли как то в этом куске кода отключить проверку прав на чтение. И после выполнения снова включить. Какое решение есть чтобы получить значение ссылку на эту "Карту" ? |
|||
1
VitShvets
19.10.15
✎
20:18
|
Вижу 3 варианта:
|
|||
2
VitShvets
19.10.15
✎
20:21
|
(1) :
1. Дать всем право на неинтерактивное чтение. Поможет, если карта используется где-то внутри алгоритма для расчета и не показывается клиенту. 2. Тоже самое, что и п.1, но без ролей. См. "УстановитьПривилегированныйРежим(<Включить>)" 3. Если данная карта где-то отображается, то придется дать доступ на просмотр. |
|||
3
Boudybuilder
19.10.15
✎
20:24
|
(3) Спасибо!
УстановитьПривилегированныйРежим() - Это мне и надо было. Просто из головы выскочило :) |
|||
4
Boudybuilder
07.11.15
✎
12:40
|
Доброго здоровья, друзья!
Продолжу свою тему. Процедура такова: Процедура ВнешнееСобытие(Источник, Событие, Данные) Если Не ВводДоступен() Тогда Возврат; КонецЕсли; // Фантич - сначала проверим находимся ли мы на поле ввода менеджера, и заполним его если да Если Этаформа.ТекущийЭлемент = ЭлементыФормы.Менеджер Тогда ЗаполнитьМенеджера(Данные); Сообщить(Данные); Возврат; КонецЕсли; // Фантич - проверим регистрационная карта ли это для возможности изменения документа Если ПустаяСтрока(Данные) Тогда Возврат; КонецЕсли; УстановитьПривилегированныйРежим(Истина); Карта = Справочники.ИнформационныеКарты.НайтиПоРеквизиту("КодКарты",Данные); Если НЕ Карта = Справочники.ИнформационныеКарты.ПустаяСсылка() И Карта.ТипКарты = Перечисления.ТипыИнформационныхКарт.Регистрационная Тогда Пользователь = ПользователиИнформационнойБазы.НайтиПоУникальномуИдентификатору(Карта.ВладелецКарты.ИдентификаторПользователяИБ); Если Не Пользователь.Роли.Содержит(Метаданные.Роли.ПолныеПрава) Тогда Предупреждение("На изменение документа нет прав!"); Иначе ЭтаФорма.ТолькоПросмотр = Ложь; Возврат; КонецЕсли; КонецЕсли; УстановитьПривилегированныйРежим(Ложь); // Если нет то выполним стандартные типовые действия ПолучитьСерверТО().ОбработатьВнешнееСобытие(Источник, Событие, Данные, ЭтаФорма); КонецПроцедуры // ВнешнееСобытие() Спотыкается на серверной: {Документ.ЧекККМ.Форма.ФормаДокумента.Форма(1036)}: Ошибка при вызове метода контекста (НайтиПоУникальномуИдентификатору) Пользователь = ПользователиИнформационнойБазы.НайтиПоУникальномуИдентификатору(Карта.ВладелецКарты.ИдентификаторПользователяИБ); по причине: Пользователю недостаточно прав для выполнения операции. А на файловой работает. |
|||
5
User_Agronom
07.11.15
✎
13:18
|
(3) УстановитьПривилегированныйРежим() работает только на сервере.
Пиши в серверном модуле процедуру и вызывай её когда нужно. |
|||
6
Boudybuilder
07.11.15
✎
13:34
|
(5) В модуле объекта Документ Чек ККМ ?
Вне этого: #Если Клиент Тогда? |
|||
7
Boudybuilder
10.11.15
✎
22:02
|
Сделал в модуле документа
&НаСервере Процедура ВключитьВыключитьПривилегированныйРежим(Значение) Экспорт УстановитьПривилегированныйРежим(Значение); КонецПроцедуры И вызываю ее из модуля формы документа. Пишет что процедура не найдена. :( |
|||
8
Boudybuilder
11.11.15
✎
18:38
|
Это конец!
Пользователь = ПользователиИнформационнойБазы.НайтиПоУникальномуИдентификатору(Карта.ВладелецКарты.ИдентификаторПользователяИБ); по причине: Пользователю недостаточно прав для выполнения операции. Я уже задолбался. Сделал в серверном общем модуле процедуру. Перед этим поставил УстановитьПривилегированныйРежим(Истина); И все равно права не дает. Мне просто надо получить информационную карту, и проверить есть ли у ее владельца права администратора. |
|||
9
ice777
11.11.15
✎
18:43
|
Блин, кто-то думал права раставлял, а тут пришел ТС и дуболомным методом фигачит.
я бы выгнал тс нахрен. |
|||
10
VikingKosmo
11.11.15
✎
18:43
|
После
>> Карта = Справочники.ИнформационныеКарты.НайтиПоРеквизиту("КодКарты",Данные); 1С отказывается работать и я ее понимаю... |
|||
11
Boudybuilder
11.11.15
✎
19:01
|
Мы сделали, что неновые документы ЧекККМ форма = только просмотр.
И по вводу регистрационной карты даем возможность редактировать документ. ТолькоПросмотр= Ложь. Но карту мы ищем через внешнее событие, так как клиент снимает ее штрихкодом. Нужно найти карту, и проверить есть ли у ее владельца права административные права, то дать доступ на редактирование формы. Как иначе быть с информационными картами не знаю! Только такой вариант наверное. |
|||
12
Остап Сулейманович
11.11.15
✎
20:08
|
(11) Вы бы для начала документацию почитали что ли.
Как вы хотите что б отработало ваше вот то, что в (7) написано? " Для явного выключения привилегированного режима необходимо внутри процедуры или функции, в которой он был включен, вызвать метод с параметром Ложь столько же раз, сколько раз в этой же процедуре или функции был вызван метод с параметром Истина. Если этого сделано не было, то при возврате из процедуры/функции, в которой был включен привилегированный режим, он будет выключен автоматически (неявно). " ЦЫ(СП). Ваше "УстановитьПривилегированныйРежим(Значение)" работает ровно до слов "КонецПроцедуры". И все. |
|||
13
1sanekmaloi1
11.11.15
✎
20:32
|
Даю наводку из СП
ПользовательИнформационнойБазы .* Примечание: Доступно только пользователю с административными правами. ИМХО что и требуется тебе,вызвал в попытке смогло значит админ, выпало в исключение значит не админ |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |