|   |   | 
| 
 | Видимость подсистем программно | ☑ | ||
|---|---|---|---|---|
| 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) В ПараметрыПриложения в соответствующей структуре АвторизированныйПользователь = Неопределено     | 
 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |