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

07.10.16

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

В типовой конфигурации УПП нет ограничения доступа на уровне записей по кассам, а очень хотелось бы. Наверно, предполагается, что достаточно ограничить по организации-подразделению, и этого должно хватить. Но когда в одной организации есть несколько касс, этого сочетания недостаточно: кассиры в документах и отчетах видят "чужие" кассы. В статье приводится список доработок, которые необходимо сделать, чтобы ограничение действительно работало. Думаю, что аналогичные доработки можно воспроизвести в конфигурациях "Управление Торговлей 10.3" и "Комплексная автоматизация 1.1". Также публикация поможет понять, как добавить свой вид ограничения доступа: по расчетным счетам например.

Скачать файлы

Наименование Файл Версия Размер
НастройкаПравДоступа
.epf 48,35Kb
42
.epf 48,35Kb 42 Скачать
Текст кодов
.doc 158,50Kb
34
.doc 158,50Kb 34 Скачать

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

1. Перечисление "ВидыОбъектовДоступа" - добавляем новое значение "Кассы". В результате в параметрах доступа увидим желанную строку с кассой:

2. Перечисление "ОбластиДанныхОграниченияПравДоступа" - добавляем новое значение "КассыДанные".

3. В параметры сеанса добавляем "ИспользоватьОграничениеПоКассы" с типом "булево".

4. В общем модуле  "НастройкаПравДоступа" в функцию "ПолучитьВидОбъектаДоступа" добавляем 2 строки:

ИначеЕсли ТипЗнч(ОбъектДоступа) = Тип("СправочникСсылка.Кассы") Тогда
		Возврат Перечисления.ВидыОбъектовДоступа.Кассы;
	

5. В регистре сведений "НастройкиПравДоступаПользователей" в два измерения "ОбъектДоступа" и "ВладелецПравДоступа", которые уже имеют составной тип данных добавляем тип "СправочникСсылка.Кассы".

6. В обработке "НастройкаПравДоступа"  - в панель "ПанельОбластейДанных" добавляем новую страницу "Кассы" с табличным полем "ТаблицаПарвДоступа_Кассы", а также пару строк в процедуры. Сама обработка приложена к публикации. Ее кстати можно будет вставить во внешние обработки и вызывать оттуда, а не заменять встроенную.

6. Создаем новую роль "Т_Кассир" (название любым может быть) путем копирования встроенной роли "Кассир". Эту роль необходимо будет дать всем пользователям, которым хотим ограничить кассы, а типовую роль "Кассир" у них убрать. Можно и типовую роль "сломать", но с добавлением новой роли будет легче обновлять конфигурацию.

7. И самое сложное - настроить ограничения доступа у новой роли.

Открываем роль, находим документ "Приходный кассовый ордер", выбираем право "Чтение" , слева жмем кнопку "Установить ограничение данных для полей" и текст ограничения меняем на такой:

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

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

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

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

Аналогично необходимо сделать для права "Добавление", "Изменение".

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

Такая доработка скроет для пользователя в списках этих документов те, которе не относятся к "его" кассе.

Чтобы скрыть данные в отчетах (Ведомость по денежным средствам, Движения денежных средств) необходимо исправить текст ограничений для регистров накопления "ДвижениеДенежныхСредств" и "ДенежныеСредства", по которым строятся эти отчеты. Это делается аналогично, как сделано в документах.

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

Если непонятно, как писать эти ограничения - текст готовых кодов для каждого объекта приложен к публикации.

В результате пользователь, у которого стоит ограничение по одной кассе видит в документах и отчетах следующее:

При этом пользователь без ограничений видит все документы:

Ограничение доступа кассы УПП

См. также

SALE! 20%

Infostart Toolkit: Инструменты разработчика 1С 8.3 на управляемых формах

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

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

13000 10400 руб.

02.09.2020    122179    670    389    

714

Запрет доступа к данным по зарплате для БП 3.0 и КА 2.5

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

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

5700 руб.

27.05.2021    32738    204    89    

165

Автоподбор ролей для профилей и групп доступа в любых типовых базах 1С УТ 11, КА 2, ERP2, Розница 2/3, УНФ 16/3, БП 3, ЗУП 3 и подобных (УФ, Платформа 8.3.14+)

Инструменты администратора БД Роли и права 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, пытаясь понять какими правами они обладают? Вы все время смотрите права в конфигураторе или отчетах чтоб создать нормальные профили доступа? Вы хотите наглядно видеть какие права дает профиль и редактировать все в простом виде? А может хотите просто указать подсистему и дать права на просмотр и добавление на объекты и не лезть в дебри прав и чтоб обработка сама подобрала нужные роли? Все это теперь стало возможно! Обновление от 15.12.2023, версия 1.1.

12000 руб.

06.12.2023    2980    13    1    

34

SALE! 20%

Infostart УДиФ: Управление данными и формами

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

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

10000 8000 руб.

10.11.2023    3545    11    1    

34

Расширение для разграничения доступа к контрагентам и обработка для группового назначения доступа для Бухгалтерии (RLS) 3.0.143.42

Роли и права Платформа 1С v8.3 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Платные (руб)

Расширение предназначено для Бухгалтерии предприятия (версии ПРОФ и КОРП). Типовая конфигурация остается на поддержке. С помощью расширения менеджер по продажам будет иметь доступ к контрагентам и списку их документов только в случае, если он является для них ответственным. Пользователю с полными правами также доступна обработка «Назначение ответственных» для группового добавления/удаления ответственного в карточке контрагента. Есть версия данного расширения для клиентов Fresh - в магазине расширений (Fresh)

9360 руб.

14.09.2022    5760    7    4    

9

Роли для кладовщика

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

Расширение, которое позволяет использовать отдельные роли для доступа к складским документам, для доступа к документам раздела "Производство" и для доступа к документам раздела "Покупки".

2520 руб.

21.05.2019    1692311    552    192    

133

Универсальная система оповещений в базе или по почте по произвольным условиям, расписанием, ролям и пользователям (Расширение / конфигурация для платформ 8.3.6+, для ЛЮБЫХ баз)

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

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

18000 руб.

29.11.2019    24693    13    8    

33
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. Азверин 3 10.04.17 09:38 Сейчас в теме
Спасибо за статью и пример. Очень помогло!
2. j3d 34 25.04.18 15:53 Сейчас в теме
Приветствую!
спасибо за замечательную публикацию . Решил интегрировать ее в КА 1.1.101.1.
Все прошло на ура.
Создал две кассы (Москва, Воронеж).
Добавил коды ограничений согласно инструкции.
(Роль Кассир скопировал назвал как и у вас Т_Кассир)
Регистр Денежные средства срабатывает нормально
а вот Движение денежных средств все равно открыт

хотя код внес согласно инструкции
Прикрепленные файлы:
3. Bacemo 23.07.18 10:33 Сейчас в теме
Спасибо. Публикация помогла.
4. zayden 17 19.02.19 09:42 Сейчас в теме
то есть без скачивания обработки не взлетит?
5. Mikeware 9 19.02.19 10:16 Сейчас в теме
(4) почему? все работает..
Жалко, что не видел этой публикации раньше - сэкономил бы изрядно времени...
7. zayden 17 19.02.19 12:47 Сейчас в теме
(5) тогда сос

6. В обработке "НастройкаПравДоступа" - в панель "ПанельОбластейДанных" добавляем новую страницу "Кассы" с табличным полем "ТаблицаПарвДоступа_Кассы", а также пару строк в процедуры. Сама обработка приложена к публикации. Ее кстати можно будет вставить во внешние обработки и вызывать оттуда, а не заменять встроенную.

это как вот? Делается? - а также пару строк в процедуры - что именно и в какие процедуры
9. Mikeware 9 20.02.19 07:29 Сейчас в теме
(7) в
Функция ПолучитьСписокОбластейДанных(ТипДанных)

Процедура ПередОткрытием(Отказ, СтандартнаяОбработка)

- смотри и делай по аналогии, например с Организациями
11. zayden 17 20.02.19 08:37 Сейчас в теме
6. acanta 19.02.19 10:26 Сейчас в теме
Спасибо огромное, лучший пример и очень доступно о такой сложной и нелюбимой области как rls. Единственное - в шапках отчета как можно определить по каким ограничениям они построены?
8. Diego_Iv 34 19.02.19 17:29 Сейчас в теме
(6) В отчетах никак не отображаются наложенные ограничения.
Это касается не только ограничения по кассам, а и любого другого.

Если пользователю, например, разрешена только одна организация - во всех отчетах и справочниках он просто будет видеть свою разрешенную организацию и даже не подозревать, что в базе есть какие-то иные.
10. Mikeware 9 20.02.19 07:31 Сейчас в теме
(8) Это если RLS настроена на регистры(вообще данные) по которыми строится отчет. иначе получится, что отчет построен - а вот вместо запрещенных объектов <Объект не найден...>
12. Diego_Iv 34 20.02.19 14:15 Сейчас в теме
(10) Да, совершенно верно. Спасибо за уточнение.
13. Mikeware 9 21.02.19 07:14 Сейчас в теме
Интересна кому-нибудь обработка тестирования RLS от имени пользователя? (а то есть сделанная на основе https://infostart.ru/public/288530/, но надо причесать-пригладить прежде чем выкладывать)
14. hacibaba 30.07.21 19:00 Сейчас в теме
Здраствуйте спасибо вам. Просто сейчас после того как я поставил ограничение по кассе , после этого в отчете Ведемость по денежным средствам, пропали движение по банковским счетам.. В отчете видно результаты только по кассам которым поставлено ограничения. Как это можно испарваить ?
Оставьте свое сообщение