Имя: Пароль:
1C
 
Как узнать имеет ли тек пользователь права на открытиие Документа
0 ОМЭЗ
 
06.08.08
10:26
Как узнать имеет ли тек пользователь права на открытиие Документа?
1 Serg_1960
 
06.08.08
10:50
Элементарно, Ватсон!
"снаружи": войди в Предприятие под именем пользователя и открой нужный жлкумент :о)))
"изнутри": справка СП

Глобальный контекст
ПравоДоступа (AccessRight)
Синтаксис:
ПравоДоступа(<Право>, <Объект метаданных>, <Пользователь/Роль>)
Параметры:
<Право> (обязательный)
Тип: Строка. Название права доступа. Могут быть использованы следующие значения:
Чтение (Read) - чтение;
Добавление (Insert) - добавление;
Изменение (Update) - изменение;
Удаление (Delete) - удаление;
Проведение (Posting) - проведение документов;
ОтменаПроведения (UndoPosting) - отмена проведения документов;
Просмотр (View) - просмотр;
ИнтерактивноеДобавление (InteractiveInsert) - интерактивное добавление;
Редактирование (Edit) - редактирование;
ИнтерактивнаяПометкаУдаления (InteractiveSetDeletionMark) - интерактивная пометка на удаление;
ИнтерактивноеСнятиеПометкиУдаления (InteractiveClearDeletionMark) - интерактивное снятие пометки на удаление;
ИнтерактивноеУдалениеПомеченных (InteractiveDeleteMarked) - интерактивное удаление помеченных объектов;
ИнтерактивноеПроведение (InteractivePosting) - интерактивное проведение;
ИнтерактивноеПроведениеНеОперативное (InteractivePostingRegular) - интерактивное проведение (стандартными командами форм) документа в неоперативном режиме;
ИнтерактивнаяОтменаПроведения (InteractiveUndoPosting) - интерактивная отмена проведения;
ИнтерактивноеИзменениеПроведенных (InteractiveChangePosted) - интерактивное редактирование проведенного документа. Если право не установлено, то пользователь не может проведенный документ удалить, установить пометку удаления, перепровести или сделать непроведенным. Форма такого документа открывается в режиме просмотра.
ВводПоСтроке (InputByString) - использование режима ввода по строке;
УправлениеИтогами (TotalsControl) - управление итогами регистра бухгалтерии и регистра накопления (установка периода, по который рассчитаны итоги, и пересчет итогов);
Использование (Use) - использование;
ИнтерактивноеУдаление (InteractiveDelete) - интерактивное непосредственное удаление;
Администрирование (Administration) - администрирование;
МонопольныйРежим (ExclusiveMode) - использование монопольного режима;
АктивныеПользователи (ActiveUsers) - просмотр списка активных пользователей;
ЖурналРегистрации (EventLog) - журнал регистрации;
ВнешнееСоединение (ExternalConnection) - внешнее соединение;
Automation (Automation) - использование automation;
ИнтерактивноеОткрытиеВнешнихОбработок (InteractiveOpenExtDataProcessors) - интерактивное открытие внешних обработок;
ИнтерактивноеОткрытиеВнешнихОтчетов (InteractiveOpenExtDataReports) - интерактивное открытие внешних отчетов;
Получение (Get) - получение значения, не хранящегося в базе данных;
Установка (Set) - установка значения, не сохраняемого в базе данных;
ИнтерактивнаяАктивация (InteractiveActivate) - интерактивная активация;
Старт (Start) - старт бизнес-процесса;
ИнтерактивныйСтарт (InteractiveStart) - интерактивный старт бизнес-процесса;
Выполнение (Execute) - выполнение задачи;
ИнтерактивноеВыполнение (InteractiveExecute) - интерактивное выполнение задачи;
Вывод (Output) - вывод на печать, запись и копирование в буфер обмена;
ОбновлениеКонфигурацииБазыДанных (UpdateDataBaseConfiguration) - обновление конфигурации базы данных.
<Объект метаданных> (обязательный)
2 ОМЭЗ
 
06.08.08
10:56
А как определить Роль которая относиться к документу
3 Serg_1960
 
06.08.08
11:01
А зачем тебе роль? Можно указывать пользователя:

ПравоДоступа("Чтение",НужныйДокумент,ИмяПользователя);
4 ОМЭЗ
 
06.08.08
11:06
(3)Мне нужно узнать к какой роли относиться Документ,чтоб потом с єтой роли считать ДатуЗапрета редактирования и Заблокировать Форму.Ато пользователи както умудрились перетинуть док с прошлого периода
5 Serg_1960
 
06.08.08
11:06
Я отвечал на (0). А по поводу (2), если я тебя правильно понял:
В конфигураторе двойной щелчок мыши на документе, закладка Права. Смотри и соображай :о)
6 Serg_1960
 
06.08.08
11:07
(4) Конфигурация какая?
7 ОМЭЗ
 
06.08.08
11:09
УПП(1.2) Для Украины 1С(8.1)
8 ОМЭЗ
 
06.08.08
11:18
ЭтотОбъект.Метаданные().
Почему там нету Право свойства
9 Serg_1960
 
06.08.08
11:18
Привет Украине! У Вас "там" конфигурации "чудные". Функционала незнаю. У Вас что, права по дате на роль даны?
10 ОМЭЗ
 
06.08.08
11:19
(9)Но для каждой роли можно свою дату запрета установить
Помоги с (8)
11 Serg_1960
 
06.08.08
11:19
(8) Права - это самостоятельный объект, а не свойство документа
12 ОМЭЗ
 
06.08.08
11:21
(11)А как к нему обратиться?
13 ОМЭЗ
 
06.08.08
11:26
ап
14 Serg_1960
 
06.08.08
11:30
"Права - самостоятельны объект" - извини за фигуральное выражение. Ввел Вас в заблуждение...

8) Можно, чтобы долго не копаться в СП, в конфигураторе, в режиме отладки, поставить точку останова в модуле документа (Например: в процедуре ПриЗаписи).
Потом в мониторе по выражению "ЭтотОбъект.Метаданные()" можно посмотреть что доступно и как к этому обратиться.
15 ОМЭЗ
 
06.08.08
11:41
Чтото нечего похожего не видно
16 Serg_1960
 
06.08.08
11:43
В функционале УПП для России (начиная 1.2.16.1) проверка на дату запрета изменения документов "вынесена" в отдельный функционал и проверяется при открытии формы документа. А у Вас, может быть, проверка на дату указывается в ролях пользователей. Так раньше было...
Может быть Вас больше устроит вот это:
РольДоступна (IsInRole)
Синтаксис:
РольДоступна(<Роль>)
Параметры:
<Роль> (обязательный)
Тип: Строка, ОбъектМетаданных: Роль. Название роли как она задана в конфигураторе или объект описания метаданного роли.
Возвращаемое значение:
Тип: Булево. Истина - роль доступна текущему пользователю; Ложь - в противном случае.
Описание:
Определяет доступность указанной роли текущему пользователю.
Пример:
Если Не РольДоступна("Менеджер") Тогда
   Сообщить("Просмотр заявок от покупателей не разрешен!");
КонецЕсли;
17 IronDemon
 
06.08.08
11:49
ПравоДоступа("Просмотр",ЭтотОбъект.Метаданные())
18 Serg_1960
 
06.08.08
11:52
Попробуй: в конфигураторе открой роль и для документа посмотри запрос ограничения "Изменение". Там должно быть условие по дате ограничения внесения изменений.
19 Serg_1960
 
06.08.08
11:54
(17) См. (1) Но этого мало :(
20 Serg_1960
 
06.08.08
11:56
Фразу в (15) не понял. В диалоге пиши в скобках к чему это
21 ОМЭЗ
 
06.08.08
11:56
(19)Подскажи как считать доступные роли этого документа
22 ОМЭЗ
 
06.08.08
11:57
(20)Это к (14)
23 Serg_1960
 
06.08.08
12:04
Роль/документ - отношение "один ко многим". К документу разные роли дают разный права (на чтени, на запись,...) Если проверять "от документа" - толтко по каждому праву отдельно.

Вот такая боалванка поможет?

   Для Каждого Роль Из Метаданные.Роли Цикл
       
       Если Лев(Роль.Имя, 7) = "Удалить" Тогда
           Продолжить;
       КонецЕсли;
       
       Сообщить(Роль.Имя + ":");
       
       Для Каждого Документ Из Метаданные.Документы Цикл
           
           Если ПравоДоступа("Просмотр",Документ,Роль) Тогда
               
               ТекДокумент = Документ.Синоним;
               
               ВсеПрава = "Ч" + ?(ПравоДоступа("ИнтерактивноеДобавление",Документ,Роль),"Д","") +
                   ?(ПравоДоступа("Редактирование",Документ,Роль),"Р","") +
                   ?(ПравоДоступа("ИнтерактивноеПроведение",Документ,Роль),"П","") +
                   ?(ПравоДоступа("ИнтерактивнаяОтменаПроведения",Документ,Роль),"О","");
               
               Если ВсеПрава = "Ч" Тогда
                   ВсеСлова = " - только просмотр";
               ИначеЕсли ВсеПрава = "ЧДРПО" Тогда
                   ВсеСлова = " - все права";
               ИначеЕсли ВсеПрава = "ЧПО" Тогда
                   ВсеСлова = " - только проведение";
               ИначеЕсли ВсеПрава = "ЧРПО" Тогда
                   ВсеСлова = " - редактирование и проведение";
               ИначеЕсли ВсеПрава = "ЧДР" Тогда
                   ВсеСлова = " - без права проведения";
               Иначе
                   ВсеСлова = ?(Найти(ВсеПрава,"Ч")," - чтение","") +
                              ?(Найти(ВсеПрава,"Д"),"/добавление","") +
                              ?(Найти(ВсеПрава,"Р"),"/редактирование","") +
                              ?(Найти(ВсеПрава,"П"),"/проведение","") +
                              ?(Найти(ВсеПрава,"О"),"/отмена проведения","");
               КонецЕсли;
               Сообщить("""" + ТекДокумент + """" + ВсеСлова);
           КонецЕсли;
       КонецЦикла;
   КонецЦикла;
24 Serg_1960
 
06.08.08
12:06
(23) Нашел в барахолке :) Одна из "первых" моих программок по изучению конфы :о)
25 Serg_1960
 
06.08.08
12:12
Еще нашел :) из 14 релиза УПП Смотри внимательно "хвост" запроса :о)

ТребованиеНакладная ИЗ Документ.ТребованиеНакладная КАК ТребованиеНакладная
   ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ПраваДоступаПользователейКОбъектам КАК ПраваДоступаПользователейКОбъектам
   ПО ПраваДоступаПользователейКОбъектам.ОбъектДоступа = ТребованиеНакладная.Подразделение
       И (ПраваДоступаПользователейКОбъектам.ОбластьДанных = ЗНАЧЕНИЕ(Перечисление.ОбластиДанныхОграниченияПравДоступа.ПодразделенияДанные))
       И (ПраваДоступаПользователейКОбъектам.Пользователь В (&ГруппыТекущегоПользователя))
       И (ПраваДоступаПользователейКОбъектам.Изменение)
       И (ВЫБОР
           КОГДА ТребованиеНакладная.Проведен
               ТОГДА ВЫБОР
                       КОГДА (НЕ 1 В
                                   (ВЫБРАТЬ РАЗЛИЧНЫЕ
                                       1
                                   ИЗ
                                       РегистрСведений.ГраницыЗапретаИзмененияДанных КАК ГраницыЗапретаИзмененияДанных
                                   ГДЕ
                                       ГраницыЗапретаИзмененияДанных.Организация В (ТребованиеНакладная.Организация, ЗНАЧЕНИЕ(Справочник.Организации.ПустаяСсылка))
                                       И ГраницыЗапретаИзмененияДанных.Роль = ЗНАЧЕНИЕ(Перечисление.НаборПравПользователей.ЭкономистЦеха)
                                       И ТребованиеНакладная.Дата < ГраницыЗапретаИзмененияДанных.ГраницаЗапретаИзменений))
                           ТОГДА ИСТИНА
                       ИНАЧЕ ЛОЖЬ
                   КОНЕЦ
           ИНАЧЕ ИСТИНА
       КОНЕЦ)
Независимо от того, куда вы едете — это в гору и против ветра!