Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Ограничение видимости документов  (Прочитано 23181 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Katula
Новенький

ru
Offline Offline

« : 07-06-2011 08:17 » 

Доброго времени суток! Помогите пожалуйста -создаю роль делаю для нее ограничение на чтение документа Операция бухгалтерская

 ОперацияБух ИЗ Документ.ОперацияБух КАК ОперацияБух
   ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрБухгалтерии.ЕПСБУ КАК ЕПСБУ
   ПО ОперацияБух.Ссылка = ЕПСБУ.Регистратор
ГДЕ (ЕПСБУ.СчетКт.Код = "205.31"
         ИЛИ ЕПСБУ.СчетКт.Код = "210.02"
         ИЛИ ЕПСБУ.СчетКт.Код = "401.10")
   И (ЕПСБУ.СчетДт.Код = "205.31"
         ИЛИ ЕПСБУ.СчетДт.Код = "210.02"
         ИЛИ ЕПСБУ.СчетДт.Код = "401.10")


платформа 8.2 конфигурация БУХГАЛТЕРИЯ ГОС.Учереждения 1.0.3.2
« Последнее редактирование: 07-06-2011 08:28 от Алексей1153++ » Записан
Kivals
Модератор

ca
Offline Offline
Пол: Мужской

WWW
« Ответ #1 : 07-06-2011 11:37 » new

И?
Записан
Katula
Новенький

ru
Offline Offline

« Ответ #2 : 07-06-2011 11:42 » 

при проведении документа сообщает что у пользователя не достаточно прав
Записан
Kivals
Модератор

ca
Offline Offline
Пол: Мужской

WWW
« Ответ #3 : 07-06-2011 12:10 » 

А как связано проведение документа с приведенным тобой запросом?
Записан
Katula
Новенький

ru
Offline Offline

« Ответ #4 : 07-06-2011 12:17 » 

это запрос из ограничения доступа к данным, без него документ проводится , как только  в роль добавляю  ограничение доступа к данным он документы не проводих хотя проводки соответствуют разрешенным
Записан
Kivals
Модератор

ca
Offline Offline
Пол: Мужской

WWW
« Ответ #5 : 07-06-2011 12:26 » 

Вообще-то запросы на ограничение прав (которые RLS) используют ключевое слово ТекущаяТаблица для обращения к объекту выборки, вот мой пример из живого проекта
Код:
ТекущаяТаблица ГДЕ (ТекущаяТаблица.ОтборПоАвтору = &Пользователь
ИЛИ ТекущаяТаблица.ОтборПоАвтору = ЗНАЧЕНИЕ(Справочник.Пользователи.ПустаяСсылка))
Записан
Katula
Новенький

ru
Offline Offline

« Ответ #6 : 07-06-2011 13:47 » 

Спасибо, завтра приду на работу попробую
Записан
Radistka
Помогающий

ru
Offline Offline
Пол: Женский

« Ответ #7 : 07-12-2011 04:57 » 

Апну, ибо человек не отписался, а у меня проблема аналогичная и всё ещё не могу разобраться. понимаю что видимо адресацию как-то неудачно задаю.

1C документооборот 1.1.4.1
Ограничение доступа задаю справочнику Пользователи
РегистрСведений.ПодчиненностьСотрудников имеет два измерения : Руководитель  и Подчиненный.
тип данных обоих измерений: Справочник.Пользователи
в консоли запросов всё отрабатывает на ура. начинаю пихать в ограничение доступа на роль - не видит даже самого себя. подозревала что проблема в параметре, но вроде не должен. Поле ограничения доступа к данным не выбираю, т.е. стоит <прочие поля>. пробовала выбирать "ССылка" - итог тот же.

Код:
Пользователи ИЗ Справочник.Пользователи КАК Пользователи
ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
ПодчиненностьСотрудников.Подчиненный КАК Подчиненный
ИЗ
РегистрСведений.ПодчиненностьСотрудников КАК ПодчиненностьСотрудников
ГДЕ
ПодчиненностьСотрудников.Руководитель = &ТекущийПользователь) КАК ВложенныйЗапрос
ПО Пользователи.Ссылка = ВложенныйЗапрос.Подчиненный



Добавлено через 24 минуты и 8 секунд:
пробовала до него добраться через шаблон, но чтото тоже как-то не очень.
описание шаблона прилагается:

(click to show)
// ПоЗначениямИНаборамРасширенный ( Таблица, Право, Модификатор, ПрисоединяемыеТаблицы, О, В1,П1,О1, В2,П2,О2,..., В(n), П(n), О(n)).
// №  параметра:                          1,     2,           3,                     4, 5,  6, 7, 8,  9,10,11,...,3+n*3,4+n*3,5+n*3 .
// Читается так: "ограничение доступа по наборам и значениям расширенный".
// Параметры:
//     Таблица -   Имя текущей таблицы, например "Документ.ПоступлениеТоваровИУслуг".
//     Право     - Одна из строк "Чтение", "Добавление", "Изменение", "Удаление".
//     Модификатор - изменяет шаблон.
//                 1-й модификтор - строка "НеОграничиватьДоступКГруппам" указывает
//                  безусловно выбирать группы иерархического справочника.
//                 Других модификаторов в этой версии шаблона не предусмотрено.
//     ПрисоединяемыеТаблицы - текст присоедиения дополнительных таблиц на языке запросов, например,
//                 "ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.АвансовыйОтчет.ОплатаПоставщикам КАК Т1
//                  ПО Т.Ссылка = Т1.Ссылка".
//                 Присоединение позволяет указать поля таблицы ОплатаПоставщикам, как поля основной таблицы
//                  для проверки их значений, как значений основной таблицы.
//                 Следует помнить, что при размножении строк в результате соединения, достаточно чтобы
//                  всего одна строка прошла условия проверки, т.е. результаты проверки строк объединяются по "ИЛИ".
//     О         - Начальные скобки "(".
//     В(n)     - ВидДоступа (имя предопределённого элемента ПланВидовХарактеристик.ВидыДоступа).
//                 Когда В(n) = "Условие" (или ""), тогда Р(n) содержит строку условия на языке запросов, например
//                   "Т.Автор = &ТекущийПользователь",
//                   "ТипЗначения(Т.Владелец) = Тип(Справочник.Организации)", где Т - псевдоним текущей таблицы.
//                 Когда В(n) = "ПравоЧтения" ИЛИ "ПравоДобавления" ИЛИ "ПравоИзменения",
//                   выполняется проверка наличия права на таблицу значения Т.Р(n).
//                 Когда В(n) = "Объект" (или " "), то
//                   когда есть запись зависимости прав в регистре сведений ЗависимостиПравДоступа
//                     тогда используется данные записи - проверка указанного права Т.Р(n) и/или наборов значений доступа
//                         в регистре сведений НаборыЗначенийДоступа, считываемых по ссылке Т.Р(n) для указанного ограничения права;
//                   иначе используется стандартное правило:
//                     когда Право = "Чтение" тогда выполняется проверка права чтения Т.Р(n) и наборов значений доступа
//                       в регистре сведений НаборыЗначенийДоступа, считываемых по ссылке Т.Р(n) для права чтения;
//                     когда Право = "Добавление" ИЛИ "Изменение" ИЛИ "Удаление" тогда выполняется проверка права изменения Т.Р(n)
//                       и наборов значений доступа, считываемых по ссылке Т.Р(n) для права изменения.
//     П(n)     - Поле с псевдонимом, например "Т.Организация", значение которого проверяется
//                по виду доступа, кроме случая В(n) = "Условие" (или "").
//     О(n)      - Логические операции "И", "ИЛИ" в сочетании с скобками "(", ")".
//  Примечение: максимальное количество одновременно проверяемых значений полей можно увеличить, изменив шаблон, но
// необходимо будет указывать все параметры шаблона, т.е. указывать пустые строки, когда количество полей меньше максимального.
//  Шаблон имеет структуру:
//     <Соединение по таблице1>  <Соединение по таблице2>  ... <Соединение по таблице(m)>
//     <Общая часть условий> <Условие по группе параметров 1> И/ИЛИ <Условие по группе параметров 1> И/ИЛИ ... <Условие по группе параметров(n)>
//  Пример:
//      ПоЗначениямИНаборамРасширенный("ЖурналДокументов.СкладскиеДокументы", "Чтение", "",
//      "",
//      "",
//      "Объект","Т.Ссылка","И",
//      "Объект","Т.ОсновнойДокумент","", "","","", ...)

Код:
#ПоЗначениямИНаборамРасширенный("Справочник.Пользователи",  "Чтение", "", "ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ПодчиненностьСотрудников КАК Т1
По Т.Ссылка = Т1.Подчиненный","", "","Т1.Руководитель=&ТекущийПользователь","",
"","","", "", "","", "","","","","", "", "","","","","","","","","", "","","", "","","", "","","", "","", "", "","","", "","","",  "","","", "","","")

Добавлено через 42 минуты и 57 секунд:
попробовала с ТекущаяТаблица

Код:
ТекущаяТаблица
ИЗ #ТекущаяТаблица КАК ТекущаяТаблица
ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
ПодчиненностьСотрудников.Подчиненный КАК Подчиненный
ИЗ
РегистрСведений.ПодчиненностьСотрудников КАК ПодчиненностьСотрудников
ГДЕ
ПодчиненностьСотрудников.Руководитель = &ТекущийПользователь) КАК ВложенныйЗапрос
ПО ТекущаяТаблица.Ссылка = ВложенныйЗапрос.Подчиненный

результата пока что нет

Добавлено через 20 минут и 45 секунд:
в общем это на самом деле работает, как оказалось, но с небольшими помарками: уж очень странно заполняет этот регистр документооборот.могут быть ещё ошибки где нить.
Код:
ТекущаяТаблица
ИЗ #ТекущаяТаблица КАК ТекущаяТаблица
ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
ПодчиненностьСотрудников.Подчиненный КАК Подчиненный
ИЗ
РегистрСведений.ПодчиненностьСотрудников КАК ПодчиненностьСотрудников
ГДЕ
ПодчиненностьСотрудников.Руководитель = &ТекущийПользователь Или
ПодчиненностьСотрудников.Подчиненный = &ТекущийПользователь
) КАК ВложенныйЗапрос
ПО ТекущаяТаблица.Ссылка = ВложенныйЗапрос.Подчиненный

возник вопрос: будет ли данное ограничение учитываться при работе шаблона ограничений?

Код:
#ПоЗначениямИНаборамРасширенный( "Задача.ЗадачаИсполнителя", "Чтение", "",
"",
"",
" ","Т.БизнесПроцесс","ИЛИ",
"Пользователи","Автор","ИЛИ",
"Пользователи","Исполнитель","ИЛИ",
"Пользователи","ГруппаИсполнителейЗадач","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","")



Добавлено через 8 дней, 4 часа, 51 минуту и 51 секунду:
в общем задаче красивого решения не придумала, возможно нехватает опыта, возможно ещё что-то.. если необходимо конфигурацию показать, то пришлю без проблем. задача такова:
1С Документооборот 8.2 ПРОФ
необходимо чтобы группа пользователей могли видеть только те задачи и бизнес-процессы, в которых они или кто либо из подчинённых являются авторами или исполнителями.

PS предложенный мною выше вариант конечно даёт нужный мне результат, но хотелось бы чтобы список пользователей можно было просматривать полностью. можно конечно порезать интерфейс и не трогать права, но тогда в отчётах всё равно будет выводиться информация по всем пользователям, а хотелось бы прикрыть эту лавочку.
очень прошу помощи!..
« Последнее редактирование: 15-12-2011 11:17 от Radistka » Записан
Kivals
Модератор

ca
Offline Offline
Пол: Мужской

WWW
« Ответ #8 : 15-12-2011 18:48 » 

Radistka, недавно у себя применил решение, которой тебе может помочь. Суть его в том, что создается Параметр сеанса с типом Фиксированный массив и заполняется в модуле сеанса (в твоем случае - СписокПодчиненных, заполняется сотрудником и его подчиненными), а в ограничениях доступа проверяешь на вхождения пользователя в этот параметр:
Код:
Пользователь В &СписокПодчиненных

Естественно в случае изменения структуры подчинения нужно выйти/зайти в базу.

В моем случае я использовал список филиалов (доступные филиалы заданы в регистре сведений), вот код заполнения:
Код: (1C v8)
Процедура УстановкаПараметровСеанса(ТребуемыеПараметры)
...
        Если (ТребуемыеПараметры=Неопределено) ИЛИ (ТребуемыеПараметры.Найти("ДоступныеФилиалы")<>Неопределено) Тогда
                Если ЗначениеЗаполнено(ПараметрыСеанса.Пользователь) Тогда
                        УстановитьПривилегированныйРежим(Истина);
                        ТекстЗапроса =
                          "ВЫБРАТЬ
                          |     ДоступныеФилиалы.Филиал
                          |ИЗ
                          |     РегистрСведений.ДоступныеФилиалыПользователей КАК ДоступныеФилиалы
                          |ГДЕ
                          |     (ДоступныеФилиалы.Пользователь = &Пользователь
                          |                     ИЛИ ДоступныеФилиалы.Пользователь = ЗНАЧЕНИЕ(Справочник.Пользователи.ПустаяСсылка))"
;
                        Запрос = Новый Запрос(ТекстЗапроса);
                        Запрос.Параметры.Вставить("Пользователь", ПараметрыСеанса.Пользователь);
                       
                        ДоступныеФилиалы = Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Филиал");
                        ПараметрыСеанса.ДоступныеФилиалы = Новый ФиксированныйМассив(ДоступныеФилиалы);
                        УстановитьПривилегированныйРежим(Ложь);
                КонецЕсли;
        КонецЕсли;
...
КонецПроцедуры

А вот рабочее ограничение доступа на чтение для элементов справочника с реквизитом Филиал:
Код:
ГДЕ Филиал В(&ДоступныеФилиалы)

Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines