diff --git a/db/P8PNL_SELECTLIST.sql b/db/P8PNL_SELECTLIST.sql new file mode 100644 index 0000000..4ac91f6 --- /dev/null +++ b/db/P8PNL_SELECTLIST.sql @@ -0,0 +1,22 @@ +/* + Парус 8 - Панели мониторинга + Список отмеченных записей +*/ +create table P8PNL_SELECTLIST +( + RN number(17) not null, -- Рег. номер записи + IDENT number(17) not null, -- Идентификатор процесса + AUTHID varchar2(30) not null, -- Пользователь + SESSION_ID varchar2(24) not null, -- Идентификатор сеанса + CONNECT_EXT varchar2(255) not null, -- Внешний идентификатор сеанса + COMPANY number(17) default null, -- Организация + DOCUMENT number(17) not null, -- Документ + UNITCODE varchar2(40) default null, -- Код раздела документа + ACTIONCODE varchar2(40) default null, -- Код действия документа + CRN number(17) default null, -- Каталог документа + DOCUMENT1 number(17) default null, -- Документ 1 + UNITCODE1 varchar2(40) default null, -- Код раздела документа 1 + ACTIONCODE1 varchar2(40) default null, -- Код действия документа 1 + constraint C_P8PNL_SELECTLIST_PK primary key(RN), + constraint C_P8PNL_SELECTLIST_UK unique(IDENT, DOCUMENT, UNITCODE, DOCUMENT1, UNITCODE1) +); diff --git a/db/PKG_P8PANELS.pck b/db/PKG_P8PANELS.pck index c8b388c..66fbd86 100644 --- a/db/PKG_P8PANELS.pck +++ b/db/PKG_P8PANELS.pck @@ -6,6 +6,18 @@ create or replace package PKG_P8PANELS as CIN in clob, -- Входные параметры COUT out clob -- Результат ); + + /* Инициализация буфера отмеченных записей для панели */ + procedure SELECTLIST_INIT + ( + NIDENT in number -- Идентификатор буфера отмеченных записей + ); + + /* Очистка буфера отмеченных записей для панели */ + procedure SELECTLIST_CLEAR + ( + NIDENT in number -- Идентификатор буфера отмеченных записей + ); end PKG_P8PANELS; / @@ -22,6 +34,28 @@ create or replace package body PKG_P8PANELS as /* Базовое исполнение действия */ PKG_P8PANELS_BASE.PROCESS(CIN => CIN, COUT => COUT); end PROCESS; + + /* Инициализация буфера отмеченных записей для панели */ + procedure SELECTLIST_INIT + ( + NIDENT in number -- Идентификатор буфера отмеченных записей + ) + is + begin + /* Базовое исполнение действия */ + PKG_P8PANELS_BASE.SELECTLIST_INIT(NIDENT => NIDENT); + end SELECTLIST_INIT; + + /* Очистка буфера отмеченных записей для панели */ + procedure SELECTLIST_CLEAR + ( + NIDENT in number -- Идентификатор буфера отмеченных записей + ) + is + begin + /* Базовое исполнение действия */ + PKG_P8PANELS_BASE.SELECTLIST_CLEAR(NIDENT => NIDENT); + end SELECTLIST_CLEAR; end PKG_P8PANELS; / diff --git a/db/PKG_P8PANELS_BASE.pck b/db/PKG_P8PANELS_BASE.pck index 2c621ca..6f151d5 100644 --- a/db/PKG_P8PANELS_BASE.pck +++ b/db/PKG_P8PANELS_BASE.pck @@ -21,6 +21,18 @@ create or replace package PKG_P8PANELS_BASE as CIN in clob, -- Входные параметры COUT out clob -- Результат ); + + /* Базовая инициализация буфера отмеченных записей для панели */ + procedure SELECTLIST_INIT + ( + NIDENT in number -- Идентификатор буфера отмеченных записей + ); + + /* Базовая очистка буфера отмеченных записей для панели */ + procedure SELECTLIST_CLEAR + ( + NIDENT in number -- Идентификатор буфера отмеченных записей + ); end PKG_P8PANELS_BASE; / @@ -812,6 +824,112 @@ create or replace package body PKG_P8PANELS_BASE as P_EXCEPTION(0, 'Действие "%s" не поддерживается.', SRQ_ACTION); end case; end PROCESS; + + /* Базовое добавление в буфер отмеченных записей для панели */ + procedure SELECTLIST_INSERT + ( + NIDENT in number, -- Идентификатор процесса + SAUTHID in varchar2, -- Пользователь + SSESSION_ID in varchar2, -- Идентификатор сеанса + SCONNECT_EXT in varchar2, -- Внешний идентификатор сеанса + NCOMPANY in number := null, -- Организация + NDOCUMENT in number, -- Документ + SUNITCODE in varchar2 := null, -- Код раздела документа + SACTIONCODE in varchar2 := null, -- Код действия документа + NCRN in number := null, -- Каталог документа + NDOCUMENT1 in number := null, -- Документ 1 + SUNITCODE1 in varchar2 := null, -- Код раздела документа 1 + SACTIONCODE1 in varchar2 := null, -- Код действия документа 1 + NRN out number -- Рег. номер добавленной записи + ) + is + begin + /* Формируем рег. номер */ + NRN := GEN_ID(); + /* Добвляем запись */ + insert into P8PNL_SELECTLIST + (RN, + IDENT, + authid, + SESSION_ID, + CONNECT_EXT, + COMPANY, + DOCUMENT, + UNITCODE, + ACTIONCODE, + CRN, + DOCUMENT1, + UNITCODE1, + ACTIONCODE1) + values + (NRN, + NIDENT, + SAUTHID, + SSESSION_ID, + SCONNECT_EXT, + NCOMPANY, + NDOCUMENT, + SUNITCODE, + SACTIONCODE, + NCRN, + NDOCUMENT1, + SUNITCODE1, + SACTIONCODE1); + end SELECTLIST_INSERT; + + /* Удаление записи буфера отмеченных записей для панели */ + procedure SELECTLIST_DELETE + ( + NRN in number -- Рег. номер удаляемой записи + ) + is + begin + delete from P8PNL_SELECTLIST T where T.RN = NRN; + end SELECTLIST_DELETE; + + /* Базовая инициализация буфера отмеченных записей для панели */ + procedure SELECTLIST_INIT + ( + NIDENT in number -- Идентификатор буфера отмеченных записей + ) + is + NRN PKG_STD.TREF; -- Рег. номер добавленной записи буфера панелей + begin + /* Очищаем буфер панелей */ + SELECTLIST_CLEAR(NIDENT => NIDENT); + /* Обходим системный буфер отмеченных записей */ + for C in (select T.* from SELECTLIST T where T.IDENT = NIDENT) + loop + /* Копируем запись */ + SELECTLIST_INSERT(NIDENT => C.IDENT, + SAUTHID => C.AUTHID, + SSESSION_ID => C.SESSION_ID, + SCONNECT_EXT => C.CONNECT_EXT, + NCOMPANY => C.COMPANY, + NDOCUMENT => C.DOCUMENT, + SUNITCODE => C.UNITCODE, + SACTIONCODE => C.ACTIONCODE, + NCRN => C.CRN, + NDOCUMENT1 => C.DOCUMENT1, + SUNITCODE1 => C.UNITCODE1, + SACTIONCODE1 => C.ACTIONCODE1, + NRN => NRN); + end loop; + end SELECTLIST_INIT; + + /* Базовая очистка буфера отмеченных записей для панели */ + procedure SELECTLIST_CLEAR + ( + NIDENT in number -- Идентификатор буфера отмеченных записей + ) + is + begin + /* Обходим буфер панелей */ + for C in (select T.RN from P8PNL_SELECTLIST T where T.IDENT = NIDENT) + loop + SELECTLIST_DELETE(NRN => C.RN); + end loop; + end SELECTLIST_CLEAR; end PKG_P8PANELS_BASE; /