From 75f05bfaaeae0c0537ec684199361613d48412b9 Mon Sep 17 00:00:00 2001 From: Mikhail Chechnev Date: Sun, 31 Mar 2024 12:47:26 +0300 Subject: [PATCH] =?UTF-8?q?=D0=91=D0=94:=20=D0=9F=D0=BE=D0=B4=D0=B4=D0=B5?= =?UTF-8?q?=D1=80=D0=B6=D0=BA=D0=B0=20=D0=B2=D1=8B=D0=B7=D0=BE=D0=B2=D0=B0?= =?UTF-8?q?=20=D0=BF=D0=B0=D0=BD=D0=B5=D0=BB=D0=B5=D0=B9=20=D0=B8=D0=B7=20?= =?UTF-8?q?=D1=80=D0=B0=D0=B7=D0=B4=D0=B5=D0=BB=D0=BE=D0=B2=20("=D0=B2?= =?UTF-8?q?=D1=81=D1=82=D1=80=D0=BE=D0=B5=D0=BD=D0=BD=D0=BE=D0=B5=20"?= =?UTF-8?q?=D0=B4=D0=B5=D0=B9=D1=81=D1=82=D0=B2=D0=B8=D0=B5=20P8PANELS=5FO?= =?UTF-8?q?PEN)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- db/P8PNL_SELECTLIST.sql | 22 ++++++++ db/PKG_P8PANELS.pck | 34 +++++++++++ db/PKG_P8PANELS_BASE.pck | 118 +++++++++++++++++++++++++++++++++++++++ 3 files changed, 174 insertions(+) create mode 100644 db/P8PNL_SELECTLIST.sql 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; /