Запрет на запись документов/справочников/РегистрСведений (ТолькоПросмотр)

13.08.12

Администрирование - Роли и права

Частенько приходится слушать от руководства: "запретить этому пользователю, запись этого документа\справочника"... А через какое-то время, почему тот-то не может записать справочник/документ. Вот и родилась идея оперативного запрета/разрешения записи документа/справочника/рс.

Навеяно: Простой доступ только для чтения.

Данное решение работоспособно в типовых решениях, где присутсвует справочник "ГруппыПользователей".

  

Алгоритм механизма следующий:

1. Создаются подписки на событие ПередЗаписью на все документы/справочники/рс (в чем есть необходимость).

2. В справочнике "ГруппыПользователей" создается элемент, например: "Запрет на запись документа".

3. Далее, в эту группу ("Запрет на запись документа")  добавляются элементы, для которых необходимо запретить запись, с именем = Имя справочника/документа/рс .

4. В обработчтике подписки на событие вставляем код:

    ИмяОбъекта = Источник.Метаданные().Имя;

   
ГруппаЗапрета = Справочники.ГруппыПользователей.НайтиПоНаименованию("Запрет на запись документов", Истина);

   
ОбъектЗапрета = Справочники.ГруппыПользователей.НайтиПоНаименованию(ИмяОбъекта, Истина, ГруппаЗапрета);

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

       
Запрос.УстановитьПараметр("Пользователь", ПараметрыСеанса.ТекущийПользователь);
       
Запрос.УстановитьПараметр("Ссылка", ОБъектЗапрета);

       
Результат = Запрос.Выполнить();

        Если НЕ
Результат.Пустой() Тогда
           
Отказ = Истина
        КонецЕсли;

    КонецЕсли;

В итоге имеем механизм, оперативного запрета/разрешения записи любого документа/справочника/РегистраСведений.

P.S. У данного решения остается вопрос с производительность при большом докуметообороте и включенном РЛС. Протестировать пока не представляется возможным.

См. также

SALE! %

Инструментарий разработчика Роли и права Запросы СКД Программист Платформа 1С v8.3 Управляемые формы Запросы Система компоновки данных Конфигурации 1cv8 Платные (руб)

Набор инструментов программиста и специалиста 1С для всех конфигураций на управляемых формах. В состав входят инструменты: Консоль запросов, Консоль СКД, Консоль кода, Редактор объекта, Анализ прав доступа, Метаданные, Поиск ссылок, Сравнение объектов, Все функции, Подписки на события и др. Редактор запросов и кода с раскраской и контекстной подсказкой. Доработанный конструктор запросов тонкого клиента. Продукт хорошо оптимизирован и обладает самым широким функционалом среди всех инструментов, представленных на рынке.

12000 10000 руб.

02.09.2020    161230    892    399    

872

Инструменты администратора БД Роли и права Системный администратор Программист Пользователь 8.3.14 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:Документооборот 1С:Зарплата и кадры государственного учреждения 3 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Зарплата и Управление Персоналом 3.x 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Платные (руб)

Роли… Вы тратите много времени и сил на подбор ролей среди около 2400 в ERP или 1500 в Рознице 2, пытаясь понять какими правами они обладают? Вы все время смотрите права в конфигураторе или отчетах чтоб создать нормальные профили доступа? Вы хотите наглядно видеть какие права дает профиль и редактировать все в простом виде? А может хотите просто указать подсистему и дать права на просмотр и добавление на объекты и не лезть в дебри прав и чтоб обработка сама подобрала нужные роли? Все это теперь стало возможно! Обновление от 18.09.2024, версия 1.2

16800 руб.

06.12.2023    9078    43    5    

74

SALE! %

Инструменты администратора БД Инструментарий разработчика Роли и права Программист Платформа 1С v8.3 Конфигурации 1cv8 Россия Платные (руб)

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

15000 10000 руб.

10.11.2023    10654    38    27    

63

Зарплата Роли и права Системный администратор Бухгалтер Платформа 1С v8.3 Бухгалтерский учет Управление правами 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Комплексная автоматизация 2.х Молдова Россия Казахстан Бухгалтерский учет Платные (руб)

Расширение позволяет максимально полно ограничить доступ пользователей к данным по заработной плате, а именно закрывает доступ к документам начисления и выплаты заработной платы, не позволяет просматривать бухгалтерские отчеты по счету учета зарплаты а также убирает зарплатные проводки из журнала проводок. Расширение запрещает просматривать платежные документы на выплату зарплаты, так же не доступны регламентные отчеты в ПФР и ИФНС. Расширение предлагает готовые настроенные профили "Бухгалтер без зарплаты", "Только просмотр без зарплаты".

5940 руб.

27.05.2021    37858    268    96    

207

Роли и права Системный администратор Программист Платформа 1С v8.3 Конфигурации 1cv8 1С:Управление торговлей 11 Платные (руб)

Данная система разработана как альтернатива стандартной системе напоминаний. Но имеет ряд существенных преимуществ: отображение в базе или с отправкой по почте, свое расписание, возможность фильтрации по ролям и пользователям, формирование своих запросов и макетов, шаблоны писем, работа в фоне. А также может блокировать работу пользователей при заданных условиях. Может работать в составе любой конфигурации. Имеется справка с описанием возможностей. (Обновление от 20.02.2024, версия 2.2, расширение)

19200 руб.

29.11.2019    25702    17    8    

37

Логистика, склад и ТМЦ Роли и права Программист Бухгалтер Пользователь Платформа 1С v8.3 Бухгалтерский учет Управление правами 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Управленческий учет Платные (руб)

Расширение для 1С:Бухгалтерия 3.0, которое позволяет использовать отдельные роли для доступа к складским документам, для доступа к документам раздела "Производство" и для доступа к документам раздела "Покупки".

4560 руб.

21.05.2019    1694912    570    194    

137

Ценообразование, анализ цен Роли и права Системный администратор Платформа 1С v8.3 Управление правами 1С:Управление нашей фирмой 1.6 1С:Управление нашей фирмой 3.0 Россия Платные (руб)

Расширение возможностей программы 1С УНФ. Функционал расширения - разграничение всевозможных прав пользователей и контроль при совершении различных действий.

3000 руб.

23.02.2018    58582    160    261    

152
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
0. KonstB 180 09.08.12 22:36 Сейчас в теме
Частенько приходится слушать от руководства: "запретить этому пользователю, запись этого документа\справочника"... А через какое-то время, почему тот-то не может записать справочник/документ. Вот и родилась идея оперативного запрета/разрешения записи документа/справочника/рс.

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

1. ninch 51 13.08.12 09:24 Сейчас в теме
Довольно не плохой способ ограничения прав. При случае надо проверить в деле:)
2. kapustinag 13.08.12 10:50 Сейчас в теме
Нужно на всякий случай проверить вот что:
- Остальные группы "разрешительные", а эти - "запретительные".
- Через шаблонные ограничения доступа, указанные в ролях, пользователь может получить доступ к тем же документам, что и остальные члены всех групп, в которые он входит.
- Рассмотренный механизм добавляет (потенциально) еще много пересечений пользователя с другими пользователями. В смысле - пользователь может быть членом нескольких разрешительных групп, наряду с, например, 20 своими коллегами. А теперь он стал еще членом нескольких запретительных групп, наряду с 10 нарушителями каких-то там правил.
- В результате этот пользователь или другие нарушители могут незапланированно получить доступ к тем документам (не видам документов, а именно конкретным документам), к которым не получали доступ через разрешительные группы.

То есть опасность эта может быть, если включен и настроен доступ на уровне записей. Или если доступ регулируется другими (самодельными) механизмами, но с использованием вызовов функции ГруппыТекущегоПользователя().
4. KonstB 180 13.08.12 16:06 Сейчас в теме
(2) kapustinag, Спасибо за коммент!
Но на самом деле не шибко я понял, что Вы написали (видимо выходные сказываются) :) Суть такова: если у пользователь состоит в группе, то он и не сможет записать этот объект.
Например:
-Запрет на запись Справочников
-- Номенклатура

если пользователь включен в группу номен., то он и не запишет туда ничего.

По сути если даже есть, какой-то свой механизм или ограничения на уровне записей, то нахождение пользователя в группе вызовет Отказ записи, и запись произведена не будет (данный механизм ограничивает только Запись).

(3) kapustinag, До этого места я не дочитал. Вариант предложенный AuroraNorilsk мне больше нравится. Что-то я не подумал(до читал) об этом.
5. kapustinag 13.08.12 21:46 Сейчас в теме
(4) Наверно, я слишком косноязычен.
Я имел в виду, что, если включены ограничения на уровне записей, либо используются иные способы, проверяющие членство в "разрешительных" группах, то может быть отрицательный побочный эффект из-за этих "запретительных" групп.

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

Но, может быть, во многих ИБ ничего такого не произойдет.
3. kapustinag 13.08.12 11:05 Сейчас в теме
Как уже отметили в обсуждении темы "Простой доступ только для чтения", есть еще один вариант, сравнимый с этим:
- Использовать не группы, а дополнительные права пользователя. В этом случае можно одной строкой запретить и группе целиком, а не только одному пользователю.
7. V.Nikonov 120 16.08.12 11:17 Сейчас в теме
Способ относительно простой и достаточно эффективный. Единственное замечание по реализации: Раз уж начали править Конфу, то эффективнее, вместо поиска (тем более по Наименованию), использовать Предопределённые значения. Соглашусь с (3) kapustinag
Использовать не группы, а дополнительные права пользователя
это заметно нагляднее при объявленной постановке задачи.

Теперь по потребности в подобных закрытиях... Гораздо чаще, включают условные запреты, Например, Номенклатуру "из этой группы" можно править, а "в другие не лезь"... Или на одном Складе можно проводить документы, а на другом нельзя!
Полные же запреты на виды действий, чаще "лечатся присвоением Роли с ограничением"...
6. chmod660 417 15.08.12 14:23 Сейчас в теме
кроме упомянутых неоднозначностей, второй момент:
если я правильно понял, имена метаданных - это подгруппы в вашей группе запрета?
тогда что произойдет, если есть одноименные метаданные, и я захочу одно запретить, а другое разрешить?
например, справочник "СобытияОС" и регистр сведений "СобытияОС" ?
8. KonstB 180 17.08.12 11:56 Сейчас в теме
(6) chmod660, Да все верно, имена метаданных - это подгруппы в группе запрета.
ОбъектЗапрета ищется по родителю. Т.е. если отрабатывается подписка на событие ПередЗаписью документов, предполагается, что существует группа "Запрет на запись документов" (соот. для подписки на справочник группа "Запрет на запись справочников") - данный метод отсекет НЕ уникальность имен в различных метаданных.

(7) V.Nikonov, Спасибо, про предопределенные, что то не подумал :)
Если необходим, такой детальный запрет, то да это только ограничения по записям, предложенный мною механизм не годится.
9. itt 25.08.12 00:04 Сейчас в теме
как вариант надо будет проверить
10. taasha25 13 17.06.13 09:34 Сейчас в теме
Коллега!
Способ понравился, как раз то, что искала. Необходим доступ только на чтение всех данных.
Сейчас буду тестировать.
11. a4a 22.10.13 16:01 Сейчас в теме
Интересный вариант, если использовать группы пользователей. Но, как правило, в базе бывает несколько пользователей с полными правами и каждый из них может вмешаться и изменить группы в режиме предприятия. В конфигуратор, как правило, все же заходят далеко не все. Хотя это, наверное, частная проблема.
12. ray-xp 21 28.11.13 09:06 Сейчас в теме
Спасибо за идею, использовать справочник "ГруппыПользователей"!
14. rm123 09.12.16 09:17 Сейчас в теме
Всё работает. Спасибо!
Оставьте свое сообщение