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

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

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

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

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

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

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

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

Чтение

Добавление

Изменение

Удаление

 

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

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

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

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

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

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

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

26 Comments

  1. gragden

    Значит, появилась следующая задача:

    Конфигурация — стандартная «Бухгалтерия для Казахстана», моим российским коллегам уточню что очень похожа на конфигурацию для России.

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

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

    Reply
  2. slavich

    Наподобие делал с документами, ограничение по организации #Организация(«Организация»). К стати тоже с Алматы)))

    Reply
  3. gragden

    (1) slavich, хорошо )

    Reply
  4. rasswet

    недостаток имхо в том, что если взять например счет где видно ЗП, то будет виден её размер, т.е в принципе видна ЗП руководителей, хотя конкретно не видно чья она.

    Reply
  5. gragden

    (3) rasswet, я согласен, но если у вас есть другой вариант решения, я бы с радостью его рассмотрел

    Reply
  6. un_named

    Тот же мехамнизм, но без создания/доработки роли:

    1. нужно включить использование ограничения прав на уровне доступа

    2. создать группу пользователей с одним видом объекта доступа — «Физические лица»

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

    4. права к этой группе пользователей оставить пустыми

    Пользователь такой группы не будет видеть ФЛ (только группы в справочнике), не будет видеть документы, непосредственно связанные с ФЛ. В оборотке и карточке счета, допустим, по 3350, будет видеть «объект не найден» и суммы.

    Reply
  7. comol

    Ужас.

    1) так делать нельзя. Задача явно не для RLS. Какие ещё «Объект не найден»…

    2) не статья а неправильное решение одной тривиальной задачи. К объяснению работы с RLS даже близко не приблизились

    3) Механизм RLS сам по себе зло. И если есть хоть малейшая возможность его избежать — нужно избегать, а не вставлять куда не попади.

    Reply
  8. Bassgood

    (0) Разве это похоже на статью? По-моему, как было замечено в (6), это

    не статья а неправильное решение одной тривиальной задачи. К объяснению работы с RLS даже близко не приблизились

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

    Вы убрали у пользователей доступ к справочнику ФЛ, а мб он им необходим для работы в базе, а Вас попросили для пользователей лишь ограничить получение информации по ФЛ в одном отчете?

    И не проще ли было просто убрать галку «Чтение» вместо того, чтобы накладывать RLS?

    Если статья понравилась или что то для Вас прояснилось можете кидать 500 тенге на мой киви кошелек (7078246262) или 100 рублей

    Просить за это сбросить деньжат на кошелек? Да этой информации полно в интернете и в желтых книжках тоже, ничего нового…

    Reply
  9. gragden

    (6) comol,

    О да ужас — это хорошая эмоция ))

    1. Так делать можно и задача явно для RLS — даже есть механизмы уже присутствующие в типовых конфигурациях

    2. Решения бывают разными и каждый в меру своих возможностей и времени это делает. Если у вас есть другие варианты решения то милости просим. Работу RLS даже не пытался объяснить — для этого есть специальные курсы и лекции, да и можно найти море других источников, где правильным языком пишут что к чему.

    3. Механизм не зло имхо. Избегать можно, но не всегда удобно это делать, да и времени можно потратить немало. Поставил код куда надо, если бы не туда поставил — думаю вообще бы не работало ничего ))

    Reply
  10. gragden

    (7) Zigfridish,

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

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

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

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

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

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

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

    И кстати, в вашей квалификации я сильно сомневаюсь

    Reply
  11. Bassgood

    (9)

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

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

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

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

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

    Судя по этой публикации можно сомневаться только лишь в вашей квалификации, но не в моей, я ничего подобного на сайте не публиковал =)

    Reply
  12. comol

    (8)

    1) «покажите мне» «объект не найден» в УПП. 🙂

    3) Если бы чуть «глубже» капнуть — поймёте. При использовании RLS запрос к СУБД становится не предсказуемым. Вы пишите ващ запрос а 1С туда добавляет RLS… Собственно далее вы не знаете что за запрос.. используятся там индексы или нет… есть вложенные запросы или нет. И вообще понятия не имеете сколько он будет выполняться по времени.

    Reply
  13. Bassgood

    (11) comol, кстати у меня был такой случай, что у нескольких пользователей при проведении некоторых документов и формировании пары отчетов — зависала 1с, вываливалась критическая ошибка (писалось что-то типа «sql не поддерживает соединение более 256 таблиц») и всё, перезагрузка приложения, а причина оказалась в том, что этим пользователям было назначено несколько групп доступа по RLS, в связи с чем видимо к исполняющемся запросам 1с присобачило целую кучу соединений с другими таблицами и кирдык…

    Reply
  14. gragden

    (11) comol,

    1) смешно — «покажите мне» «объект не найден» в УПП. Ну у кого как фантазия и инструмент позволит организовать, конечно у меня не айс, но работает

    3) Существует такое понятие — как проектная документация, — на этапе подготовки для реализации проекта все это дело просчитывается (там же экономическое обоснование)- и поверьте мне результат предсказуем. Конечно если писать от винта или на скорую руку, тогда результат будет такой же «винтовой» или «криворучный» все ведь зависит от рук разработчика. 1С Предприятие — развитая платформа разработки, поэтому что там происходит внутри разработчиков не должно интересовать — этим должны заниматься программисты, который и пишут оную 1С Предприятие.

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

    Reply
  15. gragden

    (10) Zigfridish,

    Да, на момент написания упомянул только об одном отчете, но далее это все перешло и на другие объекты конфигурации

    Цитата

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

    Да, указал «ГДЕ ЛОЖЬ» для более простого понимания ситуации, так как сам изрядно замучился с поиском информации по рлс, на самом деле этот запрос изменился:

    Сейчас он выглядит так:

    «#Если НЕ &СМ_ДоступКФизическимЛицам #Тогда

    ГДЕ Ложь

    #КонецЕсли»

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

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

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

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

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

    Reply
  16. Bassgood

    (14)

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

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

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

    а РЛС действительно замедляет выполнение запросов, это не выдумки

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

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

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

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

    Reply
  17. Bassgood

    (16) comol, в публикации написано так, но после автор признается, что это было необходимо не только для одной «карточки счета»… в общем неправильно описана исходная задача =)

    В данном случае с помощью СКД я думаю можно и без использования каких-либо групп обойтись — в вычисляемых полях использовать функцию «РольДоступна()».

    Reply
  18. gragden

    (15) Zigfridish,

    Итак, типовые ограничения доступа согласно (5)

    Да это действительно та штука, которая казалось бы мне нужна, но:

    1. Типовыми ограничениями геморно управлять, результат конечно такой же.

    2. В моей же системе проще, в справочник просто добавляются пользователи.

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

    4. Мои ограничения работают быстрее типовых

    Есть и другие мелочи, которые описывать не буду, т.к. нет времени на это.

    Скрин типовых ограничений в Карточке счета 3350:



    Типовые ограничения доступа КС3350

    Reply
  19. gragden

    (17) Zigfridish, (16) comol,

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

    1. Добавлен код в общий модуль «Общего назначения»:

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

    Показать

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

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

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

    Выкладываю скрины:

    1. Отчет



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

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

    Есть еще предложения, просим милости.

    Reply
  20. Bassgood

    (18) а в типовом механизме пользователям просто назначается соответствующая группа доступа ФЛ.

    (19) как описано в публикации — речь шла только об одной карточке счета, именно для нее и было предложено использование средств СКД, а не РЛС.

    В общем я думаю дискуссию можно считать закрытой, каждый сам выбирает — либо пользоваться типовыми механизмами (если они есть), либо писать свои собственные =)

    Reply
  21. gragden

    (20) Zigfridish,

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

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

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

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

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

    Reply
  22. comol

    (19) Задача сформулирована как закрыть доступ в отчете а не во всей конфе. Если закрыть доступ к физлицам то как-то не совсем логично оставлять доступ к документам. Но даже если во всей конфе надо закрыть доступ то сперва нужно сформулировать задачу доступ закрыть полностью (под страхом расстрела не должны увидеть) или хватит интерфейсного. И вот только если нужно полностью закрыть доступ на уровне БД и во всей конфе, вот только тут будет необходимость RLS, но естественно очень аккуратного и продуманного, а не как у вас «объект не найден»….

    Reply
  23. JaroslavBayev

    Есть 2 справочника «Районы» и «Службы», возможно ли по ним задействовать РЛС?

    Reply
  24. gragden

    (24) JaroslavBayev, Да можно

    Reply
  25. JaroslavBayev

    (25) может вы тогда сможете ответить мне в теме: http://forum.infostart.ru/forum26/topic108732/message1119265/#message1119265

    Reply
  26. dreamcreal

    «Быбирать»?))

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *