[Расширения] Управление видимостью разделов для разных пользователей

16.11.18

Администрирование - Информационная безопасность

Как скрыть/показать раздел в управляемом приложении используя расширение, на примере БП 3.0

Скачать исходный код

Наименование Файл Версия Размер
[БП 3.0] [Расширения] Управление видимостью разделов для разных пользователей v1.0.0.1:
.cfe 16,04Kb
37
.cfe 1.0.0.1 16,04Kb 37 Скачать

Управление видимостью разделов для разных пользователей.

 

Возникла задача добавить в интерфейс БП 3.0 новые разделы, причем видно их должно быть только тем пользователям, которым это дозволено.

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

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

В общем, по итогам вышло так:

1. Создаём дополнительное сведение для справочника «Пользователи», например «Доступный раздел», с типом значения «Дополнительное значение». Значениями которого сделаем «Вот такой раздел» и «Совсем другой раздел».

Как сделать? Администрирование – Общие настройки – «Дополнительные реквизиты и сведения» устанавливаем одноимённый флаг, затем гиперссылка «Дополнительные сведения». Ищем справочник «Пользователи», жмём «Создать», в поле наименование пишем «Доступный раздел», жмём «Записать», потом на закладке «Значения» создаём две, поименованные выше, строки.

2. Создаем расширение «СкрытьПоказатьРазделыПользователям»

Как сделать? В конфигураторе «Конфигурация» - «Расширения конфигурации» жмём «Добавить». В имени пишем «СкрытьПоказатьРазделыПользователям», Префикс «_еаю», назначение «Дополнение»:

Галки делаем  как на картинке.

3. В модуле управляемого приложения расширения создаём процедуру:

&После ("ПриНачалеРаботыСистемы")
Процедура _ПриНачалеРаботыСистемы()
	
	еаю_ОбработчикиКлиент.ПроверитьПравоПользователя();
	
КонецПроцедуры

Как сделать? ПКМ на первой строке расширения «Открыть модуль управляемого приложения». Туда копируем приведённый выше текст.

4. Добавляем в расширение все измерения и ресурс регистра сведений «ДополнительныеСведения»

Как сделать? В дереве конфигурации ветка «Регистры сведений» находим «ДополнительныеСведения», открываем вету «Измерения», и на каждом измерении» ПКМ выбираем «Добавить в расширение», затем это же делаем с ресурсом, получим:

5. Добавляем в расширение два справочника, например «Контрагенты» и «Номенклатура». Добавление аналогично п.4, только никаких реквизитов не добавляем, для примера нам достаточно только справочников.

6. Создаем две подсистемы в расширении «еаю_ВотТакаяПодсистема» и «еаю_СовсемДругаяПодсистема». В состав первой добавляем справочник «Контрагенты», с состав второй «Номенклатура». В обеих подсистемах устанавливаем флаг «Включать в командный интерфейс».

7. Добавляем две роли в расширение «еаю_ВТР» и «еаю_СДР», в ревой делаем доступной подсистему «еаю_ВотТакаяПодсистема», во второй «еаю_СовсемДругаяПодсистема»

Как сделать? В конфигураторе в ветке «Роли» открываем нужную роль, и с дереве прав в ветке подсистемы устанавливаем флаг «Просмотр» для соответствующей подсистемы:

8. Создаем два общих модуля еаю_ОбработчикиКлиент (галка «Клиент (Управляемое приложение)») и еаю_ОбработчикиСервер (галки «Сервер» и «Вызов сервера»)

еаю_ОбработчикиКлиент:

Процедура ПроверитьПравоПользователя() Экспорт
	Перезапуск = еаю_ОбработчикиСервер.ПроверитьПравоПользователяСервер();
	Если Перезапуск Тогда
		ЗавершитьРаботуСистемы(Ложь, Истина);
	КонецЕсли;
КонецПроцедуры

еаю_ОбработчикиСервер:

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

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

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

Интерфейс управляемого приложения

См. также

Богатый редактор картинок, хранимых в базе, с возможностью РИСОВАНИЯ. Редактор внешних файлов картинок. Объект, расширяющий возможности работы с картинками из встроенного языка (Три в одном) + Обработка «Стандартизация картинок»

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

Обработка предназначена для редактирования картинок в режиме «Предприятие», с возможностью РИСОВАТЬ на них. Поддерживается работа как в обычных формах (толстый клиент) так и на управляемых формах (тонкий клиент). Обработка позволяет редактировать как картинки, хранимые в базе, так и графические файлы с диска на файловой системе. Помимо базовых функций (изменение размеров, преобразование формата, обрезание картинки, повороты и т.п.) – редактор имеет богатый набор инструментов для рисования. Доступна функция вставки изображения из буфера обмена. Также обработка может быть использована из встроенного языка как объект для редактирования картинок. Объект может быть использован: на стороне клиента, на стороне сервера, из внешнего соединения. Данная обработка будет особенно полезна тем, кто вносит картинки в базу (изображения номенклатуры, фотографии физических лиц и т.п.). Функционал реализуется с использованием JavaScript и бесплатного ПО ImageMagick (без использования внешних компонент).

6000 руб.

16.01.2015    61945    43    59    

81

[Расширения] Динамическое управление видимостью и доступностью элементов форм (УФ) (8.3.6+)

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

Механизм «Динамическое управление доступом к элементам форм объектов 1С8» предназначен для обеспечения возможности оперативного управления видимостью и доступностью элементов форм документов и справочников продуктов фирмы «1С» «1С:Предприятие 8». Решение универсальное, встраивается в любую конфигурацию с минимальными доработками, что позволяет без проблем обновлять типовые решения.

5000 руб.

14.01.2016    54574    16    21    

42

Управление дашбордами

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

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

2400 руб.

29.06.2020    16827    21    4    

35

AUTO VPN (portable)

Информационная безопасность Платные (руб)

Автоматизация подключения пользователей к удаленному рабочему месту или сети посредством создания автоматического VPN (L2TP или L2TP/IPSEC и т.д.) подключения без ввода настроек пользователем (с возможностью скрытия этих настроек от пользователя). Программа автоматически выполняет подключение к VPN серверу и после успешного коннекта , если необходимо, подключение к серверу удаленных рабочих столов (RDP).

1200 руб.

24.03.2020    14456    22    32    

33

Модель состояния для MVC

Работа с интерфейсом Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

"MVC плохо применима в 1С" - познакомьтесь с моделью состояния и, возможно, ваше мнение поменяется! Представленное решение является эволюционным развитием идеи реализации MVC для 1С. В новой версии добавлены DSL для описания модели состояния, а также параметризация свойств параметров и элементов формы.

1 стартмани

05.07.2022    3849    kalyaka    4    

29

Табло очереди заказов на экран телевизора

WEB-интеграция Работа с интерфейсом Платформа 1С v8.3 1С:Розница 2 Платные (руб)

Связка из веб-приложения и расширения для 1С: Розница 2.3.

3600 руб.

29.04.2022    12206    1    5    

10

Условное оформление элементов форм в пользовательском режиме 1С (управление видимостью и доступностью элементов форм)

Работа с интерфейсом Платформа 1С v8.3 Платные (руб)

Подсистема условного оформления элементов форм (далее подсистема) предназначена для настройки оформления элементов форм (видимость, доступность, цвет фона, цвет текста и прочее) в пользовательском режиме 1С. Также подсистему возможно использовать для ограничения доступа к реквизитам формы для определенных пользователей (или групп пользователей).

6000 руб.

18.01.2022    8886    1    2    

6
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. insurgut 207 06.07.18 05:54 Сейчас в теме
Как скрыть раздел Главное? ))
simuljakr; +1
2. Alex_E 2353 06.07.18 06:29 Сейчас в теме
(1) Никак... Можно, конечно, скрыть вообще все разделы, отключив панель или используя самопальную обработку в режиме рабочего стола, с блокировкой всего интерфейса. В таком случае можно вообще всё спрятать, правда весь интерфейс придётся самостоятельно описывать...
+
3. insurgut 207 06.07.18 06:42 Сейчас в теме
(2) вот и я пришел к тому, что отдельную обработку рабочего стола рисовать пришлось со скрытием всех разделов, чтобы ограничить поле видимости определенных пользователей. Есть ещё Полнотекстовый поиск - эта штука вообще со всеми потрохами любому встречному поперечному все показывает. Ужас. Впрочем, это уже лирика к данной разработке никакого отношения не имеющая.
+
4. Alex_E 2353 06.07.18 06:52 Сейчас в теме
(3) Полнотекстовый поиск - фишка, которой при появлении 8-ки аплодировали на парнёрском семинаре. О.Фогель показал - это было круто ... пока не стал работать. Оказалось, что львиная доля тормозов приходится как раз на обновление и слияние индексов этого самого пресловутого ПДД, который я практически во всех конфигурациях, с которыми работаю, отключаю сразу - заметный прирост в скорости виден невооружённым глазом...
А про скрытие разделов - кроме главного всё можно спрятать, но, если нужно кому-то что-то серьёзно ограничить - у меня подход такой, как и в этой публикации - пользователю прописывается доп.сведение, для которого ПриНачалеРаботыСистемы запускается обработка. Закрывается обработка - выходит из программы, так что видит он только то, что в обработке прописано - никаких шагов вправо влево и прыжков на месте просто не может быть))))
insurgut; +1
5. Bene_Valete 188 06.07.18 10:16 Сейчас в теме
(4) Прошу прощения, если не по теме, а что еще входит в топ тормозов типовых конфигураций? Очень хочется найти причину тормозов ЗУП 3 по сравнению с предыдущей редакцией, причем не постоянных, а периодических..
+
6. Alex_E 2353 06.07.18 12:18 Сейчас в теме
(5) Как - то не задумывался над составлением списка ТОП тормозов)))).
Начнём с того, что управляемое приложение, не смотря на всю "тонкость клиента", ИМХО, более тяжеловесно для железа, если конечно не использовать веб.
Про ТОП:
наверное первое - это скорость винтов, выход всё на SSD
потом сеть
потом всевозможные регламенты, первый из которых как раз ПДД, мне кажется, ещё отключаю всяческие новости и подсказки, вот тут посмотрите https://infostart.ru/public/333876/, может поможет....
RomaM; +1
7. Bene_Valete 188 06.07.18 17:52 Сейчас в теме
8. Alex_E 2353 06.07.18 17:59 Сейчас в теме
9. karaw 128 02.12.19 20:54 Сейчас в теме
Скажите актуально для БП 3.0.74.63?
+
10. Alex_E 2353 03.12.19 04:12 Сейчас в теме
(9) Нет, в каком то из обновлений для справочника Пользователи убрали возможность добавления дополнительных сведений. Тут требуется доработка - или добавить реквизит в расширении для справочника Пользователи (мне не нравится этот вариант) или же создать свой регистр сведений или справоячник в расширении, и в нём указать пользователей с ограниченными правами, для которых актуцален нужный интерфейс - ИМХО, это более интересный вариант...
Изменения минимальны, будет время - сделаю и выложу новую версию, а так то код открыт...
+
Внимание! Тема сдана в архив