среда, 30 июля 2008 г.

Дата создания экземпляра

Если нужно узнать когда был сделан тот или иной клон продуктива,
то это можно сделать запросом:

SELECT creation_date FROM fnd_apps_system

четверг, 17 июля 2008 г.

SQL запрос в экранной форме

Существует два способа определить SQL запрос, который был выполнен в экранной форме ОЕБС. Обычный способ, которым многие пользуются, и правильный.

Обычный способ заключается в том, чтобы выбрать пункт меню "Справка->Диагностика->Проверить..." и далее, в открывшемся окошке, в поле "Блок" поставить "SYSTEM", а в "Поле" - "LAST_QUERY".

Это работает правильно во многих случаях, однако, не во всех.

Возьмем, например, форму "Пользователи" (FNDSCAUS) и выполним в ней любой запрос. А теперь попробуем, используя "обычный" способ получить запрос из верхнего блока. Понятно что он должен строиться на таблице FND_USER. Однако "Справка->Диагностика->Проверить...", и далее "SYSTEM", и далее "LAST_QUERY" показывает совсем другой запрос.

Для тех кто знаком с Oracle Forms очевидно, что "обычный" способ выдает нам значение системной переменной SYSTEM.LAST_QUERY. Также очевидно, что SYSTEM.LAST_QUERY возвращает значение последнего выполненного запроса для любого из блоков формы (а не для того, в котором мы хотим). И не менее очевидно, что в формах содержащих несколько блоков, соединенных отношением "мастер-деталь" сначала выполняется запрос в мастер-блоке, а затем в детальном. Ну и уж точно понятно, что для получения запроса по пользователям SYSTEM.LAST_QUERY не подходит, а подходит функция GET_BLOCK_PROPERTY (<имя_блока>, LAST_QUERY). Вот с её помощью можно получить последний выполненный запрос в любом блоке, если знать его имя.

Воспользоваться этой функцией можно используя второй, правильный способ.
1. Сначала нужно поместить курсор в любое поле того блока,
для которого нужно получить последний запрос (например, "Пользователь").
2. Затем выбираем пункт меню "Справка->Диагностика->Свойства->Позиция".
3. В поле "Объект 1" находится имя блока, запоминаем его ("USER")
4. Меняем(выбираем из списка) значение поля "Объект" с "Элемент" на "Блок"
5. Меняем(выбираем из LOV) значение поля "Объект 1" на имя запомненного блока ("USER")
6. В поле "Свойство" выбираем "Last Query" (должно быть уже выбрано)
И вот теперь мы можем увидеть искомый запрос по таблице FND_USER.