|
Видимость подсистем программно | ☑ | ||
---|---|---|---|---|
0
123GO
13.12.18
✎
06:53
|
Добрый день. Нужно установить видимость всех объектов в подсистеме, или подсистемы целиком согласно реквизиту текущего пользователя.
Вкратце, Розница 2.2 Управляемые формы: Если ТекущийПользователь.Магазин входит в СписокРазрешенныхМагазинов, то подсистема видна, если нет - скрыта (ну или по реквизиту Если Магазин.Разрешено = Истина). Через функциональные опции не получается, константа одна не всех. Роли тоже не подходят - в магазинах есть админы, которые могут сами установить нужную роль. Вот сейчас пытаюсь через ограничение на уровне записей (RLS).. Никто не сталкивался с такими задачами? |
|||
1
123GO
13.12.18
✎
06:57
|
Вообще, если все объекты не будут доступны в подсистеме, подсистема не должна показываться. Значит, все сводится к тому, что:
Вася и Петя имеют одинаковый набор ролей. Нужно, чтобы Вася не то, чтобы не видел списка документов Поступлений, а вообще не знал, что такой вид документа существует |
|||
2
youalex
13.12.18
✎
07:00
|
(0) УстановитьПараметрыФункциональныхОпцийИнтерфейса() - не пробовал?
|
|||
3
123GO
13.12.18
✎
07:13
|
(2) Нет, есть пример?
|
|||
4
youalex
13.12.18
✎
07:17
|
(3) примера нет
|
|||
5
lucbak
13.12.18
✎
07:23
|
(0) Создаешь функциональные опции (ФО) аналогично подсистемам,далее создаешь регистр сведений где измерение "Пользователь" а ресурсы это твои подсистемы "булево". У ФО хранение - ссылка на реквизит регистра сведений.
Далее при начале работы системы (2) УстановитьПараметрыФункциональныхОпцийИнтерфейса(Новый Структура("ПользовательПодсистемы", НастройкиПользователяСервер.ТекущийПользователь())) |
|||
6
123GO
13.12.18
✎
08:35
|
(5) А можно установить параметр ФО не по пользователю, а по магазину пользователя?
|
|||
7
lucbak
13.12.18
✎
08:39
|
(6) Это всего лишь пример - ты можешь реализовать как угодно (замени измерение "Пользователь" на "Магазин" и определяй его при начале работы.
|
|||
8
123GO
13.12.18
✎
08:44
|
(7) Так и подумал, не могу никак определить ТекущийМагазин в ПриНачалеРаботыСистемы()
|
|||
9
lucbak
13.12.18
✎
08:46
|
(8) что значит "не могу определить" ?
|
|||
10
123GO
13.12.18
✎
08:46
|
ну то есть получить
|
|||
11
123GO
13.12.18
✎
08:48
|
Пользователя можно получить из ПользователиКлиентСервер.ТекущийПользователь(), а магазин пока не могу найти. ПараметрыСеанса от туда недоступны
|
|||
12
lucbak
13.12.18
✎
08:51
|
(11) Есть взаимосвязь пользователя и магазина? если есть то укажи у пользователя магазин и уже по нему заполняй ФО
|
|||
13
123GO
13.12.18
✎
08:58
|
(12) Да, есть прям в типовой конфигурации. ПользователиКлиентСервер.ТекущийПользователь() возвращает СправочникСсылка.Пользователи, но через точку .Магазин я не могу обратиться, видимо потому что с клиента..
|
|||
14
123GO
13.12.18
✎
09:00
|
попробовал сейчас, как работает в целом через Измерение Пользователь, сработало 1 раз правильно. Подсистема появилась, попробовал на другом пользователе, подсистема уже не исчезает, всегда видно вне зависимости от ресурса регистра сведений. Наверно у подсистемы нужно отключить видимость по ролям?
|
|||
15
lucbak
13.12.18
✎
09:03
|
(13) Конечно на "клиенте" нельзя через точку работать - делай так Магазин=ОбщегоНазначенияСервер.ЗначениеРеквизитаОбъекта(ПользователиКлиентСервер.ТекущийПользователь(), "Магазин");
|
|||
16
lucbak
13.12.18
✎
09:04
|
(14) А другой пользователь в регистре заведен? Если ДА то все должно работать.
|
|||
17
123GO
13.12.18
✎
09:14
|
Нашел, нужно завести не только ФО но и параметр ФО. Вроде так с Пользователем все работает.
(15) Спасибо, сейчас попробую |
|||
18
lucbak
13.12.18
✎
09:16
|
(17) разумеется )))
|
|||
19
123GO
13.12.18
✎
09:27
|
ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ПользователиКлиентСервер.ТекущийПользователь(), "Магазин")
{(1,1)}: Переменная не определена (ОбщегоНазначения) |
|||
20
123GO
13.12.18
✎
09:27
|
Это значит, что я не могу сервер вызывать из Модуля управляемого приложения?
|
|||
21
lucbak
13.12.18
✎
09:33
|
(20) Конечно можешь. Это значит, что у тебя нет такого модуля.
|
|||
22
123GO
13.12.18
✎
09:39
|
Контекстная подсказка так подсказала)
|
|||
23
runoff_runoff
13.12.18
✎
09:42
|
(21) не, просто на модуле на стоит галочка "Вызов сервера"
|
|||
24
123GO
13.12.18
✎
09:43
|
Выручил ОбщегоНазначенияРТВызовСервера.ЗначениеРеквизитаОбъекта(ПользователиКлиентСервер.ТекущийПользователь(), "Магазин")
|
|||
25
123GO
13.12.18
✎
09:46
|
Все заработало. Спасибо, lucbak)
|
|||
26
123GO
13.12.18
✎
09:50
|
Вот только не понятно как параметр ФО влияет на саму ФО, я нигде не указывал их связь. Но после добавления параметра ФО все заработало
|
|||
27
lucbak
13.12.18
✎
10:20
|
(26) Что значит нигде? а это (5) ;)
|
|||
28
123GO
14.12.18
✎
03:20
|
(27) Ну через УстановитьПараметрыФункциональныхОпцийИнтерфейса() я передаю значение измерения РегистраСведений параметру ФО, а где параметр ФО говорит самой ФО я не понял) Магия
|
|||
29
123GO
14.12.18
✎
03:33
|
(27) А знаете, как установить видимость и доступ согласно той же ФО, но только для объектов? Подсистема скрылась у нужных пользователей, но они все еще могут зайти через Все функции в список документов. И, хоть при создании новых документов у них выходит "Операция недоступна", они могут читать и изменять уже созданные документы теми, у кого доступ есть
|
|||
30
123GO
14.12.18
✎
04:08
|
Сделал так:
&НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) Отказ = НЕ ПолучитьФункциональнуюОпцию("ап_ВидимостьПодсистемы",Новый Структура("ап_ВидимостьПодсистемы", ОбщегоНазначенияРТВызовСервера.ЗначениеРеквизитаОбъекта(ПользователиКлиентСервер.ТекущийПользователь(), "Магазин"))); КонецПроцедуры |
|||
31
123GO
14.12.18
✎
04:11
|
(30) В форме списка документа
|
|||
32
lucbak
14.12.18
✎
07:25
|
(29) Можно отключить у пользователей "Все функции".
(31) Через универсальный отчет получат нужные им данные :) |
|||
33
123GO
14.12.18
✎
07:41
|
(32) Все функции могут дать местные "админы". Отчетом им там особо нечего смотреть, главное чтоб не вводили и не изменяли)
|
|||
34
lucbak
14.12.18
✎
08:31
|
(30) Вот http://catalog.mista.ru/public/927667/
Просто все функции вызова замени на свои и будет тебе счастье (сможешь настроить как формы списков так и формы объектов - доступность, видимость, заполнение, проверки т.д.) |
|||
35
123GO
27.12.18
✎
06:26
|
(34) Беда пришла, откуда не ждали.. Хочу, чтобы все работало в РИБ. При вызове при начале работы системы УстановитьПараметрыФункциональныхОпцийИнтерфейса() нужно получить ПользователиКлиентСервер.ТекущийПользователь(). Модуль получает его из АвторизированныйПользователь(), почему-то возвращается Неопределено..
База закрывается исключением, так и не открывшись. |
|||
36
123GO
27.12.18
✎
06:34
|
(35) В ПараметрыПриложения в соответствующей структуре АвторизированныйПользователь = Неопределено
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |