Каждая форма, которую мы разрабатываем, выполняет какую-то бизнес функциональность.
Поэтому слово "функция", или по другому "функция формы" непосредственно относится к Oracle Forms.
Вы все знаете, что форма - это не что иное, как окно, в котором пользователь может ввести или запросить какие-то данные.
Вопрос: Зачем Oracle придумал формы, а затем еще и функции для этих форм? Разве недостаточно иметь одни формы?
Ответ: А что, если вы хотите сделать для некоторой формы немного различную функциональность, в зависимости от меню, из которого запускается форма?
Вопрос: Есть какие-нибудь примеры?
Ответ: Давайте предположим такую ситуацию
Есть два полномочия:
Менеджер Дебиторов
Бухгалтер Дебиторов
Существует форма для ввода счетов-фактур:
Форма "Дебиторские счета-фактуры"
Наши требования:
Если форма счета-фактуры запускается из полномочий "Менеджер Дебиторов", тогда после запуска формы мы хотим показывать окно поиска, так, чтобы менеджер имел возможность найти нужный счет-фактуру для просмотра.
Если форма счета-фактуры запускается из полномочий "Бухгалтер Дебиторов", тогда после запуска формы мы хотим показывать окно ввода данных счета-фактуры, так чтобы бухгалтер мог сразу начать ввод данных счета-фактуры.
В форме присутствует следующий код в триггере when-new-form-instance.
If :parameter.invoice_mode='MANAGER' then
GO_BLOCK(lfind_invoices')
Elsif :parameter.invoice_mode='CLERK' then
GO_BLOCK('invoice_header'),
End if;
Вопрос: Из приведенного выше примера следует, что в функция передает в форму параметр invoice_mode?
Ответ: Да, правильно.
Теперь мы поняли, как связаны все вещи вместе.
Форма счета-фактуры присоединена к функции формы, когда мы регистрируем функцию формы, мы указываем, какие параметры нужно передавать в форму. Далее, функция формы присоединена к меню, а меню, в свою очередь, присоединено к полномочию.
Вопрос: Так получается, что функции формы нужны только для передачи параметров в форму?
Ответ: Передача параметров - главное предназначение функций формы. Но есть и другие. Как вы, наверное, знаете, каждая форма расположена в специальной папке на сервере. Например, выполняемые файлы закупок находятся папке $PO_TOP/foms/US. А выполняемые файлы форм приложения "Кредиторы" будут находится в папке $AP_TOP/forms/US.
Хотите знать, как Oracle определяет, что ему нужно искать форму кредиторов в папке AP_TOP, а не в PO_TOP??
Oracle думает примерно так : угу, пользователь кликнул в меню, какая функция определена для этого меню? Ага, это просмотр счета-фактуры. ОК, а какое приложение назначено для этой функции формы? Ага, это AP (Account Payables)... хорошо .... а какой базовый путь у этого приложения? Понятно, это AP_TOP... давай теперь запустим файл fmx из папки ap_top/forms/us.
В качестве примера приведены скриншоты
Зайдите в полномочие "Разработчик приложений" и выберите в меню навигатора /Приложение/Форма. Зарегистрируйте свою форму. Помните, что Oracle будет думать, что выполняемый файл .fmx имеет то же имя. Выберите в меню /Приложение/Функция. Пропишите ваши две функции: "Просмотр счета-фактуры" и "Ввод счета-фактуры", указав параметры, которые передаются в форму, как указано ниже.
- Зайдите в Oracle Apps и выберите полномочие "Разработчик приложений"
- Найдите пункт меню "Форма"
- Зарегистрируйте форму как указано на рисунке
- Теперь определим функцию
- Указываем имя функции и переходим на вкладку "Свойства"
- Выбираем тип функции из списка, указываем тип "Форма"
- В поле "Параметры" указываем параметр INVOICE_MODE и в кавычках его значение "CLERK"
- Аналогично регистрируем вторую функцию, в качестве значения параметра INVOICE_MODE пропишем "MANAGER"

Комментариев нет:
Отправить комментарий