Архив

Архив автора

Удаление папок SVN

14 Сентябрь 2011 3 comments

Для удаления скрытых файлов и папок SVN нам поможет следующий батник (windows):

rem Если надо указать конкретную дирректорию, то используем закомментированный вариант
rem for /d /r "%1" %%d in (.svn) do @if exist "%%d" rd /s/q "%%d"

rem Удаляем svn файлы начиная с текущей директории
for /d /r "." %%d in (.svn) do @if exist "%%d" rd /s/q "%%d"
Создание bat файла:

1) Создаём новый файл с расширение «bat». Например, «clear_svn.bat».
2) Помещаем созданный файл в каталог, который хотим почистить от svn файлов (поддерживается рекурсивное удаление) и запускаем его.
3) Все файлы svn удалены.

Categories: Others Tags: ,

Регистрация view в OEBS

9 Сентябрь 2011 1 комментарий


Если зарегистрировать view в OEBS, указав следующие столбцы

  • START_DATE_ACTIVE
  • END_DATE_ACTIVE
  • ENABLED_FLAG

, то при использовании данной view в наборе значений автоматически будут отсекаться устаревшие данные.

Для регистрации view в OEBS, используем следующий скрипт.
Читать дальше про “Регистрация view в OEBS” »

Скрипт копирования аттачмент функции

8 Сентябрь 2011 Нет комментариев


Если, при кастомизации стандартной формы OEBS, возникает необходимость сохранить функциональность аттачментов, то реализовать это поможет следующий скрипт:

Читать дальше про “Скрипт копирования аттачмент функции” »

Как создать ярлык для инстанса OEBS

8 Сентябрь 2011 3 comments

Довольно удобно для входа в OEBS использовать ярлык с сохраненным логином.
Создаётся такой ярлык довольно просто:

1) Заходим на инстанс

Вход на инстанс OEBS

Читать дальше про “Как создать ярлык для инстанса OEBS” »

Categories: Oracle e-Business Suite Tags:

Поиск значения по всем таблицам

7 Сентябрь 2011 19 comments

Поиск значения по всем таблицам

Вариант1:

DECLARE
  match_count   INTEGER;
  query_str     VARCHAR2(400);
  l_owner       VARCHAR2(10)  := 'SCOTT';
  l_search_text VARCHAR2(100) := '10';
BEGIN
  FOR t IN (select table_name, column_name FROM all_tab_columns a
            where owner = l_owner
                  and a.data_type in ('NUMBER', 'VARCHAR2')
            )
  LOOP
    begin
      match_count := 0;
      query_str   := 'SELECT COUNT(*) FROM ' ||l_owner||'.'|| t.table_name ||
                     ' WHERE to_char(' || t.column_name || ') = :1';
      EXECUTE IMMEDIATE query_str
        INTO match_count
        USING l_search_text;
      IF match_count > 0 THEN
        dbms_output.put_line(l_owner||'.'||t.table_name || ' ' || t.column_name || ' ' || match_count);
        dbms_output.put_line('  SELECT t.'|| t.column_name || ', t.* from '||l_owner||'.'|| t.table_name||' t where to_char(' || t.column_name || ') = '''||l_search_text||'''');
        dbms_output.put_line('');
      END IF;
    exception
     when others then
       dbms_output.put_line(t.table_name||'.'||t.column_name||' : '||SQLERRM||' : '||SQLCODE);
       dbms_output.put_line(query_str);
       dbms_output.put_line('');
       /*raise*/
    end;
  END LOOP;
END;

Вариант2:

--SET SERVEROUTPUT ON SIZE 1000000
DECLARE
  TYPE tab_columns_rec_type IS RECORD (
    table_name   all_tab_columns.table_name%type
   ,column_name  all_tab_columns.column_name%type
   ,data_type    all_tab_columns.data_type%type
  );
  type tab_columns_tab_type is table of tab_columns_rec_type index by binary_integer;
  l_tab_columns_rec tab_columns_tab_type;
 
  match_count   INTEGER;
  query_str     VARCHAR2(400);
  l_owner       VARCHAR2(10)  := 'SCOTT';
  l_search_text VARCHAR2(100) := '10'; -- % добавляем здесь, если ищем не по точному вхождению
  l_number      NUMBER;
  is_number     NUMBER(1);
  l_str_length  NUMBER;
  /*
  l_mode:
  1 - NUMBER и VARCHAR2
  2 - only NUMBER
  3 - only VARCHAR2
  */
  l_mode NUMBER := 1;
  -- При каком количестве найденные совпадений
  -- прекращать поиск
  l_found_count  NUMBER := 1; 
  l_exists_count NUMBER;
BEGIN
 
  l_str_length := length(l_search_text);
 
  begin
    l_number := to_number(l_search_text);
    is_number := 1;
  exception
    when VALUE_ERROR then
      is_number := 0;
  end;
 
  if (l_mode = 1 and is_number = 1) then
    select table_name, column_name, data_type
      bulk collect into l_tab_columns_rec
    FROM all_tab_columns a
    where owner = l_owner
          and a.data_length >= l_str_length
          and ( a.data_type = 'VARCHAR2' or a.data_type = 'NUMBER' );
  elsif (l_mode = 2 and is_number = 1) then
    select table_name, column_name, data_type
      bulk collect into l_tab_columns_rec
    FROM all_tab_columns a
    where owner = l_owner
          and a.data_length >= l_str_length
          and a.data_type = 'NUMBER';
  else
    select table_name, column_name, data_type
      bulk collect into l_tab_columns_rec
    FROM all_tab_columns a
    where owner = l_owner
          and a.data_length >= l_str_length
          and a.data_type = 'VARCHAR2';
  end if;
  l_exists_count := 0;
  if NOT (l_tab_columns_rec is null or l_tab_columns_rec.count = 0) then
    for j in l_tab_columns_rec.first..l_tab_columns_rec.last
    LOOP
        begin
          match_count := 0;
          if (l_tab_columns_rec(j).data_type = 'VARCHAR2') then
            query_str   := 'SELECT count(*) FROM ' ||l_owner||'.'|| l_tab_columns_rec(j).table_name ||
                           ' WHERE rownum = 1 and to_char(' || l_tab_columns_rec(j).column_name || ') = :1';
            EXECUTE IMMEDIATE query_str
              INTO match_count
              USING l_search_text;
          elsif (l_tab_columns_rec(j).data_type = 'NUMBER') then
            query_str   := 'SELECT count(*) FROM ' ||l_owner||'.'|| l_tab_columns_rec(j).table_name ||
                           ' WHERE rownum = 1 and ' || l_tab_columns_rec(j).column_name || ' = :1';
            EXECUTE IMMEDIATE query_str
              INTO match_count
              USING l_number;
          end if;
 
          IF match_count > 0 THEN
            l_exists_count := l_exists_count + 1;
            dbms_output.put_line(l_tab_columns_rec(j).data_type||' '||l_owner||'.'||l_tab_columns_rec(j).table_name || ' ' || l_tab_columns_rec(j).column_name );
            dbms_output.put_line('  SELECT t.'|| l_tab_columns_rec(j).column_name || ', t.* from '||l_owner||'.'|| l_tab_columns_rec(j).table_name||' t where to_char(' || l_tab_columns_rec(j).column_name || ') like '''||l_search_text||'''');
            dbms_output.put_line('');
            if (l_exists_count = l_found_count) then
              exit;
            end if;
          END IF;
        exception
         when others then
           dbms_output.put_line(l_tab_columns_rec(j).table_name||'.'||l_tab_columns_rec(j).column_name||' : '||SQLERRM||' : '||SQLCODE);
           dbms_output.put_line(query_str);
           dbms_output.put_line('');
           /*raise*/
        end;
      END LOOP;
  end if;
 
END;
Categories: oracle, SQL Tags: , ,

Параллельные программы в ОЕБС (FND_CONCURRENT_REQUESTS)

18 Август 2011 1 комментарий
SELECT a.request_id,
       b.user_name,
       c.program,
       c.argument_text,
       a.requested_start_date,
       /*a.status_code, a.phase_code,*/
       lc.MEANING as status_descr,
       lp.MEANING as phase_descr
  FROM fnd_concurrent_requests a, 
       fnd_user                b, 
       fnd_conc_req_summary_v  c,
       fnd_lookups             lp,
       fnd_lookups             lc
 WHERE b.user_id = a.requested_by
   AND a.request_id = c.request_id
   AND a.requested_start_date > trunc(SYSDATE)
   AND a.hold_flag = 'N'
   and lp.lookup_type = 'CP_PHASE_CODE'
   and lp.LOOKUP_CODE = a.phase_code
   and lc.lookup_type = 'CP_STATUS_CODE'
   and lc.LOOKUP_CODE = a.status_code
   /*and a.status_code IN ('Q', 'I')*/
   and b.user_name LIKE '%'
   and c.program like '%'
 ORDER BY a.request_id desc;

Читать дальше про “Параллельные программы в ОЕБС (FND_CONCURRENT_REQUESTS)” »

Жадная и ленивая квантификация в регулярных выражениях

16 Август 2011 Нет комментариев

GREEDY AND LAZY IN REGEXP

Квантификация — поиск последовательностей;
Определяет, сколько раз предшествующее выражение может встречаться.

Квантификатор может относиться более чем к одному символу в регулярном выражении, только если это символьный класс или группа.



Таблица 2: Квантификаторы и операторы повтора

Квантификатор Описание Пример
* Встречается 0 и более раз REGEXP_REPLACE(str, ’11*’, ‘1’)
Результат:
test11 => test1
11123345 => 123345
? Встречается 0 или 1 раз
+ Встречается 1 и более раз REGEXP_LIKE(str,’5+’)
Результат:
test11 => false
11123345 => true
{m} Встречается ровно m раз REGEXP_LIKE(str,’3{2}’)
Результат:
test11 => false
11123345 => true
{m,} Встречается по крайней мере m раз
{m, n} Встречается по крайней мере m раз, но не более n раз


Жадная квантификация — это стремление захватить максимально длинную строку, которая соответствует шаблону.

SQL> with t as (
  2   select '<div><img src="http://apps-oracle.ru/logo2.png" alt=""/></div>' str from dual
  3  )
  4  select regexp_substr(str,'<.*>') as res from t;

RES
--------------------------------------------------------------
<div><img src="http://apps-oracle.ru/logo2.png" alt=""/></div>


Ленивая квантификация — это стремление захватить максимально короткую строку, которая соответствует шаблону. Поддерживается с версии 10gR2.

SQL> with t as (
  2   select '<div><img src="http://apps-oracle.ru/logo2.png" alt=""/></div>' str from dual
  3  )
  4  select regexp_substr(str,'<.*?>') as res from t;

RES
-----
<div>



Жадный Ленивый
* *?
+ +?
{n,} {n,}?




Создание страницы с таблицей данных

8 Август 2011 6 comments

Создадим страницу, на которой будут выводится данные по сотрудникам. Данные будут представлены в виде таблицы.

Подготовка

1) Создаем новый проект или открываем существующий
Создание OAF проекта в JDeveloper


2) Создаем новый View Object (VO) или используем существующий
Создание View Object (VO) – только для просмотра данных



Читать дальше про “Создание страницы с таблицей данных” »

Oracle E-Business Suite (OEBS)

Oracle E-Business Suite (пакет приложений электронного бизнеса, используется также сокращение OEBS) — тиражируемый интегрированный комплекс прикладного программного обеспечения производства компании Oracle, включающий функциональные блоки ERP, CRM, PLM.

ERP — Enterprise Resource Planning System (Система планирования ресурсов предприятия)
CRM — Customer Relationship Management System (Система управления взаимоотношениями с клиентами)
PLM — Product Lifecycle Management (Система управления жизненным циклом изделий)

Oracle E-Business Suite предназначен для автоматизации основных направлений деятельности предприятий, в том числе: финансов, производства, управления персоналом, логистики, маркетинга, сбыта и продаж, обслуживания заказчиков, взаимоотношений с поставщиками и клиентами и других.

Oracle E-Business Suite относится к классу систем оперативной обработки транзакций (Online Transaction Processing — OLTP). Для систем этого класса характерно, что операции, производимые в одном функциональном приложении, инициируют генерацию соответствующих транзакций в других функциональных приложениях системы, что позволяет любому пользователю получать актуальную информацию в реальном времени.

Модули и подсистемы Oracle E-Business Suite
  • Управление эффективностью бизнеса
  • Управление материальными потоками
  • Управление взаимоотношениями с клиентами
  • Финансы
  • Управление техобслуживанием и ремонтами
  • Система управления персоналом
  • Управление производством
  • Управление проектами
  • Финансовый сервис
  • Управление жизненным циклом
  • Управление логистикой

Официальная страница продукта на Русском языке

Categories: Oracle e-Business Suite Tags:

Типы организаций Oracle E-Business Suite


Бизнес-группа является обязательным типом организации, который присваивается самому верхнему уровню организационной структуры. На уровне бизнес-группы обеспечивается ведение данных модуля Human Resources («Сотрудники»).

Юридическое лицо (Legal Entity) — присваивается объекту, формирующему самостоятельный баланс (и, возможно, предоставляющему финансовую отчетность в государственные органы). Юридическому лицу обязательно назначается один «Набор книг» для регистрации первичных учетных операций.

Операционная единица (Operation Unit) — это тип организационной структуры предприятия, наделенный возможностью выполнения всех функций операционной деятельности, включая закупки, производство, маркетинг, продажи и расчеты с поставщиками и заказчиками. Это может быть подразделение (отдел, филиал) продаж, закупок и т. д. Операционная единица связана с Юридическим лицом и является его частью. На уровне операционных единиц осуществляется разделение данных модулей Дебиторы, Кредиторы, Управление денежными средствами, Управление продажами, Снабжение.

Операционная единица является также объектом, для которого выполняются настройки счетов для финансовых проводок, что позволяет получать финансовые отчеты по каждой операционной единице, определив ее как ЦФО.

Складская организация (Inventory Organization) — это тип организационной структуры компании, который может выполнять функции управления запасами на складах. Разделение данных по запасам также осуществляется на этом уровне. Сотрудники каждой организации работают с собственным набором складов и товарных позиций. Организация, обладающая признаком «складская», должна обязательно или подчиняться другой организации, являющейся операционной единицей, или самой являться таковой.

Организация персонала (Organization HR) — это тип организационной структуры, для которого осуществляется функция управления персоналом. Данный тип классификации обязателен для тех организационных единиц, где необходимо использовать список сотрудников при выполнении операций.

Организация активов (Asset Organization) — это тип организационной структуры, в котором ведется учет активов и выполнение операций по движению активов (приходование, переоценка, выбытие и амортизация).

Categories: Oracle e-Business Suite Tags: ,