gifts2017

Ограничение доступа на уровне записей

Опубликовал Денис Гончаров (gragden) в раздел Администрирование - Защита, права, пароли

Значит, появилась следующая задача:
Конфигурация - стандартная "Бухгалтерия для Казахстана", моим российским коллегам уточню что очень похожа на конфигурацию для России.
При формировании отчета "Карточка счета" нужно, чтобы пользователи кроме главбуха и расчетного бухгалтера просто не видели физических лиц.

После постановки задачи я начал думать какими инструментами это можно осуществить, и получилось два самых легких варианта:

1. Создать новую роль или просто в текущей роли убрать доступы на чтение информации по физическим лицам.

2. Попробовать организовать на том что есть механизмом ограничения прав доступа на уровне записей.

Так вот, я заинтересовался все-таки вторым способом.

Итак, механизм ограничения доступа на уровне записей и полей базы данных предоставлен для того чтобы уточнить, какие данные предоставлять пользователю для работы.

Органичения производятся по 4 основным правам:

Чтение

Добавление

Изменение

Удаление

 

Как же все таки делается ограничение? Так вот, оказывается для этого есть инструмент, похожий на язык запросов, в принципе это и есть язык запросов. Прописывается все в Роли пользователя, в специальной секции "Ограничение доступа к данным"

Так как я ранее не сталкивался с этим механизмом я решил поступить просто и эффективно в условия ограничения доступа к данным я добавил "ГДЕ ЛОЖЬ" для права "Чтение", и после этого пользователям присвоил это право, вот и все )

http://www.imageup.ru/img257/917742/index.png

При формировании Карточки счета пользователи видят все, но те элементы, которые связаны с Физическими лицами обозначаются Как "Объект не найден" - впринципе такой расклад пока устраивает

Можете тоже попробовать сделать так, но сразу оговорюсь, если у пользователя есть право, которое позволяет Читать данные из справочника, то справочник будет доступен или группа, я просто тестировал.

Можно конечно усложнить условие, но пока что мне этого не нужно.

Кстати в условиях ограничения доступа к данным вы также можете быбирать какие поля конкретно ограничить - тоже удобная штука. Есть также удобный инструмент, который похож на конструктор запросов, он выделен на картинке тоже можете поэксперементировать.

См. также

Подписаться Добавить вознаграждение

Комментарии

0. Денис Гончаров (gragden) 09.04.12 12:50
Значит, появилась следующая задача:
Конфигурация - стандартная "Бухгалтерия для Казахстана", моим российским коллегам уточню что очень похожа на конфигурацию для России.
При формировании отчета "Карточка счета" нужно, чтобы пользователи кроме главбуха и расчетного бухгалтера просто не видели физических лиц.


Перейти к публикации

1. Игорь Грибинник (slavich) 09.04.12 12:50
Наподобие делал с документами, ограничение по организации #Организация("Организация"). К стати тоже с Алматы)))
2. Денис Гончаров (gragden) 11.04.12 10:54
3. rasswet (rasswet) 11.04.12 12:23
недостаток имхо в том, что если взять например счет где видно ЗП, то будет виден её размер, т.е в принципе видна ЗП руководителей, хотя конкретно не видно чья она.
4. Денис Гончаров (gragden) 11.04.12 12:42
(3) rasswet, я согласен, но если у вас есть другой вариант решения, я бы с радостью его рассмотрел
5. Антон Колимбетов (un_named) 06.06.12 19:40
Тот же мехамнизм, но без создания/доработки роли:
1. нужно включить использование ограничения прав на уровне доступа
2. создать группу пользователей с одним видом объекта доступа - "Физические лица"
3. добавить в группу пользователей, которым запрещен доступ к физическим лицам
4. права к этой группе пользователей оставить пустыми

Пользователь такой группы не будет видеть ФЛ (только группы в справочнике), не будет видеть документы, непосредственно связанные с ФЛ. В оборотке и карточке счета, допустим, по 3350, будет видеть "объект не найден" и суммы.
mugambi; Bassgood; +2 1 Ответить 4
6. Олег Филиппов (comol) 29.06.12 16:02
Ужас.
1) так делать нельзя. Задача явно не для RLS. Какие ещё "Объект не найден"...
2) не статья а неправильное решение одной тривиальной задачи. К объяснению работы с RLS даже близко не приблизились
3) Механизм RLS сам по себе зло. И если есть хоть малейшая возможность его избежать - нужно избегать, а не вставлять куда не попади.
7. Zigfridish (Bassgood) 01.07.12 19:11
(0) Разве это похоже на статью? По-моему, как было замечено в (6), это
не статья а неправильное решение одной тривиальной задачи. К объяснению работы с RLS даже близко не приблизились

Более правильный вариант решения был предложен в (5). Если всем пользователям кроме двух необходимо ограничить доступ к определенной информации только в одном отчете, а все остальные права оставить как есть, то можно было бы попробовать внести изменения в сам отчет.
Вы убрали у пользователей доступ к справочнику ФЛ, а мб он им необходим для работы в базе, а Вас попросили для пользователей лишь ограничить получение информации по ФЛ в одном отчете?
И не проще ли было просто убрать галку "Чтение" вместо того, чтобы накладывать RLS?
Если статья понравилась или что то для Вас прояснилось можете кидать 500 тенге на мой киви кошелек (7078246262) или 100 рублей

Просить за это сбросить деньжат на кошелек? Да этой информации полно в интернете и в желтых книжках тоже, ничего нового...
8. Денис Гончаров (gragden) 06.07.12 15:15
(6) comol,

О да ужас - это хорошая эмоция ))
1. Так делать можно и задача явно для RLS - даже есть механизмы уже присутствующие в типовых конфигурациях
2. Решения бывают разными и каждый в меру своих возможностей и времени это делает. Если у вас есть другие варианты решения то милости просим. Работу RLS даже не пытался объяснить - для этого есть специальные курсы и лекции, да и можно найти море других источников, где правильным языком пишут что к чему.
3. Механизм не зло имхо. Избегать можно, но не всегда удобно это делать, да и времени можно потратить немало. Поставил код куда надо, если бы не туда поставил - думаю вообще бы не работало ничего ))
9. Денис Гончаров (gragden) 06.07.12 15:27
(7) Zigfridish,

Нет это не похоже на статью, более того писал его для простоты понимания, до кого не доходит - есть много других статей - могут и там почитать.

Если есть конкретное решение выкладывайте, милости просим как говорят

В (5) вариант решения в типовой конфигурации хорош, но я хотел обеспечить что - нибудь свое, чего нет в типовой конфигурации, тем более что это сделано не только для одного отчета, а используется и для объектов конфигурации, которые не являются типовыми.

Для того чтобы был доступ к физ лицам, например для вывода подписи, существуют другие команды, позволяющие это сделать (справка рулет)
Галку чтение убирать не проще, потому что права регулируются гибко

Про бабло - мы все хотим есть и хорошо жить - не правда ли, и я думаю сумма не сверхестественная - я б тоже закинул за информацию какому - нибудь программеру или разработчику, если бы мне сильно была интересна информация.

Да согласен информации много - каждый выбирает что ему подходит, а писал это не только для вас, а для себя в первую очередь. Да будет вам известно - нового вообще на инфостарте ничего нет.

И кстати, в вашей квалификации я сильно сомневаюсь
10. Zigfridish (Bassgood) 06.07.12 22:05
(9) gragden,
тем более что это сделано не только для одного отчета, а используется и для объектов конфигурации, которые не являются типовыми.

Странно, а в публикации написано совсем другое, в ней речь вроде бы шла только лишь об одном отчете...
Галку чтение убирать не проще, потому что права регулируются гибко

На скрине в ограничении доступа по праву "Чтение" указано "ГДЕ ЛОЖЬ" - это равносильно тому, если бы вы просто сняли галку с этого права вот и все, и при этом никакого доступа к чтению информации по ФЛ вы не получите никакими "другими командами" (за исключением функционала, исполняемого в привилегированных модулях).
Про бабло - я вообще впервые вижу, чтобы в публикации просилось забросить денег на кошелек, если хотите заработать денег - для этого на сайте есть платные разработки, а просить денег за скудную информацию...
Судя по этой публикации можно сомневаться только лишь в вашей квалификации, но не в моей, я ничего подобного на сайте не публиковал =)
11. Олег Филиппов (comol) 08.07.12 19:54
(8) gragden,
1) "покажите мне" "объект не найден" в УПП. :)
3) Если бы чуть "глубже" капнуть - поймёте. При использовании RLS запрос к СУБД становится не предсказуемым. Вы пишите ващ запрос а 1С туда добавляет RLS... Собственно далее вы не знаете что за запрос.. используятся там индексы или нет... есть вложенные запросы или нет. И вообще понятия не имеете сколько он будет выполняться по времени.
12. Zigfridish (Bassgood) 09.07.12 01:24
(11) comol, кстати у меня был такой случай, что у нескольких пользователей при проведении некоторых документов и формировании пары отчетов - зависала 1с, вываливалась критическая ошибка (писалось что-то типа "sql не поддерживает соединение более 256 таблиц") и всё, перезагрузка приложения, а причина оказалась в том, что этим пользователям было назначено несколько групп доступа по RLS, в связи с чем видимо к исполняющемся запросам 1с присобачило целую кучу соединений с другими таблицами и кирдык...
MoshkovEV; comol; +2 1 Ответить
13. Денис Гончаров (gragden) 09.07.12 08:10
(11) comol,
1) смешно - "покажите мне" "объект не найден" в УПП. Ну у кого как фантазия и инструмент позволит организовать, конечно у меня не айс, но работает
3) Существует такое понятие - как проектная документация, - на этапе подготовки для реализации проекта все это дело просчитывается (там же экономическое обоснование)- и поверьте мне результат предсказуем. Конечно если писать от винта или на скорую руку, тогда результат будет такой же "винтовой" или "криворучный" все ведь зависит от рук разработчика. 1С Предприятие - развитая платформа разработки, поэтому что там происходит внутри разработчиков не должно интересовать - этим должны заниматься программисты, который и пишут оную 1С Предприятие.

Ну и наконец - хотелось бы спросить как бы вы организовали решение данной задачи, пожалуйста скажите уж больно интересно. Писать мы все можем о механизмах и прочим, но есть задачи, которые нам нужно решать, мы не должны спорить о механизмах как о лучшем или как о худшем - для каждой задачи нужно правильно выбрать решение. Думаю вопрос справедливый.
14. Денис Гончаров (gragden) 09.07.12 08:37
(10) Zigfridish,
Да, на момент написания упомянул только об одном отчете, но далее это все перешло и на другие объекты конфигурации

Цитата
На скрине в ограничении доступа по праву "Чтение" указано "ГДЕ ЛОЖЬ" - это равносильно тому, если бы вы просто сняли галку с этого права вот и все, и при этом никакого доступа к чтению информации по ФЛ вы не получите никакими "другими командами" (за исключением функционала, исполняемого в привилегированных модулях).

Да, указал "ГДЕ ЛОЖЬ" для более простого понимания ситуации, так как сам изрядно замучился с поиском информации по рлс, на самом деле этот запрос изменился:
Сейчас он выглядит так:
"#Если НЕ &СМ_ДоступКФизическимЛицам #Тогда
ГДЕ Ложь
#КонецЕсли"

Здесь СМ_ДоступКФизическимЛицам переменная сеанса, которая позволяет либо запрещает использование справочника, - Это то место где указано на картинки, далее идут немного другие запросы.

Про бабло, - я не работаю в фирмах франчайзи из принципа, а в частных компаниях подписываю договора о неразглашении и коммерческой тайне, по этой причине разработки мои масштабные в ближайшее время на инфостарте не появятся. Если я работаю в компаниях, то это не говорит о том что я хочу заработать, вообще я написал это из прикола - абы будет абы нет, так вот еще никто не удосужился - я вас обрадую.

Я считаю что информация не скудная, любой кто не сталкивался с механизмом, думаю пробежится по материалу и уже сможет самостоятельно что то сам добавлять в конфигурацию, а на форумах я встречал что то типо да зачем rls она замедляет работу и другую подобную флудовую ахинею, которая к сожалению стала и тут разводиться.

О квалификации, себя я не считаю асом, но то что я на практике попробовал вполне годится для многих моих разработок, то что у вас только одна публикация, ну это уж ваше дело. Если обидел чем извините.

Ну и вопрос само собой, вот мы много с вами спорим о том как я написал статью (RLS, бабло, скорость, правильность). Будьте так добры предложите свой вариант, это будет более конструктивно.
15. Zigfridish (Bassgood) 09.07.12 11:14
(14) gragden,
Здесь СМ_ДоступКФизическимЛицам переменная сеанса, которая позволяет либо запрещает использование справочника

Проще было воспользоваться типовыми возможностями конфигурации по РЛС - группами доступа "Физические лица", чем создавать новый параметр сеанса и прописывать в модуле сеанса алгоритмы его установки, имхо
а на форумах я встречал что то типо да зачем rls она замедляет работу и другую подобную флудовую ахинею, которая к сожалению стала и тут разводиться.

а РЛС действительно замедляет выполнение запросов, это не выдумки
то что у вас только одна публикация, ну это уж ваше дело. Если обидел чем извините.

Нет, вы меня ничем не обидели, мне просто лень публиковать то, что уже обсуждали много раз на форумах или разработано другими =)
Ну и вопрос само собой, вот мы много с вами спорим о том как я написал статью (RLS, бабло, скорость, правильность). Будьте так добры предложите свой вариант, это будет более конструктивно.

см. (5) - наиболее оптимальный вариант и не надо ничего придумывать своего, именно им бы я и воспользовался и не пришлось бы вносить каких-либо изменений в конфигурацию
16. Олег Филиппов (comol) 09.07.12 11:56
(13) gragden, (15) Zigfridish,

Господа, задача звучит "При формировании отчета "Карточка счета" нужно, чтобы пользователи кроме главбуха и расчетного бухгалтера просто не видели физических лиц".

Какое там RLS? там СКД и вычисляемые поля. 2 минуты чтобы дописать ещё одно условие. Группы доступа конечно придётся задействовать, но без RLS.
17. Zigfridish (Bassgood) 09.07.12 14:58
(16) comol, в публикации написано так, но после автор признается, что это было необходимо не только для одной "карточки счета"... в общем неправильно описана исходная задача =)
В данном случае с помощью СКД я думаю можно и без использования каких-либо групп обойтись - в вычисляемых полях использовать функцию "РольДоступна()".
18. Денис Гончаров (gragden) 10.07.12 15:24
(15) Zigfridish,
Итак, типовые ограничения доступа согласно (5)
Да это действительно та штука, которая казалось бы мне нужна, но:
1. Типовыми ограничениями геморно управлять, результат конечно такой же.
2. В моей же системе проще, в справочник просто добавляются пользователи.
3. Кроме того, я могу управлять в тех местах, где доступ нужен к физ-лицам, например в печатных формах.
4. Мои ограничения работают быстрее типовых
Есть и другие мелочи, которые описывать не буду, т.к. нет времени на это.
Скрин типовых ограничений в Карточке счета 3350:

Типовые ограничения доступа КС3350
19. Денис Гончаров (gragden) 10.07.12 15:48
(17) Zigfridish, (16) comol,

Да, в карточке счета действительно есть СКД, да, его подправить 5 минут, но благо пользователи у нас не дураки и курсы прошли сертифицированные, при открытии документов из карточки, конечно же высвечиваются фамилии тех кому начислили заработную плату, осталось еще в документах дописать по пять минут доступ к физ лицам ))))

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


2. Добавлен код (условие) в Вычисляемые поля отчета Карточка счета:

КОГДА НЕ ОбщегоНазначения.ДоступКФизЛицам(СубконтоДт1) ТОГДА "Нет доступа" + &ПС
	ИНАЧЕ Представление(СубконтоДт1)+ &ПС
КОНЕЦ

Для субконто дебета и аналогично для субконто кредита (СубконтоКт1)


Выкладываю скрины:
1. Отчет

2. Документ открывается и вуаля:


Единственно чем может помочь Ваш совет, так это тем что бы скрыть "Объект не найден", но стоит ли того?? если конфа типовая и обновляться приходится каждый квартал.

Есть еще предложения, просим милости.
20. Zigfridish (Bassgood) 10.07.12 18:48
(18) gragden, а в типовом механизме пользователям просто назначается соответствующая группа доступа ФЛ.
(19) gragden, как описано в публикации - речь шла только об одной карточке счета, именно для нее и было предложено использование средств СКД, а не РЛС.
В общем я думаю дискуссию можно считать закрытой, каждый сам выбирает - либо пользоваться типовыми механизмами (если они есть), либо писать свои собственные =)
21. Денис Гончаров (gragden) 10.07.12 20:31
(20) Zigfridish,

Конечно группами, по этому управляются не гибко

А Вы не думали о том что пользователь может открыть документ с Карточки??? в принципе 80% работы в этом и заключается, чтобы посмотреть цифры, а где неправильно подправить или просто посмотреть для детализации.

Это больше не дискуссия - а вопрос о том какой я идиот, написал неправильно статью, а еще попросил бабла за это, и что не предусмотрительно и опасно воспользовался СКД.

Согласен, что каждый может либо дописывать либо использовать то, что уже есть. То что есть - это стандарт общепринятый - типа "вот так должно работать". По моему опыту - еще ни одна фирма не обошлась без дописок типовой конфигурации.

Я думаю вопросов будет не мало, по этому считаю, что ветка еще актуальна, потому что такой дискусии уж точно в книжках и на желтых страницах не найти. Есть вопросы задавайте. Есть решения предлагайте. Милости просим.
22. Олег Филиппов (comol) 11.07.12 09:08
(19) gragden, Задача сформулирована как закрыть доступ в отчете а не во всей конфе. Если закрыть доступ к физлицам то как-то не совсем логично оставлять доступ к документам. Но даже если во всей конфе надо закрыть доступ то сперва нужно сформулировать задачу доступ закрыть полностью (под страхом расстрела не должны увидеть) или хватит интерфейсного. И вот только если нужно полностью закрыть доступ на уровне БД и во всей конфе, вот только тут будет необходимость RLS, но естественно очень аккуратного и продуманного, а не как у вас "объект не найден"....
23. Денис Гончаров (gragden) 11.07.12 10:02
(22) comol,
ну вот я наконец добился того что хотел от Вас услышать. Спасибо добрый человек! Дальше не буду писать что закрывать, зачем закрывать и почему "Объект не найден".
24. Jaroslav Bayev (JaroslavBayev) 14.04.14 15:45
Есть 2 справочника "Районы" и "Службы", возможно ли по ним задействовать РЛС?
25. Денис Гончаров (gragden) 14.04.14 17:28
26. Jaroslav Bayev (JaroslavBayev) 15.04.14 09:25
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа