powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle Forms [игнор отключен] [закрыт для гостей] / Pll или персонализация
15 сообщений из 15, страница 1 из 1
Pll или персонализация
    #36692536
Data corruption
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В формсах я новичек, поэтому сильно не пинайте.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release  11 . 1 . 0 . 7 . 0  - 64bit Production
PL/SQL Release  11 . 1 . 0 . 7 . 0  - Production
CORE	 11 . 1 . 0 . 7 . 0 	Production
TNS for IBM/AIX RISC System/ 6000 : Version  11 . 1 . 0 . 7 . 0  - Production
NLSRTL Version  11 . 1 . 0 . 7 . 0  - Production
 
SQL> 

Код: plaintext
Forms [ 32 -разрядн.] Версия  10 . 1 . 2 . 0 . 2  

Стоит задача, в меню создать свое меню с последующим запуском конкарента, причем в первый параметр, должно передаться значение поля в строке, куда установлен курсор.
С чего мне начинать ? может есть ссылки на подобные темы или просто документация ?

Спасибо!
...
Рейтинг: 0 / 0
Pll или персонализация
    #36692553
Data corruption
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Data corruption,

забыл указать, что есть в персонализации (если смотреть через средний слой). Есть функция на ивент WHEN-NEW-FORM-INSTANCE. на свойство определена глобальная переменная, но она не подтягивается в запуск конкаррента.
...
Рейтинг: 0 / 0
Pll или персонализация
    #36693184
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IMHO Самое простое, сделать server-side процедуру с запуском конкарента. И передать в нее "значение поля".

Data corruptionData corruption,
забыл указать, что есть в персонализации (если смотреть через средний слой). Есть функция на ивент WHEN-NEW-FORM-INSTANCE. на свойство определена глобальная переменная, но она не подтягивается в запуск конкаррента.

причем тут WHEN-NEW-FORM-INSTANCE vs "свое меню...передаться значение"
причем тут глобальные переменные
что значит, "она не подтягивается в запуск конкаррента"
...
Рейтинг: 0 / 0
Pll или персонализация
    #36693237
Data corruption
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Leonid Kudryavtsev,

я про это и говорю, что не знаю как сделать и как было сделано(не мной) и не работает. вот по шагам и пытаюсь сделать

т.е. я правильно понимаю, что параметризированную хранимку на pl\sql написать, воткнуть в pll ?
...
Рейтинг: 0 / 0
Pll или персонализация
    #36694994
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Data corruption
т.е. я правильно понимаю, что параметризированную хранимку на pl\sql написать, воткнуть в pll ?


"хранимка" в базе

При чем тут PLL?

Написать серверную процедуру (пакет), вызывать ее из персонализации. Вызов паралельной программы из серверной процедуры - замечательно описано в документации OeBS (дока для девелоперов). Ноты по персонализации (как вызывать серверную процедуру) можно поискать на металинке.
...
Рейтинг: 0 / 0
Pll или персонализация
    #36697059
hominis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я бы сделал через персонализацию, так быстрее:

1. В персонализации к форме создаешь пункт меню. В условиях выбираешь событие WHEN-NEW-FORM-INSTANCE, в действиях, поле Тип = Меню, поле Элемент меню выбираешь любой не занятый пункт SPECIAL1 - SPECIAL45(к примеру, SPECIAL1), Надпись меню = "Название пункта меню".
2. Пишем фун-ю:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
CREATE OR REPLACE FUNCTION xx_test(p_parameter1 in number) RETURN VARCHAR2 IS
  PRAGMA AUTONOMOUS_TRANSACTION;
  l_success NUMBER;
  e_submit_failed EXCEPTION;
BEGIN
  l_success := fnd_request.submit_request(application => 'GME', --модуль в котором находится твой конкаррент
                                          program     => 'XX_TEST', --имя конкаррента
                                          description => NULL,
                                          start_time  => NULL,
                                          sub_request => FALSE,
                                          argument1   => p_parameter1, --параметры, до 99
                                          );

  IF l_success =  0  THEN
    RAISE e_submit_failed;
  END IF;

  COMMIT;
  RETURN 'Запущен конкаррент: ' || l_success;
EXCEPTION
  WHEN OTHERS THEN
    ROLLBACK;
    RETURN 'Ошибка запуска конкарента: ' || l_success;
END;
3. В персонализации. В условиях, выбираешь событие SPECIAL1. В действиях, поле Тип = Сообщение, поле Тип сообщения = Показать, поле Текст сообщения = "=xx_test(:block.item)" --блок и элемент, который тебе надо передать в конккарент
...
Рейтинг: 0 / 0
Pll или персонализация
    #36698469
Data corruption
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
hominis,

спасибо огромное! все получилось! :)
единственное, можно ли как-то сделать, чтобы после запуска, осталось открытым окно "Вид - Запросы - Найти", чтобы видеть запущенный concurrent ?
...
Рейтинг: 0 / 0
Pll или персонализация
    #36699104
hominis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
можно.
...
Рейтинг: 0 / 0
Pll или персонализация
    #36700484
Data corruption
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
hominis,

немного переделал 3-й пункт,

3. В персонализации. В условиях, выбираешь событие SPECIAL1. В действиях, поле Тип = Встроенный, поле Встроенный тип = Запуск формы СОЗ, поле Имя программы = Имя моей программы. А вот кнопка с параметрами неактивна :( Где мне написать, чтобы в первый аргумент, вставлялась переменная ?
...
Рейтинг: 0 / 0
Pll или персонализация
    #36701439
va_kochnev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Data corruptionhominis,
немного переделал 3-й пункт,

3. В персонализации. В условиях, выбираешь событие SPECIAL1. В действиях, поле Тип = Встроенный, поле Встроенный тип = Запуск формы СОЗ, поле Имя программы = Имя моей программы. А вот кнопка с параметрами неактивна :( Где мне написать, чтобы в первый аргумент, вставлялась переменная ?

Для этого случая в действиях сначала присваиваете глобальной переменной значение поля формы.
А следующим действием "Запуск формы СОЗ".
В параллельной программе у параметра, которму должно присвоится значение из поля формы, указываете стандартное значение=Инструкция SQL.
В качестве инструкции запрос
select :global.глобальная_переменная_из_персонализации from dual
Такой вариант удобен в тех случаях, когда у запускаемой программы часть параметров должна автоматически получить значение из вызывающей формы, а часть пользователь должен ввести сам.
...
Рейтинг: 0 / 0
Pll или персонализация
    #36703670
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дополнения к va_kochnev:

1. При попытке запустить данный конкарент пользователем "вручную", можно столкнуться с тем, что глобальные переменные никто не проинициализирует - ошибка.
2. IMHO Относительно сложный метод и для описанной Data corruption задачи(задач) не нужно.
...
Рейтинг: 0 / 0
Pll или персонализация
    #36707516
Data corruption
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Leonid Kudryavtsev,

Вы правы. Инициализация глобальной переменной не происходит в двух случаях.
0. запуск конкарента из (Н) Вид -Запросы
1. перезапуск среднего слоя и повторный запуск из формы (Н) Вид -Запросы.
2. работает только если находишься и запускаешь с формы, где переменную можно определить.

Т.е. персонализацию как таковую использовать не получится :-\

Всем спасибо за ответы :)
...
Рейтинг: 0 / 0
Pll или персонализация
    #36708155
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Data corruption
Т.е. персонализацию как таковую использовать не получится :-\


В чем проблема?

Data corruption
единственное, можно ли как-то сделать, чтобы после запуска, осталось открытым окно "Вид - Запросы - Найти", чтобы видеть запущенный concurrent ?


1. "Остаться" оно не может. Т.к. его никогда и не было )))
2. Запустить любую форму (точнее функцию OeBS) из персонализации можно. Т.ч. не вижу никаких проблем, после запуска конкарента, запустить "Вид - Запросы - Найти"

Вариант va_kochnev очень хорош. Т.к. позволяет сделать бизнес-процессы значительно более удобно для пользователя. Но требует внимательности (как все в персонализациях) и понимания, как все это будет работать в комплексе.

Data corruption
или просто документация ?

metalink.oracle.com
Knowledge - Oracle E-Business Suite - Application Technology

ищем по словам Personalization.

К примеру:

Information About the Oracle Applications Form Personalization Feature in 11i [ID 279034.1]
Modified 29-JUL-2009 Type WHITE PAPER Status PUBLISHED
Form Personalization in Oracle Applications
...
Рейтинг: 0 / 0
Pll или персонализация
    #36709081
va_kochnev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonid KudryavtsevДополнения к va_kochnev:

1. При попытке запустить данный конкарент пользователем "вручную", можно столкнуться с тем, что глобальные переменные никто не проинициализирует - ошибка.
2. IMHO Относительно сложный метод и для описанной Data corruption задачи(задач) не нужно.
Особой сложности тут нет.
Допустим, есть некая параллельная программа с кучей параметров, которая запускается через Вид->Запросы.
Нужно запускать ее из какой-то формы таким образом, чтобы часть или все параметры заполнялись из исходной формы. Для этого:
1. Копируем парараллельную программу. Получаем новую программу с таким же набором параметров и выполняемым файлом.
2. У этой новой программы часть параметров делаем невидимыми и с инициализацией через глобальные переменные. Эту программу ни в какие группы запросов не включаем.
3. В вызывающей форме делаем соответствующую персонализацию.

Таким образом вся настройка делается штатными средсвами OEBSа. На некоторых проектах создание хранимых процедур/функций/пакетов (независимо от их сложности) считается полноценной разработкой (в отличии от персонализации) и сопровождается написанием кучи проектных документов, которые проходят несколько кругов согласования. Поэтому мне в ряде случаев было проще действовать по вышеуказанному алгоритму, т.к. с персонализациями меньше административного геморроя.
...
Рейтинг: 0 / 0
Pll или персонализация
    #36711304
hominis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Data corruptionhominis,

спасибо огромное! все получилось! :)
единственное, можно ли как-то сделать, чтобы после запуска, осталось открытым окно "Вид - Запросы - Найти", чтобы видеть запущенный concurrent ?

Можно сделать через 2 персонализации.
1. Оставляем первую описанную выше, как есть.
2. Создаем новую функцию, например, XX_TEST_FNDRSRUN, указываем польз. форму "Выполнение запросов"(по-моему так называется ). Добавляем эту фун-ю в меню полномочий, пишем приглашение, запускаем ее и делаем персонализацию:
a) Событие=When-New-Form-Instance, Тип=Встроенный, Вcтроенный тип=GO_BLOCK, Блок = JOBS
b) Событие=When-New-Form-Instance, Тип=Свойство, Свойство=DEFAULT_WHERE, Условие=PROGRAM_SHORT_NAME='XX_TEST' --твой конкаррент
c) Событие=When-New-Form-Instance, Тип=Встроенный, Встроенный тип=DO_KEY, EXECUTE_QUERY
d) Убираем приглашение из меню полномочий. И оставляем просто фун-ю.
3. В форме из которой вызываем конкаррент, добавляем к ранее сделанной персонализации, еще строку. Событие=SPECIAL1, Тип=Встроенный, Встроенный тип=Запуск фун-ии СОЗ, Функция=XX_TEST_FNDRSRUN.

После запуска конкаррента и сообщения с request_id, у тебя откроется форма Вид-Запросы-Найти, где будет запущенный конкаррент. Писал по памяти, поэтому некоторые поля в персонализации, могут по названию отличаться.
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / Oracle Forms [игнор отключен] [закрыт для гостей] / Pll или персонализация
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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