diff --git a/db/UDO_P_P8PANELS_AGNLIST.prc b/db/UDO_P_P8PANELS_AGNLIST.prc
deleted file mode 100644
index 59e70cb..0000000
--- a/db/UDO_P_P8PANELS_AGNLIST.prc
+++ /dev/null
@@ -1,143 +0,0 @@
-create or replace procedure UDO_P_P8PANELS_AGNLIST
-(
- NPAGE_NUMBER in number, -- Номер страницы (игнорируется при NPAGE_SIZE=0)
- NPAGE_SIZE in number, -- Количество записей на странице (0 - все)
- CFILTERS in clob, -- Фильтры
- CORDERS in clob, -- Сортировки
- NINCLUDE_DEF in number, -- Признак включения описания колонок таблицы в ответ
- COUT out clob -- Сериализованная таблица данных
-)
-is
- NCOMPANY PKG_STD.TREF := GET_SESSION_COMPANY(); -- Организация сеанса
- NIDENT PKG_STD.TREF := GEN_IDENT(); -- Идентификатор отбора
- RF PKG_P8PANELS_VISUAL.TFILTERS; -- Фильтры
- RO PKG_P8PANELS_VISUAL.TORDERS; -- Сортировки
- RDG PKG_P8PANELS_VISUAL.TDATA_GRID; -- Описание таблицы
- RDG_ROW PKG_P8PANELS_VISUAL.TROW; -- Строка таблицы
- RCOL_VALS PKG_P8PANELS_VISUAL.TCOL_VALS; -- Предопределённые значения столбцов
- NROW_FROM PKG_STD.TREF; -- Номер строки с
- NROW_TO PKG_STD.TREF; -- Номер строки по
- CSQL clob; -- Буфер для запроса
- ICURSOR integer; -- Курсор для исполнения запроса
- RAGENT AGNLIST%rowtype; -- Буфер для записи курсора
-begin
- /* Читаем фильтры */
- RF := PKG_P8PANELS_VISUAL.TFILTERS_FROM_XML(CFILTERS => CFILTERS);
- /* Читем сортировки */
- RO := PKG_P8PANELS_VISUAL.TORDERS_FROM_XML(CORDERS => CORDERS);
- /* Преобразуем номер и размер страницы в номер строк с и по */
- PKG_P8PANELS_VISUAL.UTL_ROWS_LIMITS_CALC(NPAGE_NUMBER => NPAGE_NUMBER,
- NPAGE_SIZE => NPAGE_SIZE,
- NROW_FROM => NROW_FROM,
- NROW_TO => NROW_TO);
- /* Инициализируем таблицу данных */
- RDG := PKG_P8PANELS_VISUAL.TDATA_GRID_MAKE();
- /* Добавляем в таблицу описание колонок */
- PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG,
- SNAME => 'RN',
- SCAPTION => 'Рег. номер',
- SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB,
- BVISIBLE => false);
- PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG,
- SNAME => 'AGNABBR',
- SCAPTION => 'Мнемокод',
- SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR,
- SCOND_FROM => 'AgentAbbr',
- BORDER => true,
- BFILTER => true);
- PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG,
- SNAME => 'AGNNAME',
- SCAPTION => 'Наименование',
- SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR,
- SCOND_FROM => 'AgentName',
- BORDER => true,
- BFILTER => true);
- PKG_P8PANELS_VISUAL.TCOL_VALS_ADD(RCOL_VALS => RCOL_VALS, NVALUE => 0, BCLEAR => true);
- PKG_P8PANELS_VISUAL.TCOL_VALS_ADD(RCOL_VALS => RCOL_VALS, NVALUE => 1);
- PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG,
- SNAME => 'AGNTYPE',
- SCAPTION => 'Тип',
- SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB,
- SCOND_FROM => 'AgentType',
- BORDER => true,
- BFILTER => true,
- RCOL_VALS => RCOL_VALS);
- PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG,
- SNAME => 'AGNBURN',
- SCAPTION => 'Дата рождения',
- SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_DATE,
- SCOND_FROM => 'AgentBornFrom',
- SCOND_TO => 'AgentBornTo',
- BORDER => true,
- BFILTER => true);
- /* Обходим данные */
- begin
- /* Собираем запрос */
- CSQL := 'select *
- from (select D.*,
- ROWNUM NROW
- from (select AG.RN,
- AG.AGNABBR,
- AG.AGNNAME,
- AG.AGNTYPE,
- AG.AGNBURN
- from AGNLIST AG
- where AG.RN in (select ID from COND_BROKER_IDSMART where IDENT = :NIDENT) %ORDER_BY%) D) F
- where F.NROW between :NROW_FROM and :NROW_TO';
- /* Учтём сортировки */
- PKG_P8PANELS_VISUAL.TORDERS_SET_QUERY(RDATA_GRID => RDG, RORDERS => RO, SPATTERN => '%ORDER_BY%', CSQL => CSQL);
- /* Учтём фильтры */
- PKG_P8PANELS_VISUAL.TFILTERS_SET_QUERY(NIDENT => NIDENT,
- NCOMPANY => NCOMPANY,
- SUNIT => 'AGNLIST',
- SPROCEDURE => 'P_AGNLIST_BASE_COND',
- RDATA_GRID => RDG,
- RFILTERS => RF);
- /* Разбираем его */
- ICURSOR := PKG_SQL_DML.OPEN_CURSOR(SWHAT => 'SELECT');
- PKG_SQL_DML.PARSE(ICURSOR => ICURSOR, SQUERY => CSQL);
- /* Делаем подстановку параметров */
- PKG_SQL_DML.BIND_VARIABLE_NUM(ICURSOR => ICURSOR, SNAME => 'NIDENT', NVALUE => NIDENT);
- PKG_SQL_DML.BIND_VARIABLE_NUM(ICURSOR => ICURSOR, SNAME => 'NROW_FROM', NVALUE => NROW_FROM);
- PKG_SQL_DML.BIND_VARIABLE_NUM(ICURSOR => ICURSOR, SNAME => 'NROW_TO', NVALUE => NROW_TO);
- /* Описываем структуру записи курсора */
- PKG_SQL_DML.DEFINE_COLUMN_NUM(ICURSOR => ICURSOR, IPOSITION => 1);
- PKG_SQL_DML.DEFINE_COLUMN_STR(ICURSOR => ICURSOR, IPOSITION => 2);
- PKG_SQL_DML.DEFINE_COLUMN_STR(ICURSOR => ICURSOR, IPOSITION => 3);
- PKG_SQL_DML.DEFINE_COLUMN_NUM(ICURSOR => ICURSOR, IPOSITION => 4);
- PKG_SQL_DML.DEFINE_COLUMN_DATE(ICURSOR => ICURSOR, IPOSITION => 5);
- /* Делаем выборку */
- if (PKG_SQL_DML.EXECUTE(ICURSOR => ICURSOR) = 0) then
- null;
- end if;
- /* Обходим выбранные записи */
- while (PKG_SQL_DML.FETCH_ROWS(ICURSOR => ICURSOR) > 0)
- loop
- /* Извлекаем очередную запись */
- PKG_SQL_DML.COLUMN_VALUE_NUM(ICURSOR => ICURSOR, IPOSITION => 1, NVALUE => RAGENT.RN);
- PKG_SQL_DML.COLUMN_VALUE_STR(ICURSOR => ICURSOR, IPOSITION => 2, SVALUE => RAGENT.AGNABBR);
- PKG_SQL_DML.COLUMN_VALUE_STR(ICURSOR => ICURSOR, IPOSITION => 3, SVALUE => RAGENT.AGNNAME);
- PKG_SQL_DML.COLUMN_VALUE_NUM(ICURSOR => ICURSOR, IPOSITION => 4, NVALUE => RAGENT.AGNTYPE);
- PKG_SQL_DML.COLUMN_VALUE_DATE(ICURSOR => ICURSOR, IPOSITION => 5, DVALUE => RAGENT.AGNBURN);
- /* Инициализируем строку таблицы данных */
- RDG_ROW := PKG_P8PANELS_VISUAL.TROW_MAKE();
- /* Добавляем колонки с данными */
- PKG_P8PANELS_VISUAL.TROW_ADD_COL(RROW => RDG_ROW, SNAME => 'RN', NVALUE => RAGENT.RN);
- PKG_P8PANELS_VISUAL.TROW_ADD_COL(RROW => RDG_ROW, SNAME => 'AGNABBR', SVALUE => RAGENT.AGNABBR);
- PKG_P8PANELS_VISUAL.TROW_ADD_COL(RROW => RDG_ROW, SNAME => 'AGNNAME', SVALUE => RAGENT.AGNNAME);
- PKG_P8PANELS_VISUAL.TROW_ADD_COL(RROW => RDG_ROW, SNAME => 'AGNTYPE', NVALUE => RAGENT.AGNTYPE);
- PKG_P8PANELS_VISUAL.TROW_ADD_COL(RROW => RDG_ROW, SNAME => 'AGNBURN', DVALUE => RAGENT.AGNBURN);
- /* Добавляем строку в таблицу */
- PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_ROW(RDATA_GRID => RDG, RROW => RDG_ROW);
- end loop;
- /* Освобождаем курсор */
- PKG_SQL_DML.CLOSE_CURSOR(ICURSOR => ICURSOR);
- exception
- when others then
- PKG_SQL_DML.CLOSE_CURSOR(ICURSOR => ICURSOR);
- raise;
- end;
- /* Сериализуем описание */
- COUT := PKG_P8PANELS_VISUAL.TDATA_GRID_TO_XML(RDATA_GRID => RDG, NINCLUDE_DEF => NINCLUDE_DEF);
-end;
-/
diff --git a/db/UDO_P_P8PANELS_TEST.prc b/db/UDO_P_P8PANELS_TEST.prc
deleted file mode 100644
index b9e5003..0000000
--- a/db/UDO_P_P8PANELS_TEST.prc
+++ /dev/null
@@ -1,23 +0,0 @@
-create or replace procedure UDO_P_P8PANELS_TEST
-(
- NRN in number,
- DDATE in date,
- CFILTERS in clob,
- CORDERS in clob,
- NRES out number,
- SRES out varchar2,
- COUT out clob,
- DD out date
-)
-is
-begin
- NRES:=NRN*2;
- --DBMS_LOCK.SLEEP(3);
- if (DDATE is not null) then p_exception(0, to_char(ddate, 'dd.mm.yyyy hh24:mi:ss')); end if;
- SRES:='Очень хорошая погода';
- COUT:='Просто текст';
- --COUT:='333444123dfgsfg';
- --COUT:='333444qqq555qsvfvr432123dfgsfg';
- DD := DDATE;
-end;
-/
diff --git a/db/grants.sql b/db/grants.sql
new file mode 100644
index 0000000..e96444d
--- /dev/null
+++ b/db/grants.sql
@@ -0,0 +1,2 @@
+grant execute on PKG_P8PANELS to public;
+grant execute on PKG_P8PANELS_PROJECTS to public;