1с настройка видимости по ролям

Обновлено: 04.07.2024

Сегодня мы поработаем с формой и научимся на ней прятать элементы - устанавливать видимость их (Рисунок 1).

На рисунке 1 изображена форма элемента, на которой есть элементы на форме в отображении списка - это синий прямоугольник, а на самой форме их нет - это жёлтый прямоугольник. То есть они есть, но они там не отображаются.

Это называется пользовательская видимость.

Делается она следующим образом: выделяется элемент на форме, открывается палитра свойств этого элемента и на свойстве "Видимость" снять галочку (Рисунок 2).

Снять/поставить галочку - это значит, что будет виден элемент или не будет виден. А если сказать иначе, то это Истина - галочка стоит и элемент виден, Ложь - галочка снята и элемент не виден.

Сохраните все изменения и увидите, что в пользовательском режиме они у вас теперь не будут отображаться, однако есть интересный момент: для поля "Наименование" установлено свойство "Проверка заполнения со значением Выдавать ошибку". Это свойство означает, что это поле обязательно должно быть заполнено и платформа выдаст ошибку, если оно будет пусто и не даст записать в базу. Запустите и нажмите кнопку "Записать и закрыть" и получите уведомление (Рисунок 3).

Как же так получается, что поля на форме нет, но платформа предупреждает нас, что это поле не заполнено?

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

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

Проще всего это сделать с полем, у которого отображение будет в виде галочки. То есть если галочка будет стоять, то поле будет видно, а иначе поле будет спрятано. Давайте попробуем сделать это. Для этого необходимо добавить на форму еще один реквизит с типом "Булево" (Рисунок 3).

После этого необходимо перейти на форму и переместить его на форму (Рисунок 4).

Обратите внимание на рисунок 4, у поля "Видимость" галочка не стоит, а значит по умолчанию стоит значение Ложь!

Теперь необходимо прописать процедуру. Чтобы прописать, необходимо понять как это будет работать!

А работать это будет следующим образом: как только мы меняем значение поля "Показать/Скрыть", так сразу исчезает/появляется поле "Число". Все происходит именно в таком порядке. Чтобы это работало у платформы есть специальные события, а в данном случае нужно событие "ПриИзменении".

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

Создадим на форме группу (папку) и поместим в нее элемент, который будем прятать (убирать видимость) - поле "Число" (Рисунок 5).

Выделим поле "Показать/Скрыть" и найдем свойство и оно же событие "ПриИзменении" (Рисунок 5).

Нажмем на значок увеличительного стекла и создадим процедуру на клиенте (Рисунок 6).

В создавшейся процедуре убираем закомментированную строку и вместо нее прописываем нашу (Рисунок 7).

Этот код означает следующее:

1. Если - начало условия;

2. Объект.ПоказатьСкрыть - обращение к элементу формы;

3. Объект.ПоказатьСкрыть = Истина - само условие;

4. Элементы.Группа1 - обращение в элементу "Группа1";

5. Видимость - пользовательская видимость;

6. Элементы.Группа1.Видимость = Истина - папка с находящимися в ней элементами будет видна;

7. Элементы.Группа1.Видимость = Ложь- папка с находящимися в ней элементами будет не видна. КонецЕсли - окончание выполнения условия.

Запустите пользовательский режим и проверьте изменения. Как только поставите галочку, ничего не изменится. Снимете галочку, поле "Число" исчезнет, а как поставите галочку, так сразу же оно и появится.

Так и только так работает это событие - при изменении значения, то есть ставишь галочку или убираешь, начинает срабатывать событие и выполняться условие.

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

Ссылка для вступления телеграм-канал - t.me.Apiscourses

Подписаться в группу ВКонтакте

Прошлые уроки:

На этом все. Жду Вас на следующем занятии.

P.S. Подписывайтесь на мой канал :-)

программирование программирование 1с 1с предприятие обучение онлайн обучение 1с

Проверка прав доступа

Область применения: управляемое приложение, обычное приложение.

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

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

Эти меры позволяют:

  • существенно упростить работу из кода с элементами управления, которые пропадают из коллекции Элементы (код Элементы.ИмяЭлемента.ИмяСвойства становится нерабочим);
  • повысить устойчивость кода к пересмотру состава ролей в конфигурации;
  • организовать контроль использования ролей в конфигурации (в противном случае, выполнять анализ прав доступа по флажкам, назначенных для ролей в различных элементах произвольных форм конфигурации, крайне затруднительно).

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

3. Для проверки прав доступа в коде следует использовать метод ПравоДоступа .
Например, неправильно:

Если РольДоступна("ДобавлениеИзменениеСтранМира") Тогда .
Если РольДоступна("ПросмотрОтчетаПопулярныеСтраны") Тогда .

Если ПравоДоступа("Редактирование", Метаданные.Справочники.СтраныМира) Тогда .
Если ПравоДоступа("Просмотр", Метаданные.Отчеты.ПопулярныеСтраны) Тогда .

Такой подход позволяет повысить устойчивость кода к пересмотру состава ролей в конфигурации.

4. В тех случаях, где роль не дает никаких прав на объекты метаданных, а служит только для определения того или иного дополнительного права, следует использовать метод РольДоступна . При использовании в конфигурации Библиотеки стандартных подсистем (БСП) следует использовать функцию РолиДоступны общего модуля Пользователи :
Например, без использования БСП:

Если РольДоступна(. ) Или <ЭтоПолноправныйПользователь> Или ПривилегированныйРежим() Тогда .

Для демонстрации настройки видимости подсистем по ролям нам понадобятся два пользователя и две роли. Сначала создадим две роли – Администратор и Сотрудник. В дереве конфигурации перейдем в ветвь Общие > Роли, создадим новую роль, дадим ей имя Администратор. Отметим права на доступ ко всем объектам (можно выполнить команду Действия > Установить все права), установим флажок Устанавливать права для новых объектов, рис. 1.20 Тем самым, при создании новых объектов, права на выполнение различных действий с ними будут добавляться к роли автоматически.

Настройка роли Администратор

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

Выполним уже знакомую вам команду контекстного меню корневого элемента дерева конфигурации Открыть командный интерфейс конфигурации, в окне Командный интерфейс снимем флаг напротив раздела Администрирование у роли Сотрудник, остальные флаги должны быть установлены, рис. 1.21.

Настройка видимости разделов по ролям


Рис. 1.21. Настройка видимости разделов по ролям

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

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

Создание нового пользователя

Перейдем на вкладку Прочие и в списке Доступные роли установим роль Администратор, рис. 1.23.

Настройка доступных ролей

Добавим в список второго пользователя, дадим ему имя Директор, на закладке Прочие установим среди доступных ролей роль Сотрудник. В итоге окно Пользователи примет такой вид, рис. 1.24.

Список пользователей

Теперь внесем в нашу конфигурацию еще одно изменение. Добавим в ветвь Справочники новый справочник, назовем его Сотрудники ( реквизит Имя на вкладке Основные) и добавим во все подсистемы, рис. 1.25.

Новый справочник, добавленный во все подсистемы


Рис. 1.25. Новый справочник, добавленный во все подсистемы

Проверим результаты нашей работы в режиме 1С:Предприятие. После запуска конфигурации появится окно выбора пользователя, рис. 1.26.

Окно выбора пользователя

Выбрав в списке пользователей пользователя Администратора отметим, что панель разделов в его командном интерфейсе имеет закладки для каждой из подсистем. Выбрав пользователя Директор, можно заметить, что его панель разделов не содержит раздела Администрирование.

Выводы

В этой лекции мы рассмотрели особенности установки 1С:Предприятие 8.2. – теперь на одном компьютере могут существовать различные версии системы, всеми ими можно пользоваться. Так же мы рассмотрели конвертацию информационных баз , разработанных для 1С:Предприятие 8.1., в формат, подходящий для работы в 1С:Предприятие 8.2. Мы ознакомились с процессом создания новой информационной базы , приступили к разработке прикладного решения, создав подсистемы, которые являются основой командного интерфейса, и настроив видимость разделов интерфейса по ролям для различных пользователей, воспользовавшись объектами Роль и Пользователь .

Рабочий стол нужен для ускорения доступа пользователя к наиболее часто используемым объектам системы. Это – одна из закладок командного интерфейса, которая появляется первой при открытии конфигурации в пользовательском режиме.

Наша подсистема видна в верхней части окна программы, в так называемой панели разделов. Она снабжена стандартным рисунком, назначаемым автоматически, подпись соответствует синониму. Щелчок по вкладке "Бухгалтерский учет" приведет нас к командам по работе с объектами конфигурации, которые включены в эту подсистему.

Здесь хочется обратить ваше внимание на кнопку Главное меню. Она открывает меню , содержащее стандартные для Windows-программ команды, рис. 1.14.

Главное меню в режиме 1С:Предприятие

В сравнении с 1С:Предприятие 8.1. в составе разделов этого меню многое поменялось (в особенности это касается разделов Вид, Сервис). В частности, обратите внимание на команду Главное меню > Все функции. Эта команда , рис. 1.15., открывает доступ к дереву объектов конфигурации, позволяет использовать некоторые стандартные команды.

Окно Все функции

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

Вернемся в Конфигуратор , добавим к списку подсистем, которые следует создать, еще одну:

Теперь создадим полный набор подсистем, рис. 1.16.

Набор подсистем конфигурации

Снова откроем конфигурацию в режиме 1С:Предприятие, рис. 1.17.

Панель разделов после добавления подсистем


Рис. 1.17. Панель разделов после добавления подсистем

Логично было бы расположить разделы нашего прикладного решения таким образом, чтобы раздел Администрирование оказался в правой части панели. Обычно наиболее часто используемые команды располагают левее и выше других. Можно заметить, что порядок расположения разделов не соответствует порядку расположения объектов Подсистема в дереве конфигурации (обратитесь к двум предыдущим рисункам для того, чтобы это увидеть). Для того чтобы изменить порядок следования подсистем в панели разделов нужно воспользоваться командой контекстного меню корневого объекта дерева конфигурации Открыть командный интерфейс конфигурации, рис. 1.18.

Открыть командный интерфейс конфигурации


Рис. 1.18. Открыть командный интерфейс конфигурации

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

Настройка командного интерфейса

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

Читайте также: