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

16.11.18

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

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

Файлы

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

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

Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний

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

Оформить подписку и скачать решение со скидкой

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

 

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Вступайте в нашу телеграмм-группу Инфостарт

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

См. также

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

Скачайте бесплатную обработку "Анализ данных для использования в подсистеме 1С Инфоборды" и узнайте возможность внедрения подсистемы у себя в конфигурации! Создайте свой функциональный интерфейс в любой конфигурации 1С с помощью расширения "Инфоборды". Настраивайте панели виджетов с метриками, индикаторами и показателями на начальном экране.

28800 руб.

27.03.2025    13077    24    18    

34

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

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

6000 руб.

16.01.2015    65913    45    60    

84

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

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

2400 руб.

29.06.2020    21595    31    6    

48

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

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

2400 руб.

29.08.2016    30713    11    1    

12

Работа с интерфейсом Программист Стажер 1С v8.3 Бесплатно (free)

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

20.08.2024    35913    mrXoxot    44    

136

Работа с интерфейсом Программист 1С v8.3 1C:Бухгалтерия Абонемент ($m)

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

1 стартмани

05.07.2022    12412    kalyaka    8    

35

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

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

3600 руб.

29.04.2022    15319    2    10    

13

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

Реализовал простой способ программного создания новых элементов, команд и реквизитов на форме.

25.11.2021    12738    AtamanovYS    19    

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