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

16.11.18

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

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

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
[БП 3.0] [Расширения] Управление видимостью разделов для разных пользователей v1.0.0.1:
.cfe 16,04Kb ver:1.0.0.1
41
41 Скачать (1 SM) Купить за 1 850 руб.

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

 

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

См. также

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

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

6000 руб.

16.01.2015    62986    44    59    

82

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

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

2400 руб.

29.06.2020    18855    26    6    

41

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

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

1500 руб.

06.10.2020    10224    7    7    

10

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

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

1200 руб.

24.03.2020    15364    25    32    

35

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

Предлагается внешняя обработка для просмотра данных в формате ASN1. Есть 2 режима: загрузка из бинарного формата и из BASE64. Реализована функция извлечения всех сертификатов, которые можно найти в ASN1-файле. В дополнении к этому продукту предлагается методическая помощь по вопросам, связанным с технической реализацией криптографии и шифрования в 1С.

2400 руб.

29.08.2016    30053    9    1    

10

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

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

1 стартмани

05.07.2022    5751    kalyaka    6    

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