| 
    
            
         
         | 
    
    
  | 
Как игнорировать "Пользователю недостаточно прав для выполнения операции" | ☑ | ||
|---|---|---|---|---|
| 
    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 
 | 
         
        Даю наводку из СП
 
        ПользовательИнформационнойБазы .* Примечание: Доступно только пользователю с административными правами. ИМХО что и требуется тебе,вызвал в попытке смогло значит админ, выпало в исключение значит не админ  | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |