Настройку прав доступа рассмотрим на примере решения задачи.
Возможны два варианта решения:
- С использованием существующих ролей в конфигурации (быстрый вариант, невозможно досконально настроить права)
- С созданием новой роли в конфигураторе (сложный вариант, требует времени и знаний)
Разберем первый вариант — создание Профиля групп доступа на основе существующих ролей. Тут возможны два варианта А и Б.
Содержание
- Вариант А – Данные бухгалтерии доступны для просмотра (только чтение) пользователям подсистемы путевые листы
- Вариант Б – Максимальное ограничение
Вариант А – Данные бухгалтерии доступны для просмотра (только чтение) пользователям подсистемы путевые листы
1. Переходим Администрирование -> Настройки пользователей и прав
2. Открываем Профили групп доступа и создаем новый Профиль
Назовем его Путевые листы
3. Выставляем необходимые права
Профиль групп доступа для доступа к путевым листам обязательно должен содержать роли "Путевые листы, Базовые права (Победасофт)" и "Путевые листы (Победасофт)", остальные роли по необходимости в соответствии с задачей.
4. Сохраняем
5. Присваиваем профиль Путевые листы конкретным пользователям
Переходим в раздел пользователи
Присваиваем профили Путевые листы и Только просмотр
Вариант Б – Максимальное ограничение
1. Переходим Администрирование -> Настройки пользователей и прав
2. Открываем Профили групп доступа и создаем новый Профиль
Назовем его Путевые листы
3. Выставляем необходимые права
Профиль групп доступа для доступа к путевым листам обязательно должен содержать роли "Путевые листы, Базовые права (Победасофт)" и "Путевые листы (Победасофт)", остальные роли по необходимости в соответствии с задачей.
Устанавливаем «базовые» права, чтобы пользователь мог войти в программу (можно создать отдельный профиль групп доступа, но мы этого делать не будем)
Все объекты ветки «Стандартные подсистемы» выделены для примера. При необходимости вы можете управлять разрешениями по своему усмотрению.
Устанавливаем дополнительные права, без которых интерактивная работа с данной типовой конфигурацией невозможна (актуально для Бухгалтерия предприятия, редакция 3.0 [3.0.40.34]).
4. Сохраняем
5. Присваиваем профиль Путевые листы конкретным пользователям
О чем эта статья
Статья входит в цикл «Первые шаги в разработке на 1С». В ней мы продолжаем знакомиться с управляемым интерфейсом «Такси» и приступаем непосредственно к его конфигурированию.
Как известно, разработка интерфейса информационной базы начинается с создания структуры его меню, ведь насколько удобным и логичным оно будет, настолько понятным пользователю будет вся система в целом.
Прочитав статью, вы узнаете:
- Какую роль в формировании структуры меню играет подсистема?
- Как сформировать разделы меню 1-го и 2-го уровня?
- Как настроить состав команд, отображаемых в разделах меню?
- Для чего нужен редактор Командного интерфейса и как с ним работать?
- Как настроить Командный интерфейс основного раздела?
Применимость
В статье рассматривается интерфейс «Такси» конфигурации, разработанной на платформе 1C 8.3.4.496. Информация актуальна для текущих релизов платформы.
Подсистемы. Настройка интерфейса с помощью подсистем
Подсистемы относят к общим объектам. Они обеспечивают возможность классификации объектов конфигурации по Подсистемам.
Для указания принадлежности объекта к подсистемам в Окне редактирования объекта существует соответствующая закладка, на которой флагами отмечается, к каким подсистемам относится объект.
В дальнейшем можно выстроить фильтр дерева объектов по Подсистемам.
При этом имеется возможность управления: включать для выбранных Подсистем объекты подчиненных Подсистем и родительских Подсистем или нет.
Классификация объектов по Подсистемам создает удобство при создании Ролей.
Для объекта Роль можно определить соответствующие права и указать, что данную Роль можно построить только по тем объектам, которые входят в выбранные Подсистемы.
Похожим образом Подсистемы используются при создании Интерфейсов. Интерфейсы нужны только в том случае, если конфигурация запускается в режиме Обычного приложения.
Классификация объектов по Подсистемам используется также при объединении конфигураций. Т.е. можно объединять объекты, отфильтрованные по Подсистемам.
Важное предназначение Подсистем состоит в том, что от них строится командный интерфейс конфигурации в режиме Управляемое приложение. Подсистемы первого уровня определяют Панель разделов.
Для существующих Подсистем можно определять вложенные (подчиненные). Данные Подсистемы будут образовывать группы Панели навигации.
Не рекомендуется создавать подсистемы с уровнем вложенности больше двух, так как в противном случае интерфейс будет сложно читаемым.
Когда мы классифицируем объект по Подсистемам, возможно включить объект только во вложенную Подсистему, возможно в Подсистему первого уровня, возможно и в ту и в другую.
В последнем случае объект будет отображаться дважды: и внутри вложенной Подсистемы и отдельно в Панели навигации. В большинстве случаев это не совсем правильно.
В принципе, Подсистемы являются не обязательным объектом. Т.е. конфигурация, разработанная на Платформе 8.3, вполне сможет работать без каких-либо Подсистем.
Но в этом случае Панели разделов вообще не будет, все будет отображаться на Рабочем столе. Очень простые конфигурации с малым набором объектов смогут работать и без Подсистем.
Но если в конфигурации достаточно много Документов, Справочников и Регистров, использование Подсистем существенно облегчает работу пользователя.
Отметить, что некоторый объект конфигурации принадлежит какой-либо Подсистеме можно тремя способами.
Во-первых, это можно сделать в Окне редактирования объекта на закладке Подсистемы. Данный вариант мы уже рассматривали.
Во-вторых, можно использовать Окно редактирования самой Подсистемы. На закладке Состав можно указать объекты, входящие в данную Подсистему.
И наконец, для объектов конфигурации через контекстное меню можно вызвать специальное диалоговое окно, которое называется Дополнительно.
Данное окно также позволяет для объекта отмечать принадлежность к Подсистемам. Это окно используется в том случае, если мы хотим сразу поработать с несколькими объектами.
При перемещении курсора по объектам дерева конфигурации в окне Дополнительно высвечивается соответствующая информация по подсистемам.
При создании объекта конфигурации по умолчанию Платформа 8.3 не проставляет привязку объекта ни к какой подсистеме.
Т.е. разработчик должен сам зайти на эту закладку и проставить соответствующие галочки.
Если разработчик этого не выполнит, то система определит отсутствие принадлежности к Подсистемам как ошибку.
Но ошибка не является критичной, поэтому с этим можно согласиться.
Фактически система справочно сообщает о том, что, возможно, Вы забыли включить новые объекты в Подсистемы. В этом случае объекты не будут отображаться в командном интерфейсе.
К таким объектам пользователь может обратиться только через Главное меню, используя команду Все функции.
Естественно, чтобы объект возможно было открыть, необходимо, чтобы пользователю были предоставлены соответствующие права.
Существует ряд случаев, когда разработчикам удобнее включать добавленные в типовую конфигурацию объекты в свою отдельную подсистему.
Для Подсистем в Окне редактирования можно снять флаг Включать в командный интерфейс.
При этом Подсистемы не будут отображаться в командном интерфейсе. Если нет ни одной Подсистемы, которая должна быть включена в командный интерфейс, то для новых объектов Платформа 8.3 не проверяет принадлежность к какой-либо подсистеме.
Для того, чтобы настроить состав команд, которые включаются в соответствующий раздел, определяемый подсистемой, существует специальный редактор.
Данный редактор можно вызвать из окна редактирования Подсистемы нажатием на кнопку Командный интерфейс (на закладке Основные).
Можно для каждой Подсистемы вызвать данный редактор. Из редактора имеется возможность управлять открытием списков в Панели навигации, доступностью команд в Панели действий.
По умолчанию флажки для команд по созданию элементов Справочников и Документов сняты, но их можно проставить. В Панели действий можно также открывать отчеты.
Элементы в редакторе можно перемещать. При этом из Панели навигации в Панель действий и в обратном направлении перемещение невозможно. Перемещать элементы можно либо внутри Панели навигации, либо внутри Панели действий.
Существуют колонка общей видимости и колонки видимости по ролям. Для каждой роли, определенной в конфигурации, будет своя колонка. То значение, которое установлено в колонке общей видимости, является значением по умолчанию для видимости по ролям.
Видимость по ролям может принимать три значения: либо для данной роли элемент будет невидимым (1); либо будет виден всегда, не зависимо от того, какой флаг выставлен в колонке видимости (2); либо флаг видимости по роли будет наследоваться от флага общей видимости (3).
Если пользователю назначены две роли и для одной их них указан флажок, а для другой нет, то будет работать стандартное правило системы 1С:Предприятие 8 – действие пользователю разрешено, если оно разрешено в одной из ролей.
Иногда бывает необходимо сразу менять командный интерфейс в нескольких Подсистемах. В платформе 1C:Предприятие 8 существует сервисный инструмент, который позволяет редактировать командный интерфейс сразу нескольких Подсистем.
Данный инструмент вызывается из контекстного меню корневого узла ветки Подсистемы.
В открывшемся окне можно быстро перемещаться по Подсистемам и редактировать командные интерфейсы. Кроме того, в данном окне можно редактировать состав Подсистемы. Также можно перемещать объекты в Панели навигации и Панели действий.
Кроме того, можно даже изменить подчиненность Подсистемы. Для этого есть специальная кнопка Переместить подсистему.
Чтобы настроить командный интерфейс Основного раздела также используется редактор командного интерфейса.
Вызывается он уже не для Подсистем, а через контекстное меню корневого узла конфигурации, пункт Открыть командный интерфейс основного раздела.
В открывшемся окне мы можем указывать: какие Справочники, Документы и другие объекты входят в данный командный интерфейс. Также можно включать их видимость и управлять видимостью по ролям.
Следует иметь в виду, что при удалении Подсистем Платформа, к сожалению, не проверяет: входит ли в данную подсистему хоть один объект или не входит.
После удаления Подсистемы при сохранении конфигурации никаких сообщений о реструктуризации информационной базы не выводится.
На этом завершим наше знакомство с настройкой структуры меню информационной базы. В следующей статье мы продолжим наше знакомство с Управляемым интерфейсом и рассмотрим, какие возможности предоставляет платформа «1С:Предприятие 8» для работы со списками.
PDF-версия статьи для участников группы ВКонтакте
Если Вы еще не вступили в группу – сделайте это сейчас и в блоке ниже (на этой странице) появятся ссылка на скачивание материалов.
Статья в PDF-формате
Вы можете скачать эту статью в формате PDF по следующей ссылке: Ссылка доступна для зарегистрированных пользователей)
Ссылка доступна для зарегистрированных пользователей)
Ссылка доступна для зарегистрированных пользователей)
Ссылка доступна для зарегистрированных пользователей)
4 комментариев для “ Подсистемы. Настройка интерфейса с помощью подсистем (бесплатная статья по Программированию 1С)
из цикла статей «Первые шаги в разработке на 1С» ”
Все хорошо.
Можно еще в начале добавить про то, что можно свои добавленные в типовую конфигурацию объекты включать в отдельную свою подсистему.
И пару снимков – много объектов метаданных без фильтра по подсистемам и объекты только своей подсистемы.
Спасибо, про то, что можно добавленные в типовую конфигурацию объекты включать в отдельную свою подсистему добавим. Замечание интересное. Пример (снимок) фрагмента дерева объектов с фильтром по двум подсистемам (Закупки и Деньги) приведен. Полное дерево объектов (без фильтра по подсистемам) займет много места, понятно, что оно будет значительно больше, а увидеть его в конфигурации совсем не сложно. Мы стремимся не делать рисунки очень большими и вытянутыми по длине. Наоборот, стараемся показать некий фрагмент, из которого виден смысл.
Статья и полезная и достаточно подробная!
Но все-же есть несколько замечаний:
1.Первый абзац неплохо-бы немного переформулировать, объяснять для чего нужна подсистема через саму подсистему не самый понятный метод, для тех кто не знает что такое подсистема.
2.Не совсем верно утверждение “Классификация объектов по Подсистемам используется также для создания Ролей.”, тут скорее не “используется”, а “может” или “удобно” или так “часто используется”. Кроме того можно ещё заострить внимание что Роли и Подсистемы как прямоугольная матрица (одни из них строки – другие столбцы), т.е. акцентировать внимание на том, что это независимые объекты.
Да, правильнее сказать, что классификация объектов по Подсистемам создает удобство при создании Ролей, а не используется для создания ролей.
Как известно, механизм настройки прав доступа в современных конфигурациях достаточно сложен. Всю настройку необходимо выполнять в пользовательском режиме 1С. Хорошо это или плохо – вопрос спорный. Конечно, появились новые возможности, но, как обычно, сложность возросла в прогрессии. Теперь, настроить права доступа «интуитивно» не получится. Необходимо, как минимум, познакомиться с основными объектами и понять основные принципы работы с ними. Я уже не говорю об внесении каких-либо изменений или дополнений. Я уже писал ранее статью про использование шаблонов в RLS. Она заключалась в описании основных шаблонов ограничения прав доступа на уровне записей. В данной же статье, я хочу привести более общее описание механизма настройки прав доступа (на уровне записей, в том числе). Описать основные объекты и регистры, и дать общие рекомендации по расширению механизма.
Общие принципы настройки подсистемы прав доступа
Как я написал выше, теперь абсолютно все настройки необходимо выполнять в пользовательском режиме.
Для чего это было сделано?
Во-первых, количество ролей в современных конфигурациях сильно увеличено. По сути для каждого объекта или небольшой группы объектов теперь существует по две роли – на чтение и на запись. Также существует большое количество вспомогательных ролей, значения которых используются в различных механизмах системы. Например «Отклонение от условий продаж». Чтобы избежать необходимости назначать каждому отдельному пользователю или группе пользователей всего этого количества ролей, в системе существуют два дополнительных объекта – справочника, которые позволяют оптимизировать этот процесс. Ниже приведена общая схема назначения прав доступа:
Рассмотрим эти справочники более подробно.
Профили групп доступа
Элементы данного справочника содержат наборы ролей конфигурации. Точнее, наборы ссылок на элементы справочников: «Идентификаторы объектов метаданных» и «Идентификаторы объектов расширений» описывающие роли заданные в конфигураторе.
Каждый профиль объединяет в себе все роли, необходимые для работы с определенной подсистемой. Например: «Менеджер по продажам», «Кладовщик».
Дополнительно, профили групп доступа содержат наборы видов и значений доступа для реализации ограничения прав на уровне записей. Об этом будет написано отдельно.
Элементы данного справочника служат для привязки профиля к конкретным пользователям или группам пользователей. Группы доступа, так же как и профили содержат наборы видов и значений доступа, для ограничения прав на уровне записей.
В одну группу доступа может входить несколько пользователей или групп пользователей, что позволяет выполнять настройки прав одновременно для большого количества пользователей.
На заметку. В системе существует режим упрощенного интерфейса настройки прав доступа. В упрощенном режиме профили назначаются непосредственно пользователям системы, и настройки ограничений прав доступа на уровне записей также выполняются для каждого пользователя отдельно. Однако, группы доступа, в данном случае, создаются неявно и присваивается пользователю для которого выполняется настройка, образуя связь – «один к одному».
В информационной базе присутствуют предопределенные профили, изменение которых запрещено. Для добавления дополнительных прав для пользователя, необходимо или создать новый профиль или сделать копию предопределенного и внести в него необходимые изменения.
На заметку. Создание и использование копии предопределенного профиля чревато проблемами после выполнения обновления системы. Требуется проанализировать изменения базового профиля и внести аналогичные изменения в собственный. Это достаточно трудоемкий процесс. Для его автоматизации можно воспользоваться расширением, позволяющим создавать собственные профили на основании базовых. В этом случае, после обновления базового профиля все изменения будут автоматически перенесены в производный.
Ограничение доступа на уровне записей
В предыдущем разделе я уже коснулся этой темы. Теперь, разберем ее более подробно.
Как было описано выше, настройки ограничения доступа на уровне записей выполняются либо непосредственно в профилях, в этом случае, они будут действовать для всех групп доступа, созданных для данного профиля, либо в группах доступа. Для упрощенного варианта интерфейса настройки прав, они выполняются непосредственно для каждого пользователя (неявно, для группы доступа привязанной к каждому пользователю).
Ограничение на уровне записей выполняется в разрезе видов доступа.
Видами доступа могут быть любы объекты системы, по значениям которых можно выполнить отбор. В качестве видов доступа могут выступать:
- Отдельные объекты: организации, склады, подразделения, кассы…
- Группы объектов: группы контрагентов, группы номенклатуры, группы физических лиц.
- Составные объекты (группы объектов и объекты) – пользователи, внешние пользователи.
Существуют обязательные виды доступа: «Пользователи» и «Внешние пользователи». Причем, в состав разрешенных значений, текущий пользователь или текущий внешний пользователь включается автоматически.
Остальные виды доступа, доступные для системы, описываются непосредственно в каждой конфигурации, созданной на базе БСП, в процедуре общего модуля «УправлениеДоступомПереопределяемый >> ПриЗаполненииВидовДоступа ». Собственно, в этот же модуль, можно добавить собственный код для расширения списка доступных видов доступа.
Синтаксис добавления нового вида доступа следующий:
Для простых видов доступа достаточно заполнить только первые три свойства. Если необходимо ограничивать данные не по отдельным элементам, а по группам элементов, необходимо указать свойство «ТипГруппЗначений». Это должен быть отдельный справочник, значения которого необходимо выбрать для каждого элемента основного справочника (по которому выполняется ограничение). Причем, если дополнительно установлен флаг «НесколькоГруппЗначений», то в основном справочнике необходимо создать табличную часть для возможности привязки его элементов сразу к нескольким группам.
Процедура «ДобавитьДополнительныеТипыВидаДоступа» позволяет добавить дополнительный тип объектов, которые могут входить в группы, если используется ограничение по группам значений.
Если необходимости, можно указать условие использования нового вида доступа в зависимости от настроек системы, нужно добавить соответствующий код в процедуру «УправлениеДоступомПереопределяемый >> ПриЗаполненииИспользованияВидаДоступа »:
Дополнительно, требуется внести изменения в определяемые типы:
- ЗначениеДоступа — добавить тип значения доступа и тип группы значений доступа (если используются группы).
- ЗначениеДоступаСГруппамиЗначенийДоступаОбъект — добавить тип значения доступа, в случае, если для вида доступа указан тип группы значений доступа.
Внимание. После внесения вышеописанных изменений, для вступления настроек в силу, требуется выполнить обновление вспомогательных данных. Можно воспользоваться обработкой из состава конфигурации БСП «Обновление вспомогательных данных», раздел — «Управление доступом».
После всех описанных действий в системе появится новый вид доступа, который можно будет использовать для настройки прав на уровне записей как для существующих так и для новых объектов используя типовые шаблоны:
Подробнее об использование стандартных шаблонов ограничения прав на уровне записей читайте в этой статье.
Регистры, используемые для хранения значений видов доступа
Для хранения значений видов доступа, в системе применяются специальные регистры сведений. По данным этих регистров происходит обор записей в типовых шаблонах ограничения прав на уровне записей. Рассмотрим эти регистры подробнее.
Значения групп доступа по умолчанию
В регистре указываются общие сведенья об ограничениях, установленных для групп доступа.
Если значение ресурса «ВсеРазрешены = ложь», тогда разрешенные значения видов доступа настраиваются в регистре «Значения групп доступа». Если «ВсеРазрешены = истина» , тогда запрещенные значения видов доступа настраиваются в регистре «Значения групп доступа».
Если реквизит «ВсеРазрешеныБезИсключений = истина», тогда все значения видов доступа разрешены без исключений. То-есть, записи регистра «Значения групп доступа» — не анализируются при проверке прав.
Дополнительный реквизит «БезНастройки», говорит о том, что для текущей группы доступа отсутствует настройка по текущему виду доступа.
Значения групп доступа
Данный регистр работает в паре вышеописанным. В регистре указываются разрешенные или запрещенные значения видов доступа для групп доступа, в зависимости от заданных значений регистра «Значения групп доступа по умолчанию».
Группы значений доступа
Регистр используется основном для связи групп значений доступа со значениями доступа, для видов доступа, которые являются группами.
Дополнительно, регистр используется для других вспомогательных связей, используемых в основном для обновления данных этого регистра. В зависимости от значения реквизита «ГруппаДанных», связи могут быть следующие:
- 0 — Стандартные значения доступа . Связь: значение доступа >> группа доступа.
- 1 — Обычные/внешние пользователи . Связь: пользователь >> группа пользователей.
- 2 — Обычные/внешние группы пользователей . Связь: группа пользователей >> пользователь.
- 3 — Группы исполнителей . Связь: группа исполнителей задач >> группа пользователей или пользователь.
- 4 — Объекты авторизации . Связь: пользователь >> группа пользователя или пользователь.
Наборы значений доступа
Регистры содержит наборы значений видов доступа, используемые в шаблонах ограничения доступа: #ПоНаборамЗначений и #ПоЗначениямИНаборамРасширенный. Данные в регистре формируются автоматически при записи объектов системы, для которых применяются вышеуказанные шаблоны.
По своей сути, записи данного регистра определяют набор значений видов доступа, которые должны быть доступны в одной из групп доступа пользователя для доступности самого объекта. Значения видов доступа с одним и тем же номером набора объединяются по логическому «И». Наборы значений видов доступа с разным номером набора объединяются по логическому «ИЛИ».
Дополнительные регистры сведений, используемые для настройки прав
Права ролей – описание созданных в конфигурации ролей и их прав к объектам системы. Регистр используется для быстрого получения прав на таблицы для текущего пользователя, в отчете «Права доступа» и в некоторых других механизмах системы .
Таблицы групп доступа – наличие прав доступа у групп доступа к объектам системы. Ресурс «Изменение» говорит о наличие доступа не только на чтение. Используется в шаблонах ограничения доступа на уровне записей для проверки права доступа у группы доступа к объекту системы.
НастройкиПравОбъектов , НаследованиеНастроекПравОбъектов — данные регистры используются для настройки прав к отдельным объектам системы, если это необходимо. Настройка аналогична настройки прав к папкам и файлам операционной системы. Необходимые разрешения должны быть указаны в процедуре общего модуля: «УправлениеДоступомПереопределяемый >> ПриЗаполненииВозможныхПравДляНастройкиПравОбъектов». Объекты, для которых необходимо использовать данную настройку прав, необходимо включить в определяемые типы: «ВладелецНастроекПрав», «ВладелецНастроекПравОбъект». Также, необходимо добавить их в тип общей команды «НастроитьПрава».
Данный отчет выводит информацию о текущих правах доступа пользователя для каждого объекта системы, а также, обо всех ограничениях доступа на уровне записей.
Отчет вызывается из формы настроек прав доступа для каждого пользователя:
Для корректной работы отчета необходимо корректное заполнение состава видов доступа, которые используются для ограничения прав на уровне записей, в процедуре «УправлениеДоступомПереопределяемый >> ПриЗаполненииВидовОграниченийПравОбъектовМетаданных».
Это следует иметь в виду при добавлении новых видов доступа!
Данные можно дополнить вручную добавив строки следующего вида:
Или воспользоваться обработкой из состава конфигурации БСП «УправлениеДоступом»:
На этом все. Спасибо за внимание и до скорых встреч.
Другие мои статьи по различным механизмам БСП в типовых конфигурациях 1С :