<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>APPS-ORACLE.RU</title>
	<atom:link href="http://apps-oracle.ru/feed/" rel="self" type="application/rss+xml" />
	<link>http://apps-oracle.ru</link>
	<description>Oracle e-Business Suite, OAF, SQL</description>
	<lastBuildDate>Fri, 03 Apr 2026 05:33:33 +0000</lastBuildDate>
	<language>ru-RU</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>https://wordpress.org/?v=4.4.4</generator>
	<item>
		<title>OAF-компоненты. Attachments</title>
		<link>http://apps-oracle.ru/oaf-attachments/</link>
		<comments>http://apps-oracle.ru/oaf-attachments/#respond</comments>
		<pubDate>Wed, 18 Jul 2018 09:53:22 +0000</pubDate>
		<dc:creator><![CDATA[OebsDeveloper]]></dc:creator>
				<category><![CDATA[OA Framework]]></category>
		<category><![CDATA[Attachments]]></category>
		<category><![CDATA[AttachmentTable]]></category>
		<category><![CDATA[OAF]]></category>

		<guid isPermaLink="false">http://apps-oracle.ru/?p=7543</guid>
		<description><![CDATA[1. Динамическое создание компонента attachmentTable import oracle.apps.fnd.framework.webui.beans.layout.OAAttachmentTableBean; import oracle.apps.fnd.framework.webui.OAWebBeanConstants; import java.util.Hashtable; import java.util.Dictionary; ... OAAttachmentTableBean attTable = (OAAttachmentTableBean)pageContext.getWebBeanFactory().createWebBean(pageContext, OAWebBeanConstants.ATTACHMENT_TABLE_BEAN, null, null); attTable.setID("xxTestAttachmentId"); attTable.setViewUsageName("ApplicantAssignmentVO"); attTable.setSearchRegionDisplayed(false); attTable.setDocumentCatalogEnabled(true); attTable.setText("Сводка дополнений"); Hashtable&#60;String, Object&#62; entity = new Hashtable&#60;String, Object&#62;(); entity.put("entityId", "PER_ASSIGNMENTS_F"); // entity entity.put("showAll", Boolean.FALSE); entity.put("insertAllowed", Boolean.TRUE); entity.put("deleteAllowed", Boolean.TRUE); entity.put("updateAllowed", Boolean.TRUE); String[] pkAttrNames = new String[1]; pkAttrNames[0] = "AssignmentId"; entity.put("pkColumns", [&#8230;]]]></description>
				<content:encoded><![CDATA[<p><strong>1. Динамическое создание компонента attachmentTable</strong></p>
<pre class="brush:sql">import oracle.apps.fnd.framework.webui.beans.layout.OAAttachmentTableBean;
import oracle.apps.fnd.framework.webui.OAWebBeanConstants;
import java.util.Hashtable;
import java.util.Dictionary;
...
OAAttachmentTableBean attTable = (OAAttachmentTableBean)pageContext.getWebBeanFactory().createWebBean(pageContext, OAWebBeanConstants.ATTACHMENT_TABLE_BEAN, null, null);

attTable.setID("xxTestAttachmentId");
attTable.setViewUsageName("ApplicantAssignmentVO");
attTable.setSearchRegionDisplayed(false);
attTable.setDocumentCatalogEnabled(true);

attTable.setText("Сводка дополнений");

Hashtable&lt;String, Object&gt; entity = new Hashtable&lt;String, Object&gt;();
entity.put("entityId", "PER_ASSIGNMENTS_F"); // entity
entity.put("showAll", Boolean.FALSE);
entity.put("insertAllowed", Boolean.TRUE);
entity.put("deleteAllowed", Boolean.TRUE);
entity.put("updateAllowed", Boolean.TRUE);

String[] pkAttrNames = new String[1];
pkAttrNames[0] = "AssignmentId";
entity.put("pkColumns", pkAttrNames);

Dictionary[] entityMaps = new Dictionary[1];
entityMaps[0] = entity;
attTable.setEntityMappings(entityMaps);

webBean.addIndexedChild(attTable);
</pre>
<p><a href="https://community.oracle.com/thread/2249676" target="_blank">https://community.oracle.com/thread/2249676</a><br />
<a href="https://community.oracle.com/thread/2404025" target="_blank">https://community.oracle.com/thread/2404025</a></p>
<p><strong>2. Не появляются всплывающие popup-ы (Inline Attachments)</strong></p>
<p>В некоторых невыясненных ситуациях, при добавлении компонента attachmentTable на стандартную форму динамически или через персонализацию, не работают popup-ы для просмотра/добавления/редактирования/удаления вложений (Inline Attachments). Было обнаружено, как минимум, 2 условия, которые влияют на эту ситуацию (полный список условий выяснить не удалось):</p>
<ul>
<li>Страница открывается 1-й раз</li>
<li>У компонента attachmentTable отключен регион поиска (<code>searchRegionRendered="false"</code>)</li>
</ul>
<p>Для устранения этого неудобства удалось найти workaround. Нужно добавить в контроллер (processRequest) следующий код:</p>
<pre class="brush:sql">// Тут важен процесс создания компонента, оказывающий положительное влияние на popup-ы, если они не хотят всплывать.
// На форме компонент показывать не нужно.
OAMessageChoiceBean akAttachmentCategory = (OAMessageChoiceBean)createWebBean(pageContext, "MESSAGE_POPLIST", null, "XxTmp");
akAttachmentCategory.setPickListViewObjectDefinitionName("oracle.apps.fnd.server.FndCategoryNameVO");
akAttachmentCategory.setValue(pageContext, "1");
</pre>
<p><strong>3. Изменения в модели данных</strong><br />
Если форма работает с вложениями (attachmentLink, attachmentTable), то в модели данных происходят следующие динамические изменения:</p>
<ul>
<li>Добавляется дочерний Application Module с именем oracle_apps_fnd_server_OAAttachmentsAM</li>
<li>В этом AM, для каждого компонента, работающего с вложениями, создается набор ViewObject-ов. Наиболее интересные &#8212; VO, связанные с таблицами fnd_documents и fnd_attached_documents. Именуются они по шаблону Attach_&lt;num&gt;_FndDocumentsDomExtensionVO и Attach_&lt;num&gt;_FndAttachedDocumentsDomExtensionVO. Например, Attach_0_FndAttachedDocumentsDomExtensionVO.</li>
</ul>
<p>Перед проходом по строкам VO, нужно обязательно проверить, что заданы bind-переменные. Это наиболее вероятная ситуация, но попадались случаи, когда для объекта нет привязанных вложений, и bind-переменные в Attach&#8230;VO были не установлены. Попытка сделать проход по строкам VO, в такой ситуации, приведет к тому, что SQL-запрос вернет данные из таблиц без фильтра (например, все записи из fnd_attached_documents). Cтраница зависнет, а потом упадет по timeout-у.<br />
Пример кода.</p>
<pre class="brush:sql">OAApplicationModule am = pageContext.getApplicationModule(webBean);
// Опорные имена, по которым ищем AM и VO с вложениями
String attachmentsAMName = "oracle_apps_fnd_server_OAAttachmentsAM";
String attachDocsVOFlag = "FndAttachedDocumentsDomExtensionVO";
String docsVOFlag = "FndDocumentsDomExtensionVO";
// Application Module, в котором содержатся ViewObject-ы, имеющие отношения к вложениям (attachemnts)
OAApplicationModule amA = (OAApplicationModule)am.findApplicationModule(attachmentsAMName);
if (amA != null) {
    writeDiag(pageContext, "AM = " + amA.getDefFullName());
    String[] voNames = amA.getViewObjectNames();
    writeDiag(pageContext, "viewobjectNames Length = " + voNames.length);
    for (int j = 0; j &lt; voNames.length; j++) {
        // Обрабатываем ViewObject-ы (их может быть несколько - свой для каждого претендентства), в которых находятся данные по fnd_attached_documents if (voNames[j].lastIndexOf(attachDocsVOFlag) &gt; 0)
        if (voNames[j].lastIndexOf(attachDocsVOFlag) > 0) {
            String voDName = voNames[j].substring(0, voNames[j].indexOf("_", 8) + 1) + docsVOFlag; // "Attach__"
            writeDiag(pageContext, "     AttachedDocuments ViewObject Name = " + voNames[j]);
            writeDiag(pageContext, "     Documents ViewObject Name = " + voDName);
            
            OAViewObject voA = (OAViewObject)amA.findViewObject(voNames[j]);
            // ОБЯЗАТЕЛЬНО!!! Проверяем, чтобы были заданы bind-переменные.
            if (voA.getWhereClauseParams().length &gt; 1) {
                Object[] params = voA.getWhereClauseParams();
                for(int p = 0; p &lt; params.length; p++)
                    writeDiag(pageContext, "params[" + p + "] = " + params[p].toString());
                for (Row rowA = voA.first(); rowA != null; rowA = voA.next()) {
                    writeDiag(pageContext, "DocumentId = " + rowA.getAttribute("DocumentId"));
                    writeDiag(pageContext, "LastUpdateDate = " + rowA.getAttribute("LastUpdateDate"));
                    writeDiag(pageContext, "newRowState = " + ((ViewRowImpl)rowA).getNewRowState());
                }
            }
        }
    }
}
</pre>
]]></content:encoded>
			<wfw:commentRss>http://apps-oracle.ru/oaf-attachments/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>OAF-компоненты. AdvancedTable</title>
		<link>http://apps-oracle.ru/oaf-advancedtable/</link>
		<comments>http://apps-oracle.ru/oaf-advancedtable/#respond</comments>
		<pubDate>Fri, 13 Jul 2018 07:59:18 +0000</pubDate>
		<dc:creator><![CDATA[OebsDeveloper]]></dc:creator>
				<category><![CDATA[OA Framework]]></category>
		<category><![CDATA[AdvancedTable]]></category>
		<category><![CDATA[OAF]]></category>

		<guid isPermaLink="false">http://apps-oracle.ru/?p=7532</guid>
		<description><![CDATA[1. Использование элементов ввода в области tableActions Для элементов области tableActions, в которые предполагается ввод данных пользователем (например, MessageChoice или MessageTextInput), была замечена особенность: если ViewObject, связанный c AdvancedTable, не инициализирован, тогда нет доступа к новым значениям элементов, введенных на форме. Признаком того, что ViewObject не инициализирован, является надпись в табличной части &#171;Поиск не выполнен&#187;. [&#8230;]]]></description>
				<content:encoded><![CDATA[<p><strong>1. Использование элементов ввода в области tableActions</strong></p>
<p>Для элементов области tableActions, в которые предполагается ввод данных пользователем (например, MessageChoice или MessageTextInput), была замечена особенность: если ViewObject, связанный c AdvancedTable, не инициализирован, тогда нет доступа к новым значениям элементов, введенных на форме. Признаком того, что ViewObject не инициализирован, является надпись в табличной части &#171;Поиск не выполнен&#187;. Если ViewObject инициализирован, но в нем нет строк, то надпись будет &#171;Нет результатов поиска&#187;. В контроллере этот факт можно проверить с помощью функции VO isPreparedForExecution. Для кнопок таких проблем не возникает &#8212; с точки зрения обработки, важен только сам факт нажатия кнопки, который всегда можно отследить и обработать в контроллере.</p>
<p>Если есть необходимость работать с элементами, допускающими ввод данных пользователем в tableActions, то нужно чтобы VO был в инициализированном состоянии. Например, в контроллере processRequest, можно написать следующий код (чтобы состояние &#171;VO НЕ инициализирован, строк нет&#187; перевести в состояние &#171;VO инициализирован, строк нет&#187;)</p>
<pre class="brush:sql">if (!vo.isPreparedForExecution()) {
    vo.setWhereClause("1=0");
    vo.setWhereClauseParams(null);
    vo.executeQuery();
    vo.setWhereClause(null);
}
</pre>
<p><strong>2. Доступ к элементам, находящимся в tableActions или tableSelection</strong></p>
<p>Для доступа к элементам из областей tableActions или tableSelection, нужно сначала получить саму область, а потом искать элемент внутри нее</p>
<pre class="brush:sql">OAAdvancedTableBean tableBean = (OAAdvancedTableBean)webBean.findIndexedChildRecursive("invoicesTable");
OARowLayoutBean actionsBean = (OARowLayoutBean)tableBean.getTableActions(); // или OAFlowLayoutBean
OAMessageChoiceBean pt = (OAMessageChoiceBean)actionsBean.findIndexedChildRecursive("prepaymentTypesItem");
pt.setValue(pageContext, pageContext.getProfile("XXAP001_INVOICE_PREPAYMENT_DEFAULT"));
</pre>
<p><strong>3. Связывание свойств с атрибутами VO для элементов внутри Столбца</strong></p>
<p>Для некоторых элементов, являющихся дочерними по отношению к столбцу AdvancedTable, не удалось связать свойства с атрибутами VO. Такая особенность наблюдалась для любого региона (flowLayout, tableLayout и т.п.) и для компонента spacer. Например, свойство Rendered не получилось связать ни с использованием EL, ни через OADataBoundValueViewObject. Для spacer-а можно применить workaround:</p>
<ul>
<li>вместо компонента spacer использовать компонент rawText</li>
<li>в свойстве Text указать HTML-код, который генерится компонентом spacer (задать нужные значения в атрибутах width и height): <code><i>&lt;img src="/OA_HTML/cabo/images/skyros/t.gif" width="10" height="10"&gt;</i></code></li>
<li>свойство Rendered связать с атрибутом VO</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://apps-oracle.ru/oaf-advancedtable/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Регулярные выражения. Удаление последней буквы или цифры в строке.</title>
		<link>http://apps-oracle.ru/regexp_delete_last_symbol/</link>
		<comments>http://apps-oracle.ru/regexp_delete_last_symbol/#comments</comments>
		<pubDate>Wed, 04 Apr 2018 11:47:08 +0000</pubDate>
		<dc:creator><![CDATA[rudev]]></dc:creator>
				<category><![CDATA[SQL]]></category>
		<category><![CDATA[regexp]]></category>
		<category><![CDATA[REGEXP_LIKE]]></category>
		<category><![CDATA[Регулярные выражения]]></category>

		<guid isPermaLink="false">http://apps-oracle.ru/?p=7375</guid>
		<description><![CDATA[Используем регулярное выражение с REGEXP_LIKE для удаления последней буквы в строке: with t as ( select 'H18.DHSHJ7' as str from dual union all select 'H18.AAA1A' from dual union all select 'H18.AAA10' from dual union all select 'H18.AAAB4B' from dual ) select t.str, regexp_replace(str, '[[:alpha:]]$','') from t SQL> STR REGEXP_REPLACE(STR,'[[:ALPHA:] ---------- ------------------------------------------------------------------ H18.DHSHJ7 H18.DHSHJ7 H18.AAA1A H18.AAA1 [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Используем регулярное выражение с REGEXP_LIKE для удаления последней буквы в строке:</p>
<pre class="brush:sql">
with t as
(           select 'H18.DHSHJ7' as str from dual
 union all  select 'H18.AAA1A' from dual
 union all  select 'H18.AAA10' from dual 
 union all  select 'H18.AAAB4B' from dual  
)
select t.str, regexp_replace(str, '[[:alpha:]]$','')
from t

SQL> 
STR        REGEXP_REPLACE(STR,'[[:ALPHA:]
---------- ------------------------------------------------------------------
H18.DHSHJ7 H18.DHSHJ7
H18.AAA1A  H18.AAA1
H18.AAA10  H18.AAA10
H18.AAAB4B H18.AAAB4
</pre>
<p>Для удаления последней цифры заменяем [[:alpha:]] на [[:digit:]] </p>
<pre class="brush:sql">
with t as
(           select 'H18.DHSHJ7' as str from dual
 union all  select 'H18.AAA1A' from dual
 union all  select 'H18.AAA10' from dual 
 union all  select 'H18.AAAB4B' from dual  
)
select t.str, regexp_replace(str, '[[:digit:]]$','')
from t

SQL> 
STR        REGEXP_REPLACE(STR,'[[:DIGIT:]
---------- -------------------------------------------------------------------
H18.DHSHJ7 H18.DHSHJ
H18.AAA1A  H18.AAA1A
H18.AAA10  H18.AAA1
H18.AAAB4B H18.AAAB4B

</pre>
]]></content:encoded>
			<wfw:commentRss>http://apps-oracle.ru/regexp_delete_last_symbol/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>JSP страница для входа в OEBS с логином и паролем</title>
		<link>http://apps-oracle.ru/auto_login_oebs/</link>
		<comments>http://apps-oracle.ru/auto_login_oebs/#comments</comments>
		<pubDate>Tue, 26 Dec 2017 09:51:05 +0000</pubDate>
		<dc:creator><![CDATA[rudev]]></dc:creator>
				<category><![CDATA[OA Framework]]></category>
		<category><![CDATA[Oracle e-Business Suite]]></category>
		<category><![CDATA[fndvald]]></category>
		<category><![CDATA[JSP]]></category>
		<category><![CDATA[login]]></category>
		<category><![CDATA[OEBS]]></category>
		<category><![CDATA[password]]></category>

		<guid isPermaLink="false">http://apps-oracle.ru/?p=7211</guid>
		<description><![CDATA[Весьма полезная JSP страница для авто входа в OEBS с логином и паролем: http://host:port/OA_HTML/fndvald.jsp?username=!login&#38;password=!pwd Пример ссылки: (...)Читать дальше на apps-oracle.ru]]></description>
				<content:encoded><![CDATA[<p><img class="alignright" src="http://apps-oracle.ru/wp-content/uploads/2017/12/login2.png" alt="" /><br />
Весьма полезная JSP страница для авто входа в OEBS с логином и паролем:</p>
<p><code><strong>http://host:port/OA_HTML/fndvald.jsp?username=<span style="color: #0000ff;">!login</span>&amp;password=<span style="color: #0000ff;">!pwd</span></strong></code></p>
<p>Пример ссылки:</p>
<p>(...)<br/>Читать дальше на <a href="http://apps-oracle.ru/auto_login_oebs/">apps-oracle.ru</a></p>
]]></content:encoded>
			<wfw:commentRss>http://apps-oracle.ru/auto_login_oebs/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Ассоциативный массив: цикл по коллекции с ключом varchar2</title>
		<link>http://apps-oracle.ru/associative_arrays_index_by_string/</link>
		<comments>http://apps-oracle.ru/associative_arrays_index_by_string/#comments</comments>
		<pubDate>Thu, 27 Jul 2017 11:36:50 +0000</pubDate>
		<dc:creator><![CDATA[rudev]]></dc:creator>
				<category><![CDATA[oracle]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[pl/sql]]></category>
		<category><![CDATA[Ассоциативный]]></category>
		<category><![CDATA[ключ varchar2]]></category>
		<category><![CDATA[коллекция]]></category>
		<category><![CDATA[массив]]></category>
		<category><![CDATA[цикл]]></category>

		<guid isPermaLink="false">http://apps-oracle.ru/?p=7081</guid>
		<description><![CDATA[Пример заполнения ассоциативного массива и цикл для вывода данных. Ключом является строка varchar2(1): declare -- объявление типа TYPE resultRec is record ( ready varchar2(1), cnt number ); type resultTab is table of resultRec INDEX BY VARCHAR2(1); -- p_iter varchar2(1); -- итератор p_validation_res_tbl resultTab; -- экземпляр коллекции -- -- запись данных в коллекцию procedure put_result(p_ready varchar2) [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Пример заполнения ассоциативного массива и цикл для вывода данных.<br />
Ключом является строка varchar2(1):</p>
<pre class="brush:sql">
declare
  -- объявление типа
  TYPE resultRec is record
  (
      ready  varchar2(1),
      cnt    number
  );
  type resultTab is table of resultRec INDEX BY VARCHAR2(1);
  --
  p_iter varchar2(1); -- итератор
  p_validation_res_tbl resultTab; -- экземпляр коллекции
  --
  -- запись данных в коллекцию
  procedure put_result(p_ready varchar2)
  is
  begin
    if (p_validation_res_tbl.exists(p_ready)) then
      p_validation_res_tbl(p_ready).cnt := p_validation_res_tbl(p_ready).cnt + 1;
    else
      p_validation_res_tbl(p_ready).ready := p_ready;
      p_validation_res_tbl(p_ready).cnt   := 1;
    end if;
  end;  
begin
  
  -- запись данных в коллекцию через вспомогательную процедуру
  put_result('E');
  put_result('E');
  put_result('S');
  put_result('W');
  
  -- первичное выставление итератора коллекции  
  p_iter := p_validation_res_tbl.FIRST;
  -- проверка, на то, что коллекция не пустая
  if (p_iter is null) then
    dbms_output.put_line('p_validation_res_tbl is null');
  else  
    -- цикл по коллекции
    WHILE p_iter IS NOT NULL
    LOOP
      -- Пример оращения к данным p_validation_res_tbl(p_iter).cnt, где
      --   p_validation_res_tbl: экземпляр коллекции
      --   p_iter : текущий итератор
      --   cnt : поле из record resultRec
      dbms_output.put_line(p_validation_res_tbl(p_iter).ready 
                           ||':'
                           ||p_validation_res_tbl(p_iter).cnt
                           ||' row(s)');
      -- получение следующей записи
      p_iter := p_validation_res_tbl.NEXT(p_iter);
    END LOOP; 
  end if; 
  
end;
>
E:2 row(s)
S:1 row(s)
W:1 row(s)
</pre>
]]></content:encoded>
			<wfw:commentRss>http://apps-oracle.ru/associative_arrays_index_by_string/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Список полномочий и групп запросов для отчета</title>
		<link>http://apps-oracle.ru/list_responsibility_for_report/</link>
		<comments>http://apps-oracle.ru/list_responsibility_for_report/#comments</comments>
		<pubDate>Fri, 15 Apr 2016 13:47:33 +0000</pubDate>
		<dc:creator><![CDATA[rudev]]></dc:creator>
				<category><![CDATA[Oracle e-Business Suite]]></category>
		<category><![CDATA[fnd_application]]></category>
		<category><![CDATA[fnd_concurrent_programs]]></category>
		<category><![CDATA[fnd_request_groups]]></category>
		<category><![CDATA[fnd_responsibility]]></category>
		<category><![CDATA[OEBS]]></category>
		<category><![CDATA[report]]></category>
		<category><![CDATA[request groups]]></category>
		<category><![CDATA[responsibility]]></category>
		<category><![CDATA[select]]></category>
		<category><![CDATA[отчет]]></category>
		<category><![CDATA[параллельная программа]]></category>
		<category><![CDATA[полномочия]]></category>
		<category><![CDATA[список]]></category>

		<guid isPermaLink="false">http://apps-oracle.ru/?p=6681</guid>
		<description><![CDATA[Запрос для вывода списка полномочий и групп запросов по коду или имени отчета/параллельной программы: with params as ( select 'FNDATREP' as short_name ,'' as long_name ,'RU' as lang /* RU;US */ from dual ) select p1.concurrent_program_name ,pt.user_concurrent_program_name ,fa.application_short_name as appl_resp ,r.responsibility_key ,rt.responsibility_name ,fa1.application_short_name as appl_request_group ,g.request_group_name from fnd_request_groups g, fnd_request_group_units u, fnd_application fa, fnd_application fa1, [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Запрос для вывода списка полномочий и групп запросов по коду или имени отчета/параллельной программы:</p>
<pre class="brush:sql">
with params as (
select 'FNDATREP' as short_name
      ,''    as long_name
      ,'RU'  as lang /* RU;US */
from dual
)
select  p1.concurrent_program_name
       ,pt.user_concurrent_program_name
       ,fa.application_short_name as appl_resp
       ,r.responsibility_key
       ,rt.responsibility_name      
       ,fa1.application_short_name as appl_request_group
       ,g.request_group_name
from fnd_request_groups      g,
     fnd_request_group_units u,
     fnd_application    fa,
     fnd_application    fa1,         
     fnd_concurrent_programs_tl pt,
     fnd_concurrent_programs    p1,
     fnd_responsibility    r,
     fnd_responsibility_tl rt,
     params
where 1=1
      and u.application_id = g.application_id
      and u.request_group_id = g.request_group_id
      and (u.request_unit_id = pt.concurrent_program_id
          or u.request_unit_type = 'A')
      and u.unit_application_id = pt.application_id
      and pt.application_id = fa.application_id
      and pt.concurrent_program_id = p1.concurrent_program_id
      and g.application_id = fa1.application_id
      and r.request_group_id = g.request_group_id
      and r.responsibility_id = rt.responsibility_id
      and rt.language = params.lang
      and pt.language  = params.lang
      and (
            (p1.concurrent_program_name like '%'||params.short_name||'%' 
             and params.short_name is not null 
            ) 
            or 
            (pt.user_concurrent_program_name like '%'||params.long_name||'%' 
             and params.long_name is not null and params.short_name is null
            )
          )
order by 1,2;
</pre>
]]></content:encoded>
			<wfw:commentRss>http://apps-oracle.ru/list_responsibility_for_report/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Список полномочий где используется форма + путь для вызова</title>
		<link>http://apps-oracle.ru/find_responsibility_for_form/</link>
		<comments>http://apps-oracle.ru/find_responsibility_for_form/#respond</comments>
		<pubDate>Fri, 15 Apr 2016 13:08:45 +0000</pubDate>
		<dc:creator><![CDATA[rudev]]></dc:creator>
				<category><![CDATA[Oracle e-Business Suite]]></category>
		<category><![CDATA[Oracle Forms]]></category>
		<category><![CDATA[find]]></category>
		<category><![CDATA[fnd_form]]></category>
		<category><![CDATA[fnd_form_functions_tl]]></category>
		<category><![CDATA[fnd_menu_entries]]></category>
		<category><![CDATA[fnd_responsibility]]></category>
		<category><![CDATA[forms]]></category>
		<category><![CDATA[OEBS]]></category>
		<category><![CDATA[responsibility]]></category>
		<category><![CDATA[select]]></category>
		<category><![CDATA[запрос]]></category>
		<category><![CDATA[поиск]]></category>
		<category><![CDATA[полномочия]]></category>
		<category><![CDATA[путь]]></category>
		<category><![CDATA[форма]]></category>

		<guid isPermaLink="false">http://apps-oracle.ru/?p=6676</guid>
		<description><![CDATA[Скрипт для вывода списка полномочий, в которых используется форма. Так же добавлен путь внутри полномочий для вызова формы. Желаемый язык для вывода данных вынесен в параметры. with params as ( select 'FNDSCRSP' as form_name ,'' as user_form_name ,'' as description_form ,'RU' as lang /* RU;US */ from dual ) select (select rt.responsibility_name from fnd_responsibility_tl rt [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Скрипт для вывода списка полномочий, в которых используется форма.<br />
Так же добавлен путь внутри полномочий для вызова формы.<br />
Желаемый язык для вывода данных вынесен в параметры.</p>
<pre class="brush:sql">
with params as (
select 'FNDSCRSP' as form_name
      ,''         as user_form_name
      ,''         as description_form
      ,'RU'       as lang /* RU;US */
from dual
)
select (select rt.responsibility_name from fnd_responsibility_tl rt , params
        where rt.responsibility_id  = r.responsibility_id
              and rt.application_id = r.application_id
              and rt.language = params.lang
       ) as responsibility_name
      ,(select ltrim(sys_connect_by_path(me.prompt, ' --> '),' --> ') 
        from (select b.menu_id,b.entry_sequence,b.sub_menu_id,b.function_id, t.prompt
             from fnd_menu_entries_tl t, fnd_menu_entries b, params
             where b.menu_id = t.menu_id
               and b.entry_sequence = t.entry_sequence
               and t.language = params.lang) me
        where me.prompt is not null 
              and me.function_id = ff1.function_id 
              and rownum=1
        start with me.menu_id = r.menu_id  
        connect by prior me.sub_menu_id = me.menu_id and prior me.prompt is not null
       ) path_to_form
      ,r.application_id
      ,r.responsibility_id
      ,r.responsibility_key 

      ,r.menu_id    
      ,(select mt.user_menu_name from fnd_menus_tl mt, params where mt.menu_id = r.menu_id and mt.language = params.lang) as user_menu_name
      ,ff1.function_id
      ,(select fft.user_function_name from fnd_form_functions_tl fft, params where fft.function_id = ff1.function_id and fft.language = params.lang) as user_function_name
      ,ff1.form_id 
      ,(select ff.form_name from fnd_form ff where ff.form_id = ff1.form_id ) as form_name      
      ,(select ftl.user_form_name from fnd_form_tl ftl, params where ftl.form_id = ff1.form_id  and ftl.language = params.lang) as user_form_name
from fnd_responsibility r
    ,(select ff.function_id, ff.form_id from fnd_form_functions ff 
      where ff.form_id in (select f.form_id 
                           from fnd_form f, fnd_form_tl ft, params
                           where f.form_id = ft.form_id
                                 and (
                                        f.form_name = params.form_name 
                                     or (ft.user_form_name like '%'||params.user_form_name||'%' and params.user_form_name is not null)
                                     or (ft.description like '%'||params.description_form||'%' and params.description_form is not null)
                                     )
                          )
     ) ff1 
where 1=1
      and sysdate between r.start_date and nvl(r.end_date, sysdate+1)
      and r.menu_id in (select me.menu_id from fnd_menu_entries me 
                        start with me.function_id = ff1.function_id
                        connect by prior me.menu_id = me.sub_menu_id 
                       )
</pre>
]]></content:encoded>
			<wfw:commentRss>http://apps-oracle.ru/find_responsibility_for_form/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SQL Склонение количества ошибок</title>
		<link>http://apps-oracle.ru/oracle-sql-word-declination/</link>
		<comments>http://apps-oracle.ru/oracle-sql-word-declination/#comments</comments>
		<pubDate>Tue, 09 Feb 2016 11:12:09 +0000</pubDate>
		<dc:creator><![CDATA[rudev]]></dc:creator>
				<category><![CDATA[Oracle e-Business Suite]]></category>
		<category><![CDATA[declination]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[количество]]></category>
		<category><![CDATA[склонение]]></category>

		<guid isPermaLink="false">http://apps-oracle.ru/?p=6620</guid>
		<description><![CDATA[Пример SQL запроса для склонения слова &#171;ошибка&#187; для вывода количества ошибок: &#171;Найдена 1 ошибка&#187;; &#171;Найдено 3 ошибки&#187;; &#171;Найдено 5 ошибок&#187; : select val ,case when mod(val,10) between 2 and 4 then 'Найдено '&#124;&#124;val&#124;&#124;' ошибки' when val between 11 and 14 or mod(val,10) between 5 and 9 or mod(val,10) = 0 then 'Найдено '&#124;&#124;val&#124;&#124;' ошибок' when [&#8230;]]]></description>
				<content:encoded><![CDATA[<p><img class="alignleft" src="http://apps-oracle.ru/wp-content/uploads/2016/02/oshibka1-e1455015945168.jpg" alt="" /><br />
Пример SQL запроса для склонения слова &#171;ошибка&#187; для вывода количества ошибок: &#171;Найдена 1 ошибка&#187;; &#171;Найдено 3 ошибки&#187;; &#171;Найдено 5 ошибок&#187; :</p>
<pre class="brush:sql">select 
  val
 ,case when mod(val,10) between 2 and 4 then 'Найдено '||val||' ошибки'
       
       when val between 11 and 14 or mod(val,10) between 5 and 9 
            or mod(val,10) = 0 then 'Найдено '||val||' ошибок' 
                          
       when mod(val,10) = 1 then 'Найдена '||val||' ошибка'
 end str
from ( select level val from dual connect by level&lt;=25 )

       VAL STR
---------- -------------------------------------------------------
         1 Найдена 1 ошибка
         2 Найдено 2 ошибки
         3 Найдено 3 ошибки
         4 Найдено 4 ошибки
         5 Найдено 5 ошибок
         6 Найдено 6 ошибок
         7 Найдено 7 ошибок
         8 Найдено 8 ошибок
         9 Найдено 9 ошибок
        10 Найдено 10 ошибок
        11 Найдено 11 ошибок
        12 Найдено 12 ошибки
        13 Найдено 13 ошибки
        14 Найдено 14 ошибки
        15 Найдено 15 ошибок
        16 Найдено 16 ошибок
        17 Найдено 17 ошибок
        18 Найдено 18 ошибок
        19 Найдено 19 ошибок
        20 Найдено 20 ошибок
        21 Найдена 21 ошибка
        22 Найдено 22 ошибки
        23 Найдено 23 ошибки
        24 Найдено 24 ошибки
        25 Найдено 25 ошибок
25 rows selected
</pre>
]]></content:encoded>
			<wfw:commentRss>http://apps-oracle.ru/oracle-sql-word-declination/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Riga DevDay 2016</title>
		<link>http://apps-oracle.ru/rigadevday2016/</link>
		<comments>http://apps-oracle.ru/rigadevday2016/#respond</comments>
		<pubDate>Mon, 25 Jan 2016 12:27:54 +0000</pubDate>
		<dc:creator><![CDATA[rudev]]></dc:creator>
				<category><![CDATA[Новости]]></category>
		<category><![CDATA[2016]]></category>
		<category><![CDATA[DevDay]]></category>
		<category><![CDATA[Oracle]]></category>
		<category><![CDATA[Riga]]></category>
		<category><![CDATA[конференция]]></category>
		<category><![CDATA[Рига]]></category>

		<guid isPermaLink="false">http://apps-oracle.ru/?p=6572</guid>
		<description><![CDATA[Уважаемые посетители моего блога, обращаю ваше внимание на ежегодную конференцию для разработчиков Riga DevDay 2016, которая пройдёт со 2 по 4 марта в Риге. Стоимость, расписание сессий, другие подробности по ссылке www.rigadevday.lv и www.facebook.com/rigadevday]]></description>
				<content:encoded><![CDATA[<p><img class="wp-image-4577 alignleft" src="https://scontent-frt3-1.xx.fbcdn.net/hphotos-xaf1/t31.0-8/10556984_1246841138716028_3141444731268892770_o.jpg" alt="Riga DevDay 2016"  /><br />
Уважаемые посетители моего блога,<br />
обращаю ваше внимание на ежегодную конференцию для разработчиков <strong><span style="color: #3366ff;">Riga DevDay 2016</span></strong>, которая пройдёт со 2 по 4 марта в Риге.</p>
<p>Стоимость, расписание сессий, другие подробности по ссылке<br />
<a title="https://rigadevday.lv/" href="https://rigadevday.lv/" target="_blank">www.rigadevday.lv</a> и <a title="www.facebook.com/rigadevday" href="https://www.facebook.com/rigadevday/" target="_blank">www.facebook.com/rigadevday</a></p>
]]></content:encoded>
			<wfw:commentRss>http://apps-oracle.ru/rigadevday2016/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>OEBS API INV: Создание заказа на перемещение</title>
		<link>http://apps-oracle.ru/api_create_move_order/</link>
		<comments>http://apps-oracle.ru/api_create_move_order/#respond</comments>
		<pubDate>Fri, 05 Jun 2015 12:17:47 +0000</pubDate>
		<dc:creator><![CDATA[rudev]]></dc:creator>
				<category><![CDATA[API]]></category>
		<category><![CDATA[Oracle e-Business Suite]]></category>
		<category><![CDATA[create_move_order_header]]></category>
		<category><![CDATA[create_move_order_lines]]></category>
		<category><![CDATA[INV]]></category>
		<category><![CDATA[inv_move_order_pub]]></category>
		<category><![CDATA[Заказ на перемещение]]></category>
		<category><![CDATA[Запасы]]></category>

		<guid isPermaLink="false">http://apps-oracle.ru/?p=6361</guid>
		<description><![CDATA[Пример использования API для создания заказа на перемещение declare lx_doc_hdr inv_move_order_pub.Trohdr_Rec_Type; lx_doc_lines inv_move_order_pub.Trolin_Tbl_Type; -- lx_doc_hdr_vals inv_move_order_pub.Trohdr_Val_Rec_Type; lx_doc_lines_vals inv_move_order_pub.Trolin_Val_Tbl_Type; lx_return_status varchar2(1); lx_msg_data varchar2(4000); lx_msg_count number; begin -- тип заказа на перемещение = заявка lx_doc_hdr.move_order_type := inv_globals.G_MOVE_ORDER_REQUISITION; lx_doc_hdr.organization_id := 1775; lx_doc_hdr.date_required := sysdate; lx_doc_hdr.operation := inv_globals.G_OPR_CREATE; lx_doc_hdr.header_status := inv_globals.G_TO_STATUS_PREAPPROVED; -- создание заголовка заказа на перемещение inv_move_order_pub.create_move_order_header( p_api_version_number [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Пример использования API для создания заказа на перемещение</p>
<pre class="brush:sql">
declare 
  lx_doc_hdr    inv_move_order_pub.Trohdr_Rec_Type;
  lx_doc_lines  inv_move_order_pub.Trolin_Tbl_Type;    
  --
  lx_doc_hdr_vals   inv_move_order_pub.Trohdr_Val_Rec_Type;
  lx_doc_lines_vals inv_move_order_pub.Trolin_Val_Tbl_Type;
  lx_return_status  varchar2(1);
  lx_msg_data       varchar2(4000);
  lx_msg_count      number;
begin
  -- тип заказа на перемещение = заявка
  lx_doc_hdr.move_order_type        := inv_globals.G_MOVE_ORDER_REQUISITION;
  lx_doc_hdr.organization_id        := 1775;
  lx_doc_hdr.date_required          := sysdate;
  
  lx_doc_hdr.operation              := inv_globals.G_OPR_CREATE;
  lx_doc_hdr.header_status          := inv_globals.G_TO_STATUS_PREAPPROVED;
    
  -- создание заголовка заказа на перемещение
  inv_move_order_pub.create_move_order_header(
    p_api_version_number => 1,
    p_init_msg_list      => fnd_api.G_TRUE,
    p_return_values      => fnd_api.G_TRUE,
    p_commit             => fnd_api.G_FALSE,
    x_return_status      => lx_return_status,
    x_msg_count          => lx_msg_count,
    x_msg_data           => lx_msg_data,
    p_trohdr_rec         => lx_doc_hdr,
    p_trohdr_val_rec     => lx_doc_hdr_vals,
    x_trohdr_rec         => lx_doc_hdr,
    x_trohdr_val_rec     => lx_doc_hdr_vals
  );
  
  dbms_output.put_line('create_move_order_header='||lx_return_status);
  dbms_output.put_line('header_id='||lx_doc_hdr.header_id);

  if (lx_return_status!='S') then
    FOR j IN 1 .. lx_msg_count LOOP
      dbms_output.put_line('error('||j||')= ' ||fnd_msg_pub.get(j,fnd_api.g_false));
    END LOOP;  
  else

    lx_doc_lines(1).header_id      := lx_doc_hdr.header_id;
    
    lx_doc_lines(1).operation      := inv_globals.G_OPR_CREATE;
    lx_doc_lines(1).line_status    := inv_globals.G_TO_STATUS_PREAPPROVED;
    lx_doc_lines(1).date_required  := sysdate;       
    lx_doc_lines(1).status_date    := sysdate;
    -- 64 Перенос заказа на перемещение    
    lx_doc_lines(1).transaction_type_id := inv_globals.g_type_transfer_order_subxfr;
    --
    lx_doc_lines(1).from_subinventory_code := 'ttttttt';
    lx_doc_lines(1).organization_id        := 1775;
    lx_doc_lines(1).to_subinventory_code   := 'fffffff';      
    lx_doc_lines(1).to_organization_id     := 1775;
          
    lx_doc_lines(1).inventory_item_id      := 57878;
    lx_doc_lines(1).uom_code               := 'шт'; 
    lx_doc_lines(1).quantity               := 5;    
    
    -- создание строки заказа на перемещение
    inv_move_order_pub.create_move_order_lines(
      p_api_version_number       => 1,
      p_init_msg_list            => fnd_api.G_TRUE,
      p_return_values            => fnd_api.G_TRUE,      
      p_commit                   => fnd_api.G_FALSE,
      x_return_status            => lx_return_status,
      x_msg_count                => lx_msg_count,
      x_msg_data                 => lx_msg_data,
      p_trolin_tbl               => lx_doc_lines,
      p_trolin_val_tbl           => lx_doc_lines_vals,
      x_trolin_tbl               => lx_doc_lines,
      x_trolin_val_tbl           => lx_doc_lines_vals
    );    
    
    dbms_output.put_line('create_move_order_lines='||lx_return_status);
    if (lx_return_status!='S') then
      FOR j IN 1 .. lx_msg_count LOOP
        dbms_output.put_line('error('||j||')='||fnd_msg_pub.get(j,fnd_api.g_false));
      END LOOP;  
    else
      dbms_output.put_line('line_id='||lx_doc_lines(1).line_id);      
    end if;    

  end if;
  
end;

</pre>
]]></content:encoded>
			<wfw:commentRss>http://apps-oracle.ru/api_create_move_order/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
