powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle APEX [игнор отключен] [закрыт для гостей] / Как идентифицировать Item внутри Condition PL/SQL?
32 сообщений из 32, показаны все 2 страниц
Как идентифицировать Item внутри Condition PL/SQL?
    #39418410
Братцы, как знаете не хуже меня, есть такое v('ITEM_NAME') внутри вызываемого на странице PL/SQL, благодаря чему всегда понятно, на какой странице и в каком приложении работает конкретный код или каково значение Item на странице.
А вот есть ли у вас мысли, как организовать подобное понимание конкретно в Condition? Ведь у каждого item имеется уникальный код... Можно ли его получить в Condition?
...
Рейтинг: 0 / 0
Как идентифицировать Item внутри Condition PL/SQL?
    #39418429
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Саша Сплинтер,
Приведи пример. Я лично не понял.
...
Рейтинг: 0 / 0
Как идентифицировать Item внутри Condition PL/SQL?
    #39418573
blkangel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Саша СплинтерБратцы, как знаете не хуже меня, есть такое v('ITEM_NAME') внутри вызываемого на странице PL/SQL, благодаря чему всегда понятно, на какой странице и в каком приложении работает конкретный код или каково значение Item на странице.
А вот есть ли у вас мысли, как организовать подобное понимание конкретно в Condition? Ведь у каждого item имеется уникальный код... Можно ли его получить в Condition?

Памятка задающим вопросы
...
Рейтинг: 0 / 0
Как идентифицировать Item внутри Condition PL/SQL?
    #39419216
Друзья, все ваши упрёки справедливы. Но должен заметить, что форумов, где нет возможности откорректировать своё собственное сообщение после постинга на форуме в Сети ещё поискать... Однако sql.ru мы любим не за это.

Итак, уточняю свой вопрос. Любой элемент в APEX имеет настройку Condition, суть которой в том, рендерить или нет данный элемент. В том случае, если тип этого Condition представляет из себя PL/SQL, возникает желание внутри этого кода установить "координаты" вызова данного кода, а именно, приложение, страницу и некий идентификатор, или имя хотя бы элемента, откуда код вызван при рендеренге. Что касается номера приложения и страницы, тут всё просто v('APP_ID') и v('APP_PAGE_ID'), а вот с элементом что-то никак...
...
Рейтинг: 0 / 0
Как идентифицировать Item внутри Condition PL/SQL?
    #39419307
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Саша СплинтерСети ещё поискать..
это так)

Саша СплинтерВ том случае, если тип этого Condition представляет из себя PL/SQL, возникает желание внутри этого кода установить "координаты" вызова данного кода, а именно, приложение, страницу и некий идентификатор, или имя хотя бы элемента, откуда код вызван при рендеренге.
зачем?
В общем случае не надо делать привязку! Сильные связи считаются Г...кодом. Слабые связи считаются OK кодом.
...
Рейтинг: 0 / 0
Как идентифицировать Item внутри Condition PL/SQL?
    #39419324
Ну что же, представим себе интерфейс, пользователи которого разбиты по ролям.
Каждой роли должны быть недоступны некоторые группы элементов (кнопки, поля редактирования, закладки и так далее) общего интерфейса.

Возникает желание объединить с одной стороны элементы интерфейса в группы, с другой пользователей в группы и сопоставить их друг другу в третьей табличке на предмет наличия запрета. После чего разместить вызов PL/SQL в Condition. Этот код без труда установит группу пользователя по идентификатору пользователя, хранящемуся в APP_USER.

Что можно сказать о группе элемента? Ничего, если PL/SQL не знает, как его идентифицировать.
Не знаю, слабая это связь или сильная, но пока мне ничего не пришло в голову кроме как передавать в этом вызове строку названия элемента, совпадающего с его именем. Выглядит не очень.
...
Рейтинг: 0 / 0
Как идентифицировать Item внутри Condition PL/SQL?
    #39419329
SvDev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Саша Сплинтер,

Функция не документирована, но можете попробовать: APEX_APPLICATION.GET_COMPONENT
Я в некоторых ситуациях использую её. Внутри items не пробовал.
...
Рейтинг: 0 / 0
Как идентифицировать Item внутри Condition PL/SQL?
    #39419375
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Саша СплинтерВозникает желание объединить с одной стороны элементы интерфейса в группы, с другой пользователей в группы и сопоставить их друг другу в третьей табличке на предмет наличия запрета. После чего разместить вызов PL/SQL в Condition. Этот код без труда установит группу пользователя по идентификатору пользователя, хранящемуся в APP_USER.
ещё подробнее и ПРИВЕДИТЕ ПРИМЕР странички.
Т.к. я против без достаточных оснований мешать видимость (Condition) и безопасность (SECURITY).
Первая это БЛ - бизнес логика. Вторая это безопасность.
Оракл их разнёс по разным полям.
Кроме того
Саша СплинтерВозникает желание объединить с одной стороны элементы интерфейса в группы
это вообще третий случай, т.к. чисто визуально есть средство - регион. Он прекрасно работает и объединяет.
...
Итого может вы ошиблись?
От неопытности? Не делали систем?
...
Рейтинг: 0 / 0
Как идентифицировать Item внутри Condition PL/SQL?
    #39419376
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Саша Сплинтер,
Когда программист слишком многое придумывает, возможно он не сформулировал USE CASE? По ГОСТ'у?
...
Рейтинг: 0 / 0
Как идентифицировать Item внутри Condition PL/SQL?
    #39419377
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Саша Сплинтерс другой пользователей в группы
пользователей в группы я объединяю на основе наследования ролей оракла.
Т.е. роль в оракле админ автоматом наследует роли всех дочек.
Очень простая и лаконичная схема авторизации от Оракле.
...
Рейтинг: 0 / 0
Как идентифицировать Item внутри Condition PL/SQL?
    #39419380
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Саша СплинтерНе знаю, слабая это связь или сильная, но пока мне ничего не пришло в голову кроме как передавать в этом вызове
слабая связь, это когда в пакеты оракла не передавать ничего с двумя точками. Никаких айтемсов и переменных апекса.
Но я понимаю, что это идеал и идеала в жизни не бывает)). Сам нарушал)).
...
Рейтинг: 0 / 0
Как идентифицировать Item внутри Condition PL/SQL?
    #39419382
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Саша СплинтерНе знаю, слабая это связь или сильная, но пока мне ничего не пришло в голову кроме как передавать в этом вызове
слабая связь, это когда в пакеты оракла не передавать ничего с двумя точками. Никаких айтемсов и переменных апекса.
Но я понимаю, что это идеал и идеала в жизни не бывает)). Сам нарушал)).
упс. Поправлюсь.
В коде пакета не должно быть переменных с двоеточиями (контекста). А во входных параметрах в обычных типах IN Parameters передавай что угодно.
...
Рейтинг: 0 / 0
Как идентифицировать Item внутри Condition PL/SQL?
    #39419471
blkangel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Саша СплинтерНу что же, представим себе интерфейс, пользователи которого разбиты по ролям.
Каждой роли должны быть недоступны некоторые группы элементов (кнопки, поля редактирования, закладки и так далее) общего интерфейса.

Возникает желание объединить с одной стороны элементы интерфейса в группы, с другой пользователей в группы и сопоставить их друг другу в третьей табличке на предмет наличия запрета. После чего разместить вызов PL/SQL в Condition. Этот код без труда установит группу пользователя по идентификатору пользователя, хранящемуся в APP_USER.

Что можно сказать о группе элемента? Ничего, если PL/SQL не знает, как его идентифицировать.
Не знаю, слабая это связь или сильная, но пока мне ничего не пришло в голову кроме как передавать в этом вызове строку названия элемента, совпадающего с его именем. Выглядит не очень.


Для условия видимости или не видимости используем привилегии.
Привилегии назначены ролям.
При логоне все привилегии записываются в Кэш таблицу.
Одна привилегия - Один/Много элементов. При рендеринге страницы, система проверяет наличие данной привилегии в кеш таблицы для данного пользователя.

Использование кеш таблицы обусловлено иерархической структурой ролей, и линейный запрос из кеш таблицы, в разы быстрее иерархического запроса.
...
Рейтинг: 0 / 0
Как идентифицировать Item внутри Condition PL/SQL?
    #39419486
blkangel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Саша СплинтерНе знаю, слабая это связь или сильная, но пока мне ничего не пришло в голову кроме как передавать в этом вызове строку названия элемента, совпадающего с его именем. Выглядит не очень.
А вообще пораскинув, я нашел вам решение :)
#CURRENT_ITEM_NAME#
...
Рейтинг: 0 / 0
Как идентифицировать Item внутри Condition PL/SQL?
    #39419490
blkangel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
blkangelСаша СплинтерНе знаю, слабая это связь или сильная, но пока мне ничего не пришло в голову кроме как передавать в этом вызове строку названия элемента, совпадающего с его именем. Выглядит не очень.
А вообще пораскинув, я нашел вам решение :)
#CURRENT_ITEM_NAME#

Но с другой стороны, я не вижу ничего плохо, в передачи названия элемента, все равно же условие писать.
Вот если бы решили не использовать механизм condition, тогда другой разговор.
...
Рейтинг: 0 / 0
Как идентифицировать Item внутри Condition PL/SQL?
    #39420279
Друзья, очень благодарен вам за ваши размышления! sql.ru это просто сборище маньяков-профи! Даже и не думайте взломать мой смартфон при помощи вашего SQL!

#CURRENT_ITEM_NAME# это вообще откровение какое-то! Жаль, что не работает ((( APEX_APPLICATION.GET_COMPONENT только для APEX 4.

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

Предложение работать с регионами вызывает уважение. Однако группы элементов представляют из себя подчас поля, кнопки и закладки, так что регионы - лишь красивая утопия.

Поскольку речь идёт об аутентификации внутри веб-приложения, до оракла здесь как-то дотягиваться желания особого не возникает. Це ж апекс, зачем тут Оракл? APEX_PUBLIC_USER и все дела )))
Поясните, может я не понял мысль? Вы используете аутентификацию пользователей оракл для целей работы с апекс-приложением? То есть на сто клиентов набегает тысяча пользователей и всех вы их в Оракле заводите?

Кэш таблица имеется в виду опция CACHE для CREATE TABLE? Круто!

>>Когда программист слишком многое придумывает, возможно он не
>>сформулировал USE CASE? По ГОСТ'у?

В вашей терминологии я вряд ли являюсь программистом. Так, самоучка со стажем, вряд ли более.
...
Рейтинг: 0 / 0
Как идентифицировать Item внутри Condition PL/SQL?
    #39420291
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Саша СплинтерОднако группы элементов представляют из себя подчас поля, кнопки и закладки, так что регионы - лишь красивая утопия.
переведи.
Т.е. вы сами не использовали регионы, а делали без них?
Закладка это вкладка?
Приводите скрины, ведь мы о ГУИ и визале говорим. А не о характерах и писателях.
...
Саша СплинтерПоясните, может я не понял мысль? Вы используете аутентификацию пользователей оракл для целей работы с апекс-приложением? То есть на сто клиентов набегает тысяча пользователей и всех вы их в Оракле заводите?
я использую оба варианта.
И вариант никак не зависит от 1000юзверей. Ораклу пофигу и 10000. Спросите у ораклоидов.
В первом варианте у меня оракл и его дерево. Во втором варианте своё дерево пользователей в табличках.
В чём проблема? Главное принцип - наследования ролей)).
...
Рейтинг: 0 / 0
Как идентифицировать Item внутри Condition PL/SQL?
    #39420292
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Саша Сплинтеррегионы - лишь красивая утопия
регионы в апекс это стратегия Оракле).
Которую вы игнорируете.
...
Рейтинг: 0 / 0
Как идентифицировать Item внутри Condition PL/SQL?
    #39420293
>>Вот если бы решили не использовать механизм condition, тогда другой разговор.

Кроме authorization и condition других штатных способах прятать элементы не слыхал. Причём по ходу тут семантика сплошная, а суть одна. Просто в authorization не передать ничего вовсе, а в condition что-то можно.
...
Рейтинг: 0 / 0
Как идентифицировать Item внутри Condition PL/SQL?
    #39420294
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Саша СплинтерЕсть мнение, что никакой разницы на уровне интерфейса нет и обсуждение подобных вопросов - сплошная казуистика.
есть такая путаница смешения понятий Видимость и Видимость по безопасности).
У меня критерий - бизнес логика. Это первое - видимость.
Безопасность делаю чисто по авторизации и правам (слово - НЕЛЬЗЯ).
...
Рейтинг: 0 / 0
Как идентифицировать Item внутри Condition PL/SQL?
    #39420296
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Саша СплинтерПросто в authorization не передать ничего вовсе, а в condition что-то можно.
ещё не хватало туда передавать.
Вы и в Видимость зря передаёте.
По крайней мере оснований не видно.
...
Рейтинг: 0 / 0
Как идентифицировать Item внутри Condition PL/SQL?
    #39420297
регионы в апекс это стратегия Оракле). Которую вы игнорируете.

В не подумайте, я обеими руками за стратегии Оракла! Но если элементы не объединяются в регион, то, боюсь, ничего тут не поделать. Задачу как-то надо решать.

Пока вижу всё то же решение: передавать в condition название элемента и содержать три таблицы: группы элементов, пользователей и привилегий, объединяющих эти группы.

В таком случае, заходя на страничку с клиентами, бухгалтерия увидит своё, дизайнеры свой, а продаваны - своё. И да, наверное можно налепить кучу страниц (или даже приложений)на каждый отдел, а потом все их содержать. Но это совсем уж за пределами добра и зла.
...
Рейтинг: 0 / 0
Как идентифицировать Item внутри Condition PL/SQL?
    #39420299
есть такая путаница смешения понятий Видимость и Видимость по безопасности).
У меня критерий - бизнес логика. Это первое - видимость.
Безопасность делаю чисто по авторизации и правам (слово - НЕЛЬЗЯ).

Бухгалтеру нельзя удалять клиента, менеджеру можно.
менеджеру нельзя видеть колонку дебиторки, бухгалтеру можно.

Какая разница, безопасность это или видимость? Что решает данная терминология, если реализация в Апексе по сути отличается лишь семантически?
...
Рейтинг: 0 / 0
Как идентифицировать Item внутри Condition PL/SQL?
    #39420300
Petro123ещё не хватало туда передавать.
Вы и в Видимость зря передаёте.
По крайней мере оснований не видно.

Как же вы коллега решаете такие банальные задачи про менеджера и бухгалтера? Неужто без Condition (authorization)?
...
Рейтинг: 0 / 0
Как идентифицировать Item внутри Condition PL/SQL?
    #39420305
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Саша СплинтерНо если элементы не объединяются в регион, то, боюсь, ничего тут не поделать
Вам виднее. Значит они разбросаны аки горох на стене).
Саша СплинтерПока вижу всё то же решение: передавать в condition название элемента и содержать три таблицы: группы элементов, пользователей и привилегий, объединяющих эти группы.
Делайте.
На первый взляд, не видя картинку) LOL это велосипед.
Саша СплинтерВ таком случае, заходя на страничку с клиентами, бухгалтерия увидит своё, дизайнеры свой, а продаваны - своё. И да, наверное можно налепить кучу страниц (или даже приложений)на каждый отдел, а потом все их содержать. Но это совсем уж за пределами добра и зла.
Конечно! Никаие регионы не помогают объединить АРМ уборщицы и АРМ бухгалтера.
Тогда конечно, надо делать так:
Код: sql
1.
Пакет.ДайВидимость("АРМ_буха"\"АРМ_уборщик");


Удачи Вам!
Работать всё равно будет. Тоже исходя из практики.
...
Рейтинг: 0 / 0
Как идентифицировать Item внутри Condition PL/SQL?
    #39420309
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Саша СплинтерКак же вы коллега решаете такие банальные задачи про менеджера и бухгалтера?
по ГОСТУ - проектируем АРМ(форму\окно)
...
Рейтинг: 0 / 0
Как идентифицировать Item внутри Condition PL/SQL?
    #39420311
Хорошо поговорили, спасибо!
Буду чаще сюда заходить!
...
Рейтинг: 0 / 0
Как идентифицировать Item внутри Condition PL/SQL?
    #39420315
Совсем забыл сказать, тут еще такое дело. Приложение-то облачное, клиентов сотня. И кому одно спрятать, куму другое показать...
Здорово, наверное, спроектировать АРМ в количестве клиенты Х отделы и наслаждаться поддержкой этого всего.

Наслаждение, доступное только программистам.
...
Рейтинг: 0 / 0
Как идентифицировать Item внутри Condition PL/SQL?
    #39420318
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Саша СплинтерПриложение-то облачное, клиентов сотня. И кому одно спрятать, куму другое показать.
не понял проблемы. Практически всегда выделяют РОЛИ, а не пользователей или клиентов.
Поговорите с админом. Он всё знает.
...
Рейтинг: 0 / 0
Как идентифицировать Item внутри Condition PL/SQL?
    #39420319
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
если вы про счета Петрова, то это просто фильтр.
К видимости айтемса таблица не имеет отношения.
Решается на уровне SQL Where.
...
Рейтинг: 0 / 0
Как идентифицировать Item внутри Condition PL/SQL?
    #39420330
SvDev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Саша СплинтерAPEX_APPLICATION.GET_COMPONENT только для APEX 4.
В 5.1 не проверял, в 5.0 работает:

Код: plsql
1.
2.
3.
4.
5.
6.
 Declare
  l_component apex_application.t_component;
Begin
  l_component := apex_application.get_component;
  Return l_component.name;
End;


Для items возвращает название региона. Поэдие item name - не меняющийся идентификатор ( в отличии от прочих компонент), передать в функцию не должно быть большой проблемой.
Если для read only, то ее можно всему региону назначить в свойствах региона.
...
Рейтинг: 0 / 0
Как идентифицировать Item внутри Condition PL/SQL?
    #39420474
blkangel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Саша Сплинтер>>Вот если бы решили не использовать механизм condition, тогда другой разговор.

Кроме authorization и condition других штатных способах прятать элементы не слыхал. Причём по ходу тут семантика сплошная, а суть одна. Просто в authorization не передать ничего вовсе, а в condition что-то можно.

Ну почему же нет. Есть полуштатные. Я просто приведу пример.

Загружается страницы, по умолчанию все элементы данной страницы/всех страниц скрыты (не путать с запретом на рендер, именно скрыты).
После загрузки страницы начинает работать DA (который можно расположить на нулевой страницы).
DA будет выполнять запрос, который возвращающий список доступных элементов для данной страницы, текущему пользователю.

Вот PL/SQL примерно так будет выглядеть, выделенная таблица, это твоя таблица с правами.
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
select 
    listagg('#'||item_name,',')  within group (order by item_id) 
into
    v_return
from apex_application_page_items i
inner join table_right_role_items r on i.item_id=t.item_id
where i.application_id=:APP_ID 
and i.page_id=:APP_PAGE_ID
and r.user_id=:APP_USER;



А вот так будет выглядеть JS который обработает список.
Код: javascript
1.
$x_Show($(v_return));
...
Рейтинг: 0 / 0
32 сообщений из 32, показаны все 2 страниц
Форумы / Oracle APEX [игнор отключен] [закрыт для гостей] / Как идентифицировать Item внутри Condition PL/SQL?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]