понедельник, 1 февраля 2010 г.

Немного об функциях форм в Oracle Apps

Каждая форма, которую мы разрабатываем, выполняет какую-то бизнес функциональность.
Поэтому слово "функция", или по другому "функция формы" непосредственно относится к 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"

Оригинал статьи

Комментариев нет:

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