|
Группа доступа 1С | ☑ | ||
---|---|---|---|---|
0
first_may
16.10.18
✎
23:48
|
Добрый вечер.
Конфигурация ЕРП, но это наверное не важно. Используется ограничение доступа на уровне записей. При этом есть типовой набор вида доступа, например Организация, Пользователи и тд. Подскажите пожалуйста, как добавить например справочник статьи движения ДС, что бы можно было ограничивать доступ к записям этого справочника? В ОпределяемыйТип.ЗначениеДоступа - он составной и в нем я добавил этот справочник. Но когда захожу в предприятие и выбираю в профиле вид доступа, то этого справочника нет. Где надо прописать, что бы он появился? |
|||
1
AlvlSpb
17.10.18
✎
00:04
|
(0) Года два три назад делал похожее в УНФ По ссылке https://my-files.ru/719elr текстовый файл. Писал и сохранил для себя на будущее. Посмотри. В ЕРП конечно модули и процедуры названы по другому, но по аналогии найти и разобраться можно
|
|||
2
rphosts
17.10.18
✎
05:06
|
(0)Покурите тему RLS. Если встроенными возможностями не настраивается в вашем случае курите так-же Расширения.
|
|||
3
Cyberhawk
17.10.18
✎
08:35
|
Документацию по нужной подсистеме БСП на ИТС тебе в помощь
|
|||
4
first_may
17.10.18
✎
09:37
|
(2) да, конечно RLS надо, но что бы до него дойти, необходимо, что бы сам новый справочник появился в виде доступа. А его там нет.
|
|||
5
AlvlSpb
17.10.18
✎
10:28
|
(4) Так в (1) почти инструкция. Пробовал разобраться?
|
|||
6
first_may
21.10.18
✎
14:45
|
(5) Да, большое спасибо. Удалось сделать так, что бы можно было в предприятии настроить ограничение. Теперь дело за тем, что бы прописать где то
//1.В Роли выбрать нужный документ и ставим ограничение на Прочие поля: #ПоЗначениям("Документ.ЗаданиеНаРаботу", "Чтение" , "", "Сотрудники", "Сотрудник", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "") |
|||
7
first_may
21.10.18
✎
15:18
|
(5) если надо ограничить например справочник статьи движения ДС, то ограничение надо ставить на справочник?
|
|||
8
AlvlSpb
21.10.18
✎
15:32
|
(7) Да. Естественно
|
|||
9
first_may
21.10.18
✎
15:58
|
(8) то есть
1 делаю роль, например ИспользованиеСтатьиДвиженияДС 2 ее использую в в профиле и назначаю пользователю 3 в самой роли на право чтение и просмотр дожен прописать ограничение Оно будет такое #ПоЗначениям("Справочник.СтатьиДвиженияДенежныхСредств", "Чтение" , "", ???", "???", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "") Так? |
|||
10
AlvlSpb
21.10.18
✎
20:19
|
(9) Не понял. Давай сначала. Что надо ограничить? какой новый вид доступа создал?
|
|||
11
first_may
23.10.18
✎
20:17
|
(10) справочник статьи движения ДС - его хочу ограничить.
Сделал 1.Определяемый тип "ЗначениеДоступа" 2.Внести изменения в общий модуль "УправлениеДоступомПереопределяемый" 3.Запустить программу с ключом обновления базы Все получилось, удалось выбрать в профиле, указать нужные статьи. Далее понимаю, надо 1 сделать роль 2 написать ограничение то есть по твоему тексту //1.В Роли выбрать нужный документ и ставим ограничение на Прочие поля: #ПоЗначениям("Документ.ЗаданиеНаРаботу", "Чтение" , "", "Сотрудники", "Сотрудник", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "") |
|||
12
first_may
23.10.18
✎
20:29
|
(10) вот дальше сообразить не могу
|
|||
13
AlvlSpb
23.10.18
✎
20:51
|
(12) Ошибка уже в (11). Не надо создавать новую роль.
Берешь существующие роль/роли который дают допуск к нужному документу или справочнику В ограничение полей пишешь этот шаблон (в твоем примере вместо Сотрудник пишешь имя созданного доступа) Или, если шаблон уже стоит в ограничении, добавляешь свой доступ. Типа #ПоЗначениям("Документ.ЗаданиеНаРаботу", "Чтение" , "", "Сотрудники", "Сотрудник", "СчетДТ", "СчетДТ", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "") |
|||
14
AlvlSpb
23.10.18
✎
20:54
|
(13) + уточнение
#ПоЗначениям("Документ.ЗаданиеНаРаботу", "Чтение" , "", "Сотрудники", "Сотрудник", "СчетаДт", "СчетДт", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "") Где СчетаДт - имя вашего доступа, СчетДт - имя поля на которое накладываем ограничение |
|||
15
first_may
23.10.18
✎
20:55
|
(13) что бы понять, допустим создаю новую роль, например
ДоступСтатьиДвиженияДС и тогда #ПоЗначениям("Справочник.СтатьиДвиженияДС", "Чтение" , "", "?????", "??????", "?????", "?????", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "") вот где ????, что надо? |
|||
16
AlvlSpb
23.10.18
✎
21:06
|
(15) Почитай расшифровку шаблона (там же в роли) Ну а если конкретика, то
#ПоЗначениям("Справочник.СтатьиДвиженияДС", "Чтение" , "", "ДоступСтатьиДвиженияДС", "ИмяПоляВДоке", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "") Если шаблон уже прописан в ограничениях, то просто добавляешь эти же две записи в существующее ограничение #ПоЗначениям("Справочник.СтатьиДвиженияДС", "Чтение" , "", "Сотрудники", "Сотрудник", "Пользователи", "Пользователь", "ДоступСтатьиДвиженияДС", "ИмяПоляВДоке", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "") |
|||
17
first_may
23.10.18
✎
21:16
|
(16) спс, завтра попробую..
|
|||
18
first_may
24.10.18
✎
20:55
|
(16) добрый вечер.
не получилось :(, пользователь все равно видит весь справочник. |
|||
19
first_may
24.10.18
✎
21:22
|
(16) во всех ролях убрал доступ к справочнику, оставил только в своей роли, в которой прописал на чтение
<Прочие поля> #ПоЗначениям("Справочник.СтатьиДвиженияДС", "Чтение" , "", "ДоступСтатьиДвиженияДС", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "") |
|||
20
AlvlSpb
24.10.18
✎
21:25
|
(18) В РЛС как, впрочем, вообще в ограничениях, действует правило: Если есть две роли и более разрешающих что-то (например, чтение какого-то справочника), то запрет действует ТОЛЬКО когда запрещено во ВСЕХ ролях. Если хотя бы в одной разрешено - разрешено во всех
|
|||
21
AlvlSpb
24.10.18
✎
21:32
|
(19) <Прочие поля>
#ПоЗначениям("Справочник.СтатьиДвиженияДС", "Чтение" , "", "ДоступСтатьиДвиженияДС", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "") НЕТ. ты так и не понял шаблон. Еще раз - читай комментарии к шаблону в конфигурации. Перевожу шаблон на обычный язык: ПоЗначениям - Ограничение на значение поля Справочник.СтатьиДвиженияДС - ограничение накладывается на справочник СтатьиДвиженияДС Чтение - ограничиваем право на Чтение Пустое значение - модификатор - просто пропускаем ДоступСтатьиДвиженияДС - Название доступа ( то что будем настраивать в группе: Разрешено все кроме или Запрещено все кроме и т.п.) ????? А ГДЕ ПОЛЕ на которое накладываем ограничение? У формы элемента справочника СтаьиДвиженияДС наверное есть поле что-то типа СтатьяДС (куда собственно подтягивается эта статья и которое мы и хотим ограничить для пользователя) Т.е. правильный шаблон: #ПоЗначениям("Справочник.СтатьиДвиженияДС", "Чтение" , "", "ДоступСтатьиДвиженияДС", "СтатьяДС", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "") |
|||
22
AlvlSpb
24.10.18
✎
21:41
|
Вообще, надо ограничить доступ к определенным статьям самого справочника или все же к каким-то документам куда подтягивается реквизит с типом СправочникСсылка.СтатьиДС?
|
|||
23
first_may
24.10.18
✎
21:44
|
(22) сначало надо, что бы пользователь открыл этот справочник и видел те записи, которые ему можно видеть через настройку групп доступа
|
|||
24
first_may
24.10.18
✎
21:46
|
я вижу, что есть справочник Склады и он используется в ограничении.. вот и пытаюсь скопировать
|
|||
25
first_may
24.10.18
✎
21:50
|
(22) вот что есть сейчас https://yadi.sk/i/TyO_9_S0-ullxQ
то есть пользователь может только читать и просматривать.. но он видит весь справочник.. все элементы.. |
|||
26
first_may
24.10.18
✎
21:53
|
пользователь входит в группу, у которой настроено ограничение
https://yadi.sk/i/MwtfdMXmHsMG7A |
|||
27
first_may
24.10.18
✎
22:07
|
||||
28
first_may
24.10.18
✎
22:08
|
||||
29
first_may
24.10.18
✎
22:10
|
(21) Т.е. правильный шаблон:
#ПоЗначениям("Справочник.СтатьиДвиженияДС", "Чтение" , "", "ДоступСтатьиДвиженияДС", "СтатьяДС", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "") а в шаблоне #ПоЗначениям что должно быть? |
|||
30
AlvlSpb
24.10.18
✎
22:13
|
(29) Что значит "в шаблоне #ПоЗначениям что должно быть?
≡ »" ваш код это же и есть шаблон по значениям. Только для самого справочника вот так: #ПоЗначениям("Справочник.СтатьиДвиженияДС", "Чтение" , "", "ДоступСтатьиДвиженияДС", "Ссылка", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "") |
|||
31
AlvlSpb
24.10.18
✎
22:16
|
(30) Если более скрупулезно, то надо еще включить модификатор для групп (а вдруг захотите ограничить целую группу)
#ПоЗначениям("Справочник.СтатьиДвиженияДС", "Чтение" , "НеОграничиватьДоступКГруппам", "ДоступСтатьиДвиженияДС", "Ссылка", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "") |
|||
32
first_may
24.10.18
✎
22:33
|
||||
33
first_may
24.10.18
✎
22:45
|
#ПоЗначениям - вот тут надо что то наверное написать
|
|||
34
AlvlSpb
24.10.18
✎
22:54
|
(33) Этого достаточно в данной роли. Надо найти ВСЕ роли где указан доступ к этому справочнику и сделать то же самое
|
|||
35
first_may
24.10.18
✎
23:04
|
(34) а у пользователя именно эта роль и все.
|
|||
36
AlvlSpb
24.10.18
✎
23:08
|
(35) Странно что только одна роль, оооочень странно. Ну так делай для этой роли и проверяй работу
|
|||
37
first_may
24.10.18
✎
23:36
|
смотрю справочник Склады, доступ к нему настроено через роль ЧтениеНормативноСправочнойИнформации и в ней написано
#ПоЗначениям( "Справочник.Склады","Чтение","НеОграничиватьДоступКГруппам", "Склады","Ссылка", "","", "","", "","", "","", "","", "","", "","", "","", "","", "","", "","", "","", "","", "","", "","" ) а далее смотрю шаблон ограничений ПоЗначениям и тут много чего написано // ПоЗначениям(Таблица, -, Модификатор, В1,П1, В2,П2, ..., В(n), П(n)). // № параметра: 1, 2, 3, 4, 5, 6, 7, ..., 2+n*2,3+n*2. // Читается так: "ограничение доступа по значениям". // Параметры: // Таблица - Имя текущей таблицы, например "Документ.ПоступлениеТоваровИУслуг". // Модификатор - изменяет шаблон. // 1-й модификатор - строка "НеОграничиватьДоступКГруппам" указывает // безусловно выбирать группы иерархического справочника. // Других модификаторов в этой версии шаблона не предусмотрено. // В(n) - Вид доступа - имя вида доступа, например, "Организации". Для полей составного типа, с целью повышения // производительности, лучше указать несколько имен, например, "Организации,ГруппыФизическихЛиц", // чем использовать несколько блоков параметров, с одним и тем же именем поля. // Специальные виды доступа "Условие", "НастройкиПрав", "ПравоЧтения", "ПравоИзменения", // "ПравоЧтенияПоИдентификатору", "ПравоИзмененияПоИдентификатору" можно использовать только отдельно. // Когда В(n) = "Условие" (или ""), тогда П(n) содержит строку условия на языке запросов, например // "Т.Автор = &АвторизованныйПользователь", // "ТИПЗНАЧЕНИЯ(Т.Владелец) = ТИП(Справочник.Организации)", где Т - псевдоним текущей таблицы. // Когда В(n) = "ПравоЧтения" Или "ПравоИзменения", // выполняется проверка наличия права на таблицу значения Т.П(n). // Когда В(n) = "ПравоЧтенияПоИдентификатору" или "ПравоИзмененияПоИдентификатору", // выполняется проверка наличия права на таблицу по идентификатору в значении Т.П(n). // П(n) - Поле проверяемого значения, кроме случая В(n) = "Условие" (или ""). // Примечение: максимальное количество одновременно проверяемых значений полей можно увеличить, изменив шаблон, но // необходимо будет указывать все параметры шаблона, т.е. указывать пустые строки, когда количество полей меньше максимального. // Шаблон имеет структуру: // <Общая часть условий> <Условие по группе параметров 1> И <Условие по группе параметров 2> И ... <Условие по группе параметров(n)> // Пример: // ПоЗначениям("Документ.ПоступлениеТоваровИУслуг", "", "", // "Организации","Организация", // "Поставщики","Контрагент", "","", ...) #Если &ОграничениеДоступаНаУровнеЗаписейВключено = "" #Тогда // Информационная база заблокирована для обновления. ГДЕ ЛОЖЬ #Иначе // Проверка правильности параметра Право. #Если Не ("#Параметр(2)" = "Чтение" Или "#Параметр(2)" = "Добавление" Или "#Параметр(2)" = "Изменение" Или "#Параметр(2)" = "Удаление" Или "#Параметр(2)" = "") Или #ИмяТекущегоПраваДоступа <> "Чтение" И "#Параметр(2)" = "Чтение" Или #ИмяТекущегоПраваДоступа = "Чтение" И "#Параметр(2)" <> "Чтение" И "#Параметр(2)" <> "" #Тогда // Когда параметр задан неверно, вставляется строка, чтобы вызвать ошибку сборки ограничения доступа. НеверноеПраво: #Параметр(2) #КонецЕсли // Проверка правильности параметра ИмяТаблицы. #Если "#Параметр(1)" <> #ИмяТекущейТаблицы #Тогда // Когда параметр задан неверно, вставляется строка, чтобы вызвать ошибку сборки ограничения доступа. НеверноеИмяТекущейТаблицы: "#Параметр(1)" #КонецЕсли // Проверка правильности параметра Модификатор. #Если Не ("#Параметр(3)" = "НеОграничиватьДоступКГруппам" Или "#Параметр(3)" = "") #Тогда // Когда параметр задан неверно, вставляется строка, чтобы вызвать ошибку сборки ограничения доступа. НеверныйМодификатор: #Параметр(3) #КонецЕсли // Общая проверка использования ограничений доступа на уровне записей и // проверка использования хотя бы одного ограничения из указанных видов доступа. #Если Не ( Истина И ("#Параметр(4)" = "" И "#Параметр(5)" = "" Или Не &ОграничениеДоступаНаУровнеЗаписейВключено И Не СтрСодержит(",Объект, ,ПравоЧтения,ПравоИзменения,ПравоЧтенияПоИдентификатору,ПравоИзмененияПоИдентификатору,", ",#Параметр(4),") Или &ВидыДоступаСОтключеннымИспользованием = "Все" И Не СтрСодержит(",Условие,,НастройкиПрав,Объект, ,ПравоЧтения,ПравоИзменения,ПравоЧтенияПоИдентификатору,ПравоИзмененияПоИдентификатору,", ",#Параметр(4),") Или СтрСодержит(&ВидыДоступаСОтключеннымИспользованием, ",#Параметр(4),")) И ("#Параметр(6)" = "" И "#Параметр(7)" = "" Или Не &ОграничениеДоступаНаУровнеЗаписейВключено И Не СтрСодержит(",Объект, ,ПравоЧтения,ПравоИзменения,ПравоЧтенияПоИдентификатору,ПравоИзмененияПоИдентификатору,", ",#Параметр(6),") Или &ВидыДоступаСОтключеннымИспользованием = "Все" И Не СтрСодержит(",Условие,,НастройкиПрав,Объект, ,ПравоЧтения,ПравоИзменения,ПравоЧтенияПоИдентификатору,ПравоИзмененияПоИдентификатору,", ",#Параметр(6),") Или СтрСодержит(&ВидыДоступаСОтключеннымИспользованием, ",#Параметр(6),")) И ("#Параметр(8)" = "" И "#Параметр(9)" = "" Или Не &ОграничениеДоступаНаУровнеЗаписейВключено И Не СтрСодержит(",Объект, ,ПравоЧтения,ПравоИзменения,ПравоЧтенияПоИдентификатору,ПравоИзмененияПоИдентификатору,", ",#Параметр(8),") Или &ВидыДоступаСОтключеннымИспользованием = "Все" И Не СтрСодержит(",Условие,,НастройкиПрав,Объект, ,ПравоЧтения,ПравоИзменения,ПравоЧтенияПоИдентификатору,ПравоИзмененияПоИдентификатору,", ",#Параметр(8),") Или СтрСодержит(&ВидыДоступаСОтключеннымИспользованием, ",#Параметр(8),")) И ("#Параметр(10)" = "" И "#Параметр(11)" = "" Или Не &ОграничениеДоступаНаУровнеЗаписейВключено И Не СтрСодержит(",Объект, ,ПравоЧтения,ПравоИзменения,ПравоЧтенияПоИдентификатору,ПравоИзмененияПоИдентификатору,", ",#Параметр(10),") Или &ВидыДоступаСОтключеннымИспользованием = "Все" И Не СтрСодержит(",Условие,,НастройкиПрав,Объект, ,ПравоЧтения,ПравоИзменения,ПравоЧтенияПоИдентификатору,ПравоИзмененияПоИдентификатору,", ",#Параметр(10),") Или СтрСодержит(&ВидыДоступаСОтключеннымИспользованием, ",#Параметр(10),")) И ("#Параметр(12)" = "" И "#Параметр(13)" = "" Или Не &ОграничениеДоступаНаУровнеЗаписейВключено И Не СтрСодержит(",Объект, ,ПравоЧтения,ПравоИзменения,ПравоЧтенияПоИдентификатору,ПравоИзмененияПоИдентификатору,", ",#Параметр(12),") Или &ВидыДоступаСОтключеннымИспользованием = "Все" И Не СтрСодержит(",Условие,,НастройкиПрав,Объект, ,ПравоЧтения,ПравоИзменения,ПравоЧтенияПоИдентификатору,ПравоИзмененияПоИдентификатору,", ",#Параметр(12),") Или СтрСодержит(&ВидыДоступаСОтключеннымИспользованием, ",#Параметр(12),")) И ("#Параметр(14)" = "" И "#Параметр(15)" = "" Или Не &ОграничениеДоступаНаУровнеЗаписейВключено И Не СтрСодержит(",Объект, ,ПравоЧтения,ПравоИзменения,ПравоЧтенияПоИдентификатору,ПравоИзмененияПоИдентификатору,", ",#Параметр(14),") Или &ВидыДоступаСОтключеннымИспользованием = "Все" И Не СтрСодержит(",Условие,,НастройкиПрав,Объект, ,ПравоЧтения,ПравоИзменения,ПравоЧтенияПоИдентификатору,ПравоИзмененияПоИдентификатору,", ",#Параметр(14),") Или СтрСодержит(&ВидыДоступаСОтключеннымИспользованием, ",#Параметр(14),")) И ("#Параметр(16)" = "" И "#Параметр(17)" = "" Или Не &ОграничениеДоступаНаУровнеЗаписейВключено И Не СтрСодержит(",Объект, ,ПравоЧтения,ПравоИзменения,ПравоЧтенияПоИдентификатору,ПравоИзмененияПоИдентификатору,", ",#Параметр(16),") Или &ВидыДоступаСОтключеннымИспользованием = "Все" И Не СтрСодержит(",Условие,,НастройкиПрав,Объект, ,ПравоЧтения,ПравоИзменения,ПравоЧтенияПоИдентификатору,ПравоИзмененияПоИдентификатору,", ",#Параметр(16),") Или СтрСодержит(&ВидыДоступаСОтключеннымИспользованием, ",#Параметр(16),")) И ("#Параметр(18)" = "" И "#Параметр(19)" = "" Или Не &ОграничениеДоступаНаУровнеЗаписейВключено И Не СтрСодержит(",Объект, ,ПравоЧтения,ПравоИзменения,ПравоЧтенияПоИдентификатору,ПравоИзмененияПоИдентификатору,", ",#Параметр(18),") Или &ВидыДоступаСОтключеннымИспользованием = "Все" И Не СтрСодержит(",Условие,,НастройкиПрав,Объект, ,ПравоЧтения,ПравоИзменения,ПравоЧтенияПоИдентификатору,ПравоИзмененияПоИдентификатору,", ",#Параметр(18),") Или СтрСодержит(&ВидыДоступаСОтключеннымИспользованием, ",#Параметр(18),")) И ("#Параметр(20)" = "" И "#Параметр(21)" = "" Или Не &ОграничениеДоступаНаУровнеЗаписейВключено И Не СтрСодержит(",Объект, ,ПравоЧтения,ПравоИзменения,ПравоЧтенияПоИдентификатору,ПравоИзмененияПоИдентификатору,", ",#Параметр(20),") Или &ВидыДоступаСОтключеннымИспользованием = "Все" И Не СтрСодержит(",Условие,,НастройкиПрав,Объект, ,ПравоЧтения,ПравоИзменения,ПравоЧтенияПоИдентификатору,ПравоИзмененияПоИдентификатору,", ",#Параметр(20),") Или СтрСодержит(&ВидыДоступаСОтключеннымИспользованием, ",#Параметр(20),")) И ("#Параметр(22)" = "" И "#Параметр(23)" = "" Или Не &ОграничениеДоступаНаУровнеЗаписейВключено И Не СтрСодержит(",Объект, ,ПравоЧтения,ПравоИзменения,ПравоЧтенияПоИдентификатору,ПравоИзмененияПоИдентификатору,", ",#Параметр(22),") Или &ВидыДоступаСОтключеннымИспользованием = "Все" И Не СтрСодержит(",Условие,,НастройкиПрав,Объект, ,ПравоЧтения,ПравоИзменения,ПравоЧтенияПоИдентификатору,ПравоИзмененияПоИдентификатору,", ",#Параметр(22),") Или СтрСодержит(&ВидыДоступаСОтключеннымИспользованием, ",#Параметр(22),")) И ("#Параметр(24)" = "" И "#Параметр(25)" = "" Или Не &ОграничениеДоступаНаУровнеЗаписейВключено И Не СтрСодержит(",Объект, ,ПравоЧтения,ПравоИзменения,ПравоЧтенияПоИдентификатору,ПравоИзмененияПоИдентификатору,", ",#Параметр(24),") Или &ВидыДоступаСОтключеннымИспользованием = "Все" И Не СтрСодержит(",Условие,,НастройкиПрав,Объект, ,ПравоЧтения,ПравоИзменения,ПравоЧтенияПоИдентификатору,ПравоИзмененияПоИдентификатору,", ",#Параметр(24),") Или СтрСодержит(&ВидыДоступаСОтключеннымИспользованием, ",#Параметр(24),")) И ("#Параметр(26)" = "" И "#Параметр(27)" = "" Или Не &ОграничениеДоступаНаУровнеЗаписейВключено И Не СтрСодержит(",Объект, ,ПравоЧтения,ПравоИзменения,ПравоЧтенияПоИдентификатору,ПравоИзмененияПоИдентификатору,", ",#Параметр(26),") Или &ВидыДоступаСОтключеннымИспользованием = "Все" И Не СтрСодержит(",Условие,,НастройкиПрав,Объект, ,ПравоЧтения,ПравоИзменения,ПравоЧтенияПоИдентификатору,ПравоИзмененияПоИдентификатору,", ",#Параметр(26),") Или СтрСодержит(&ВидыДоступаСОтключеннымИспользованием, ",#Параметр(26),")) И ("#Параметр(28)" = "" И "#Параметр(29)" = "" Или Не &ОграничениеДоступаНаУровнеЗаписейВключено И Не СтрСодержит(",Объект, ,ПравоЧтения,ПравоИзменения,ПравоЧтенияПоИдентификатору,ПравоИзмененияПоИдентификатору,", ",#Параметр(28),") Или &ВидыДоступаСОтключеннымИспользованием = "Все" И Не СтрСодержит(",Условие,,НастройкиПрав,Объект, ,ПравоЧтения,ПравоИзменения,ПравоЧтенияПоИдентификатору,ПравоИзмененияПоИдентификатору,", ",#Параметр(28),") Или СтрСодержит(&ВидыДоступаСОтключеннымИспользованием, ",#Параметр(28),")) И ("#Параметр(30)" = "" И "#Параметр(31)" = "" Или Не &ОграничениеДоступаНаУровнеЗаписейВключено И Не СтрСодержит(",Объект, ,ПравоЧтения,ПравоИзменения,ПравоЧтенияПоИдентификатору,ПравоИзмененияПоИдентификатору,", ",#Параметр(30),") Или &ВидыДоступаСОтключеннымИспользованием = "Все" И Не СтрСодержит(",Условие,,НастройкиПрав,Объект, ,ПравоЧтения,ПравоИзменения,ПравоЧтенияПоИдентификатору,ПравоИзмененияПоИдентификатору,", ",#Параметр(30),") Или СтрСодержит(&ВидыДоступаСОтключеннымИспользованием, ",#Параметр(30),")) И ("#Параметр(32)" = "" И "#Параметр(33)" = "" Или Не &ОграничениеДоступаНаУровнеЗаписейВключено И Не СтрСодержит(",Объект, ,ПравоЧтения,ПравоИзменения,ПравоЧтенияПоИдентификатору,ПравоИзмененияПоИдентификатору,", ",#Параметр(32),") Или &ВидыДоступаСОтключеннымИспользованием = "Все" И Не СтрСодержит(",Условие,,НастройкиПрав,Объект, ,ПравоЧтения,ПравоИзменения,ПравоЧтенияПоИдентификатору,ПравоИзмененияПоИдентификатору,", ",#Параметр(32),") Или СтрСодержит(&ВидыДоступаСОтключеннымИспользованием, ",#Параметр(32),")) И ("#Параметр(34)" = "" И "#Параметр(35)" = "" Или Не &ОграничениеДоступаНаУровнеЗаписейВключено И Не СтрСодержит(",Объект, ,ПравоЧтения,ПравоИзменения,ПравоЧтенияПоИдентификатору,ПравоИзмененияПоИдентификатору,", ",#Параметр(34),") Или &ВидыДоступаСОтключеннымИспользованием = "Все" И Не СтрСодержит(",Условие,,НастройкиПрав,Объект, ,ПравоЧтения,ПравоИзменения,ПравоЧтенияПоИдентификатору,ПравоИзмененияПоИдентификатору,", ",#Параметр(34),") Или СтрСодержит(&ВидыДоступаСОтключеннымИспользованием, ",#Параметр(34),")) ) #Тогда Т ГДЕ // Т - псевдоним текущей таблицы (выбран коротким, чтобы сократить количество символов в тексте параметра-условия на языке запросов). ИСТИНА В ( // Проверка права пользователя на текущую таблицу в целом. // Права на таблицы формируются по составу ролей профиля группы доступа. ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА ИЗ Справочник.ИдентификаторыОбъектовМетаданных КАК СвойстваТекущейТаблицы ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.ГруппыДоступа КАК ГруппыДоступа ПО СвойстваТекущейТаблицы.ПолноеИмя = "#Параметр(1)" И ИСТИНА В ( ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА ИЗ РегистрСведений.ТаблицыГруппДоступа КАК ТаблицыГруппДоступа ГДЕ ТаблицыГруппДоступа.Таблица = СвойстваТекущейТаблицы.Ссылка И ТаблицыГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка #Если Не #ИмяТекущегоПраваДоступа = "Чтение" #Тогда И ТаблицыГруппДоступа.Изменение #КонецЕсли ) И ГруппыДоступа.Ссылка В ( ВЫБРАТЬ ГруппыДоступаПользователи.Ссылка КАК ГруппаДоступа ИЗ Справочник.ГруппыДоступа.Пользователи КАК ГруппыДоступаПользователи ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей ПО СоставыГруппПользователей.Пользователь = &АвторизованныйПользователь И СоставыГруппПользователей.ГруппаПользователей = ГруппыДоступаПользователи.Пользователь ) ГДЕ // Безусловная выборка групп в иерархическом объекте метаданных (если нужно). #Если "#Параметр(3)" = "НеОграничиватьДоступКГруппам" #Тогда Т.ЭтоГруппа ИЛИ #КонецЕсли ( // Поиск значений заданных полей в разрешенных значениях групп доступа (пользователей). //// Проверка значения поля группы параметров 1. #Если &ОграничениеДоступаНаУровнеЗаписейВключено И ("#Параметр(4)" = "Условие" Или "#Параметр(4)" = "") #Тогда // Когда имя вида доступа "Условие" (или ""), тогда вместо имени поля задано условие. ( #Параметр(5) ) #ИначеЕсли "#Параметр(4)" = "ПравоЧтения" Или "#Параметр(4)" = "ПравоИзменения" #Тогда Т.#Параметр(5) <> НЕОПРЕДЕЛЕНО И ИСТИНА В ( // Проверка права пользователя на таблицу Значения, установленного в поле. ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА ИЗ РегистрСведений.ТаблицыГруппДоступа КАК ТаблицыГруппДоступаПроверкаПрава ГДЕ ТаблицыГруппДоступаПроверкаПрава.ГруппаДоступа = ГруппыДоступа.Ссылка И ТИПЗНАЧЕНИЯ(ТаблицыГруппДоступаПроверкаПрава.ТипТаблицы) = ТИПЗНАЧЕНИЯ(Т.#Параметр(5)) #Если Не "#Параметр(4)" = "ПравоЧтения" #Тогда И ТаблицыГруппДоступаПроверкаПрава.Изменение #КонецЕсли ) #ИначеЕсли "#Параметр(4)" = "ПравоЧтенияПоИдентификатору" Или "#Параметр(4)" = "ПравоИзмененияПоИдентификатору" #Тогда ИСТИНА В ( // Проверка права пользователя на таблицу, идентификатор которой указан в Значении, установленном в поле. ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА ИЗ РегистрСведений.ТаблицыГруппДоступа КАК ТаблицыГруппДоступаПроверкаПрава ГДЕ ТаблицыГруппДоступаПроверкаПрава.ГруппаДоступа = ГруппыДоступа.Ссылка И ТаблицыГруппДоступаПроверкаПрава.Таблица = Т.#Параметр(5) #Если Не "#Параметр(4)" = "ПравоЧтенияПоИдентификатору" #Тогда И ТаблицыГруппДоступаПроверкаПрава.Изменение #КонецЕсли ) #ИначеЕсли Не &ОграничениеДоступаНаУровнеЗаписейВключено #Тогда ИСТИНА // Группа параметров отключена. #ИначеЕсли "#Параметр(4)" = "НастройкиПрав" #Тогда ( ИСТИНА В // Проверка, что пользователю или какой-нибудь группе пользователя право разрешено ( ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА ИЗ РегистрСведений.НастройкиПравОбъектов КАК НастройкиПрав ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НаследованиеНастроекПравОбъектов КАК НаследованиеНастроек ПО НаследованиеНастроек.Объект = Т.#Параметр(5) И НастройкиПрав.Объект = НаследованиеНастроек.Родитель #Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда И НаследованиеНастроек.УровеньИспользования < НастройкиПрав.УровеньРазрешенияЧтения #Иначе #Если СтрСодержит(&ТаблицыСОтдельнымиНастройкамиПрав, "|#Параметр(1);") #Тогда И НастройкиПрав.Таблица = СвойстваТекущейТаблицы.Ссылка #Иначе И НастройкиПрав.Таблица = ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка) #КонецЕсли И НаследованиеНастроек.УровеньИспользования < НастройкиПрав.УровеньРазрешенияИзменения #КонецЕсли ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей ПО СоставыГруппПользователей.Пользователь = &АвторизованныйПользователь И СоставыГруппПользователей.ГруппаПользователей = НастройкиПрав.Пользователь ) И НЕ ЛОЖЬ В // Проверка, что пользователю или какой-нибудь группе пользователя право запрещено. ( ВЫБРАТЬ ПЕРВЫЕ 1 ЛОЖЬ ИЗ РегистрСведений.НастройкиПравОбъектов КАК НастройкиПрав ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НаследованиеНастроекПравОбъектов КАК НаследованиеНастроек ПО НаследованиеНастроек.Объект = Т.#Параметр(5) И НастройкиПрав.Объект = НаследованиеНастроек.Родитель #Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда И НаследованиеНастроек.УровеньИспользования < НастройкиПрав.УровеньЗапрещенияЧтения #Иначе #Если СтрСодержит(&ТаблицыСОтдельнымиНастройкамиПрав, "|#Параметр(1);") #Тогда И НастройкиПрав.Таблица = СвойстваТекущейТаблицы.Ссылка #Иначе И НастройкиПрав.Таблица = ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка) #КонецЕсли И НаследованиеНастроек.УровеньИспользования < НастройкиПрав.УровеньЗапрещенияИзменения #КонецЕсли ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей ПО СоставыГруппПользователей.Пользователь = &АвторизованныйПользователь И СоставыГруппПользователей.ГруппаПользователей = НастройкиПрав.Пользователь ) ) #ИначеЕсли Не СтрСодержит(&ВсеВидыДоступаКромеСпециальных, ",#Параметр(4),") #Тогда // Когда параметр задан неверно, вставляется строка, чтобы вызвать ошибку сборки ограничения доступа. #Если СтрСодержит("#Параметр(4)", ",") #Тогда НеверныйВидДоступа: "#Параметр(4)" - "Список имен видов доступа не найден" #Иначе НеверныйВидДоступа: "#Параметр(4)" - "Имя вида доступа не найдено" #КонецЕсли #ИначеЕсли &ВидыДоступаСОтключеннымИспользованием <> "Все" И Не СтрСодержит(&ВидыДоступаСОтключеннымИспользованием, ",#Параметр(4),") #Тогда ( ЕСТЬNULL(Т.#Параметр(5), НЕОПРЕДЕЛЕНО) <> НЕОПРЕДЕЛЕНО И #Если (Не СтрСодержит(&ВидыДоступаСОтключеннымИспользованием, ",Пользователи,") И СтрСодержит(",#Параметр(4),", ",Пользователи,")) Или (Не СтрСодержит(&ВидыДоступаСОтключеннымИспользованием, ",ВнешниеПользователи,") И СтрСодержит(",#Параметр(4),", ",ВнешниеПользователи,")) #Тогда НЕ ( НЕ ИСТИНА В ( ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА ИЗ РегистрСведений.ГруппыЗначенийДоступа КАК ГруппыЗначенийДоступа ГДЕ ГруппыЗначенийДоступа.ЗначениеДоступа = Т.#Параметр(5) И ГруппыЗначенийДоступа.ГруппаЗначенийДоступа = &АвторизованныйПользователь ) И НЕ #Иначе ( #КонецЕсли ВЫБОР КОГДА ИСТИНА В ( #Если СтрСодержит(&ВидыДоступаБезГруппДляЗначенияДоступа, ",#Параметр(4),") #Тогда ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения ГДЕ Значения.ГруппаДоступа = ГруппыДоступа.Ссылка И Значения.ЗначениеДоступа = Т.#Параметр(5) #ИначеЕсли "Т.#Параметр(5)" = "Т.Ссылка" И "#Параметр(4)" <> "Пользователи" И "#Параметр(4)" <> "ВнешниеПользователи" #Тогда #Если СтрСодержит("#Параметр(4)", ",") #Тогда // Когда параметр задан неверно, вставляется строка, чтобы вызвать ошибку сборки ограничения доступа. НеверныйВидДоступа: "#Параметр(4)" - "При проверке таблицы значения доступа можно указывать только один вид доступа" #ИначеЕсли СтрСодержит(&ВидыДоступаСОднойГруппойДляЗначенияДоступа, ",#Параметр(4),") #Тогда ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения ГДЕ Значения.ГруппаДоступа = ГруппыДоступа.Ссылка И Значения.ЗначениеДоступа = Т.ГруппаДоступа #Иначе // Значения доступа, для которых можно указать несколько групп значений доступа. ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения ВНУТРЕННЕЕ СОЕДИНЕНИЕ #Параметр(1).ГруппыДоступа КАК ГруппыЗначений ПО Значения.ГруппаДоступа = ГруппыДоступа.Ссылка И Значения.ЗначениеДоступа = ГруппыЗначений.ГруппаДоступа И ГруппыЗначений.Ссылка = Т.#Параметр(5) #КонецЕсли #Иначе ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ГруппыЗначенийДоступа КАК ГруппыЗначений ПО Значения.ГруппаДоступа = ГруппыДоступа.Ссылка И Значения.ЗначениеДоступа = ГруппыЗначений.ГруппаЗначенийДоступа И ГруппыЗначений.ЗначениеДоступа = Т.#Параметр(5) #КонецЕсли ) ТОГДА ИСТИНА ИНАЧЕ ЛОЖЬ КОНЕЦ = ВЫБОР КОГДА ИСТИНА В ( ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА ИЗ РегистрСведений.ЗначенияГруппДоступаПоУмолчанию КАК ЗначенияПоУмолчанию ГДЕ ЗначенияПоУмолчанию.ГруппаДоступа = ГруппыДоступа.Ссылка И ТИПЗНАЧЕНИЯ(ЗначенияПоУмолчанию.ТипЗначенийДоступа) = ТИПЗНАЧЕНИЯ(Т.#Параметр(5)) И ЗначенияПоУмолчанию.ВсеРазрешены = ЛОЖЬ ) ТОГДА ИСТИНА ИНАЧЕ ЛОЖЬ КОНЕЦ ) ) #Иначе ИСТИНА #КонецЕсли //// Проверка значения поля группы параметров 2. #Если "#Параметр(6)" = "" И "#Параметр(7)" = "" #Тогда // Группа параметров не используется. #ИначеЕсли &ОграничениеДоступаНаУровнеЗаписейВключено И ("#Параметр(6)" = "Условие" Или "#Параметр(6)" = "") #Тогда // Когда имя вида доступа "Условие" (или ""), тогда вместо имени поля задано условие. И ( #Параметр(7) ) #ИначеЕсли "#Параметр(6)" = "ПравоЧтения" Или "#Параметр(6)" = "ПравоИзменения" #Тогда И Т.#Параметр(7) <> НЕОПРЕДЕЛЕНО И ИСТИНА В ( // Проверка права пользователя на таблицу Значения, установленного в поле. ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА ИЗ РегистрСведений.ТаблицыГруппДоступа КАК ТаблицыГруппДоступаПроверкаПрава ГДЕ ТаблицыГруппДоступаПроверкаПрава.ГруппаДоступа = ГруппыДоступа.Ссылка И ТИПЗНАЧЕНИЯ(ТаблицыГруппДоступаПроверкаПрава.ТипТаблицы) = ТИПЗНАЧЕНИЯ(Т.#Параметр(7)) #Если Не "#Параметр(6)" = "ПравоЧтения" #Тогда И ТаблицыГруппДоступаПроверкаПрава.Изменение #КонецЕсли ) #ИначеЕсли "#Параметр(6)" = "ПравоЧтенияПоИдентификатору" Или "#Параметр(6)" = "ПравоИзмененияПоИдентификатору" #Тогда ИСТИНА В ( // Проверка права пользователя на таблицу, идентификатор которой указан в Значении, установленном в поле. ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА ИЗ РегистрСведений.ТаблицыГруппДоступа КАК ТаблицыГруппДоступаПроверкаПрава ГДЕ ТаблицыГруппДоступаПроверкаПрава.ГруппаДоступа = ГруппыДоступа.Ссылка И ТаблицыГруппДоступаПроверкаПрава.Таблица = Т.#Параметр(7) #Если Не "#Параметр(6)" = "ПравоЧтенияПоИдентификатору" #Тогда И ТаблицыГруппДоступаПроверкаПрава.Изменение #КонецЕсли ) #ИначеЕсли Не &ОграничениеДоступаНаУровнеЗаписейВключено #Тогда // Группа параметров отключена. #ИначеЕсли "#Параметр(6)" = "НастройкиПрав" #Тогда И ( ИСТИНА В // Проверка, что пользователю или какой-нибудь группе пользователя право разрешено ( ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА ИЗ РегистрСведений.НастройкиПравОбъектов КАК НастройкиПрав ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НаследованиеНастроекПравОбъектов КАК НаследованиеНастроек ПО НаследованиеНастроек.Объект = Т.#Параметр(7) И НастройкиПрав.Объект = НаследованиеНастроек.Родитель #Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда И НаследованиеНастроек.УровеньИспользования < НастройкиПрав.УровеньРазрешенияЧтения #Иначе #Если СтрСодержит(&ТаблицыСОтдельнымиНастройкамиПрав, "|#Параметр(1);") #Тогда И НастройкиПрав.Таблица = СвойстваТекущейТаблицы.Ссылка #Иначе И НастройкиПрав.Таблица = ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка) #КонецЕсли И НаследованиеНастроек.УровеньИспользования < НастройкиПрав.УровеньРазрешенияИзменения #КонецЕсли ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей ПО СоставыГруппПользователей.Пользователь = &АвторизованныйПользователь И СоставыГруппПользователей.ГруппаПользователей = НастройкиПрав.Пользователь ) И НЕ ЛОЖЬ В // Проверка, что пользователю или какой-нибудь группе пользователя право запрещено. ( ВЫБРАТЬ ПЕРВЫЕ 1 ЛОЖЬ ИЗ РегистрСведений.НастройкиПравОбъектов КАК НастройкиПрав ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НаследованиеНастроекПравОбъектов КАК НаследованиеНастроек ПО НаследованиеНастроек.Объект = Т.#Параметр(7) И НастройкиПрав.Объект = НаследованиеНастроек.Родитель #Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда И НаследованиеНастроек.УровеньИспользования < НастройкиПрав.УровеньЗапрещенияЧтения #Иначе #Если СтрСодержит(&ТаблицыСОтдельнымиНастройкамиПрав, "|#Параметр(1);") #Тогда И НастройкиПрав.Таблица = СвойстваТекущейТаблицы.Ссылка #Иначе И НастройкиПрав.Таблица = ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка) #КонецЕсли И НаследованиеНастроек.УровеньИспользования < НастройкиПрав.УровеньЗапрещенияИзменения #КонецЕсли ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей ПО СоставыГруппПользователей.Пользователь = &АвторизованныйПользователь И СоставыГруппПользователей.ГруппаПользователей = Н |
|||
38
first_may
24.10.18
✎
23:36
|
я про это и говорю, что надо мне такое же писать?
|
|||
39
AlvlSpb
24.10.18
✎
23:42
|
(38) НИЧЕГО не надо писать! Все уже написал! Это и есть шаблон. Если упрощенно: Выполняется текст шаблона (то что ты скопировал и опубликовал), а то что пишешь в ограничениях - это параметры и условия запросов что в шаблоне
|
|||
40
AlvlSpb
24.10.18
✎
23:54
|
(39) + к (38) для понимания
#ПоЗначениям - это и есть Команда на выполнение шаблона. Т.е. вместо #ПоЗначениям подставляется текст шаблона (запросы), а дальше (то что после #ПоЗначениям) идут параметры этих запросов. Например #Параметр(1) в тексте шаблона заменяется на Справочник.СтатьиДвиженияДС а #Параметр(5) - на Ссылка |
|||
41
AlvlSpb
24.10.18
✎
23:59
|
(38) Тьфу! Кажется понял. В этой роли нет шаблона на закладке Шаблоны?
|
|||
42
first_may
25.10.18
✎
07:03
|
(41) да да :)
|
|||
43
AlvlSpb
25.10.18
✎
19:25
|
(42) да. Тогда скопируй туда шаблон полностью.
|
|||
44
first_may
14.11.18
✎
19:47
|
(43) для справочника получилось ограничить вот так
(43) для справочника получилось ограничить вот так СтатьиДвиженияДенежныхСредств ГДЕ СтатьиДвиженияДенежныхСредств.Ссылка В (ВЫБРАТЬ СтатьиДвиженияДенежныхСредств.Ссылка КАК Ссылка ИЗ Справочник.СтатьиДвиженияДенежныхСредств КАК СтатьиДвиженияДенежныхСредств ГДЕ СтатьиДвиженияДенежныхСредств.ЭтоГруппа = ИСТИНА ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ ГруппыДоступаЗначенияДоступа.ЗначениеДоступа ИЗ Справочник.ГруппыДоступа.ЗначенияДоступа КАК ГруппыДоступаЗначенияДоступа ГДЕ ГруппыДоступаЗначенияДоступа.Ссылка В (ВЫБРАТЬ ГруппыДоступаПользователи.Ссылка КАК ГруппаДоступа ИЗ Справочник.ГруппыДоступа.Пользователи КАК ГруппыДоступаПользователи ГДЕ ГруппыДоступаПользователи.Пользователь = &АвторизованныйПользователь И ГруппыДоступаПользователи.Ссылка.Профиль В (ВЫБРАТЬ ПрофилиГруппДоступаРоли.Ссылка КАК Профиль ИЗ Справочник.ПрофилиГруппДоступа.Роли КАК ПрофилиГруппДоступаРоли ГДЕ ПрофилиГруппДоступаРоли.Роль.Имя = "мояРольДоступСтатьиДвиженияДС"))) |
|||
45
first_may
14.11.18
✎
19:47
|
А вот как добавить запрос, что бы пользователь не видел и документы, в которых используется статья, которую он не видит?
|
|||
46
palsergeich
14.11.18
✎
21:14
|
(45) Нужно делать ограничение доступа уже на саму таблицу документов.
Но вот тут уже надо аккуратно. Если у одного человека будет 2 и более роли с РЛС на одну таблицу - это очень плохо для производительности |
|||
47
palsergeich
14.11.18
✎
21:15
|
+ глянуть надо в профайлер на план и подумать об индексе, если таблица документов большая - будут проблемы
|
|||
48
first_may
14.11.18
✎
21:48
|
(47) ой, про скорость пока рано :), хотя бы принцип понять.
Например статья движения ДС используется в платежном поручении. Тогда как надо делать? |
|||
49
palsergeich
14.11.18
✎
21:55
|
(48) Аналогично справочнику
ТаблицаДокумента ГДЕ ТаблицаДокумента.ИмяРеквизита В и тд |
|||
50
first_may
15.11.18
✎
14:30
|
(49) то есть, в ту роль, которую я сделал мояРольДоступСтатьиДвиженияДС, добавить доступ документа платежном поручения, а затем в нем для права Чтения сделать похожий запрос, как и для справочника .
Так? |
|||
51
palsergeich
15.11.18
✎
15:00
|
(50) Да
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |