powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle Forms [игнор отключен] [закрыт для гостей] / создание ID счета с помощью FND_KEY_FLEX.DEFINE (OeBS)
13 сообщений из 13, страница 1 из 1
создание ID счета с помощью FND_KEY_FLEX.DEFINE (OeBS)
    #36687295
grilliant
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день!
Задача: необходимо "прикрутить" к форме функционал стандартного ОГП выбора счета.
Нашел несколько инструкций (Oracle Developer Guide, статьи в интернете, которые по сути повторяют первый источник). Все сделал по шагам. Стандарная форма отображается. Всё в ней выбирается, но есть загвоздка. Если счет уже существует в стандартной таблице (GL_CODE_COMBINATION), то форма прекрасно его находит и возвращает мне ID этого счета (CODE_COMBINATION_ID). А вот если счета не существует, то форма, почему-то, новый ID не создает, хотя в guide написано, что должна бы.

Инициализация моего ОГП.
FND_KEY_FLEX.DEFINE(
BLOCK=>'TRANSACTIONS',
FIELD=>'ACCOUNT_FLEXFIELD',
APPL_SHORT_NAME=> FLEX_FIELD_PKG.G_APPL_SHORT_NAME,
CODE=>FLEX_FIELD_PKG.g_id_flex_code,
NUM=>v_cao,
ID=>'CODE_COMBINATION_ID',
DESCRIPTION=>'',
VALIDATE=>'FULL',
QBE_IN=>'Y',
DERIVE_ALWAYS=>'Y',
REQUIRED =>'N',
updateable => 'ALL',
insertable => 'ALL',
VRULE=>'\\nSUMMARY_FLAG\\nI\\nAPPL=SQLGL;NAME=GL_NO_PARENT_SEGMENT_ALLOWED\\nN',
where_clause => 'summary_flag != ''Y''',
QUERY_SECURITY =>'Y'
);

Что я сделал не так или что забыл? От чего зависит создание нового счета?
Спасибо.
...
Рейтинг: 0 / 0
создание ID счета с помощью FND_KEY_FLEX.DEFINE (OeBS)
    #36687565
Тупой Пух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
grilliant,

Открой в Forms Builder любую стандартную форму, в которой есть создание счета, и посмотри как там реализовано: при отсутствии введнной комбинации она создается отдеьным PL/SQL кодом.
...
Рейтинг: 0 / 0
создание ID счета с помощью FND_KEY_FLEX.DEFINE (OeBS)
    #36687593
hominis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Через FND_KEY_FLEX.DEFINE создать счет точно не получится.
grilliantСтандарная форма отображается.
Что это за форма?
...
Рейтинг: 0 / 0
создание ID счета с помощью FND_KEY_FLEX.DEFINE (OeBS)
    #36687664
grilliant
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
hominisЧерез FND_KEY_FLEX.DEFINE создать счет точно не получится.
grilliantСтандарная форма отображается.
Что это за форма?


Как выложить скриншот?
...
Рейтинг: 0 / 0
создание ID счета с помощью FND_KEY_FLEX.DEFINE (OeBS)
    #36687684
grilliant
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
...
Рейтинг: 0 / 0
создание ID счета с помощью FND_KEY_FLEX.DEFINE (OeBS)
    #36687719
hominis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я так понял, что отдельного пакета для создания комбинации счета нету. Поэтому можно создать тупо вставкой в таблицу, примерно так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
    INSERT INTO Gl_Code_Combinations
      (Enabled_Flag,
       Summary_Flag,
       Start_Date_Active,
       End_Date_Active,
       Last_Update_Date,
       Last_Updated_By,
       Segment1,
       Segment2,
       Segment3,
       Segment4,
       Segment5,
       Segment6,
       Segment7,
       Segment8,
       Account_Type,
       Reference3,
       Detail_Budgeting_Allowed_Flag,
       Detail_Posting_Allowed_Flag,
       Chart_Of_Accounts_Id,
       Code_Combination_Id)
    VALUES
      ('Y',
       'N',
       NULL,
       NULL,
       SYSDATE,
       fnd_global.user_id,
       Segment1,
       Segment2,
       Segment3,
       Segment4,
       Segment5,
       Segment6,
       Segment7,
       Segment8,
       'A',
       'N',
       'N',
       'Y',
       x_Params.Chart_Of_Accounts_Id,
        Gl_Code_Combinations_s.Nextval)
    RETURNING
      Code_Combination_Id
    INTO
      x_CC_ID;

    IF NOT Gl_Flex_Insert_Pkg.Fdfgli(x_CC_ID) THEN
      l_error:=Fnd_Message.Get;
    END IF;
  END IF;

В вашем варианте, значения могут быть другие.
...
Рейтинг: 0 / 0
создание ID счета с помощью FND_KEY_FLEX.DEFINE (OeBS)
    #36687773
grilliant
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
спасибо, что помогаете..

подобные функции мне знакомы
fnd_flex_ext.get_ccid
fnd_flex_ext.get_combination_id

но мне казалось, что эта махина сама все это делает.. сейчас еще раз в guide уточнюсь..
...
Рейтинг: 0 / 0
создание ID счета с помощью FND_KEY_FLEX.DEFINE (OeBS)
    #36687779
Тупой Пух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hominisЯ так понял, что отдельного пакета для создания комбинации счета нету.

Есть. fnd_flex_ext.get_ccid
...
Рейтинг: 0 / 0
создание ID счета с помощью FND_KEY_FLEX.DEFINE (OeBS)
    #36687789
hominis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Проще снять трассу с формы и посмотреть, как там делается.
...
Рейтинг: 0 / 0
создание ID счета с помощью FND_KEY_FLEX.DEFINE (OeBS)
    #36687854
tru55
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я вроде когда-то пользовал

Код: plaintext
gl_code_combinations_pkg.insert_row()
...
Рейтинг: 0 / 0
создание ID счета с помощью FND_KEY_FLEX.DEFINE (OeBS)
    #36687912
grilliant
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
параметр VALIDATE
14 – 38 Oracle Applications Developer’s Guide

Key or range flexfields only. For a key flexfield,
you typically use FOR_INSERT for a combinations
form and FULL for a foreign key form. For a
range flexfield, you typically use NONE to allow
users to enter any value into a segment or
PARTIAL to ensure that users enter valid
individual segment values that do not necessarily
make up an actual valid combination.


Use a validation type of FULL for a foreign key
form to validate all segment values and generate a
new code combination and dynamically insert it
into the combinations table when necessary.
If you specify FULL, your flexfield checks the values your
user enters against the existing code combinations
in the code combinations table. If the combination
exists, your flexfield retrieves the code combination
ID. If the combination does not exist, your flexfield
creates the code combination ID and inserts the
combination into the combinations table.

If you (or an installer) define the flexfield structure with
Dynamic Inserts Allowed set to ”No”, then your
flexfield issues an error message when a user
enters a combination that does not already exist. In
this case, your flexfield does not create the new
code combination. FULL is the usual argument for
a form with a foreign key reference.

Я правильно понимаю, что здесь написано? функция сама создает новый счет?
...
Рейтинг: 0 / 0
создание ID счета с помощью FND_KEY_FLEX.DEFINE (OeBS)
    #36688094
grilliant
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ошибка была моя, совершенно в неожиданном месте. Все прекрасно работает в том виде в каком описано в guide.

Всем спасибо!
...
Рейтинг: 0 / 0
создание ID счета с помощью FND_KEY_FLEX.DEFINE (OeBS)
    #37028767
Доброго всем!
Делаю все шаги по доке, но не получается вернуть ID из окна КГП в форму((
В форме сделано следующее:
в блоке создано 2 поля:
LOCATOR (database item=No, LOV = ENABLE_LIST_LAMP, Validate from List = No)
LOCATOR_ID (database item=yes)
--
в WNFI
fnd_key_flex.define
(
BLOCK => 'PERSON_NORM'
, FIELD => 'LOCATOR'
, ID => 'LOCATOR_ID'
, appl_short_name => 'INV'
, code => 'MTLL'
, num => locator_num
, data_set => ':PARAMETER.ORG_ID'
, required => 'N'
, displayable => 'ALL'
, VALIDATE => 'FULL'
, QBE_IN => 'Y'
, DERIVE_ALWAYS=>'Y'
, QUERY_SECURITY =>'Y'
, USEDBFLDS => 'N'
, where_clause => '(DISABLE_DATE > SYSDATE or DISABLE_DATE IS NULL)
AND SUBINVENTORY_CODE = :PERSON_NORM.SUBINVENTORY'
, COLUMN => 'DESCRIPTION \\\"MyDesc\\\"(240)'
, -- NO_COMBMSG => 'INV_LOCATOR_NOT_AVAILABLE',
no_combmsg => 'FLEX-COMBINATION DISABLED'
);
--
в соответствующих триггерах fnd_flex.event(<event_name>);
--------
При попадании курсора на поле LOCATOR окно с выбором КГП выскакивает как надо, вываливает правильный список локаторов, пробую выбрать - окно исчезает, и поле LOCATOR остается пустым. Что не так?
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / Oracle Forms [игнор отключен] [закрыт для гостей] / создание ID счета с помощью FND_KEY_FLEX.DEFINE (OeBS)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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