From b617a27c48f40f40db9ae072ec9f5f2f746f3349 Mon Sep 17 00:00:00 2001 From: Dollerino Date: Tue, 3 Dec 2024 15:26:51 +0300 Subject: [PATCH] =?UTF-8?q?=D0=A6=D0=98=D0=A2=D0=9A-800=20-=20=D0=98=D0=B7?= =?UTF-8?q?=D0=BC=D0=B5=D0=BD=D0=B5=D0=BD=D0=B8=D0=B5=20=D0=BF=D1=80=D0=BE?= =?UTF-8?q?=D0=B3=D1=80=D0=B0=D0=BC=D0=BC=D0=BD=D0=BE=D0=B3=D0=BE=20=D0=B8?= =?UTF-8?q?=D0=BD=D1=82=D0=B5=D1=80=D1=84=D0=B5=D0=B9=D1=81=D0=B0=20P8PDat?= =?UTF-8?q?aGrid.=20P8PDataGrid=20=D0=B8=20P8PGantt=20=D0=BF=D1=80=D0=B8?= =?UTF-8?q?=D0=B2=D0=B5=D0=B4=D0=B5=D0=BD=D1=8B=20=D0=BA=20=D0=B5=D0=B4?= =?UTF-8?q?=D0=B8=D0=BD=D0=BE=D0=BC=D1=83=20=D1=84=D0=BE=D1=80=D0=BC=D0=B0?= =?UTF-8?q?=D1=82=D1=83=20=D0=B4=D0=B0=D0=BD=D0=BD=D1=8B=D1=85=20=D1=81=20?= =?UTF-8?q?=D1=81=D0=B5=D1=80=D0=B2=D0=B5=D1=80=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 308 +- app/core/utils.js | 56 +- app/panels/eqs_prfrm/eqs_prfrm.js | 13 +- app/panels/mech_rec_assembly_mon/hooks.js | 7 +- app/panels/mech_rec_cost_jobs_manage/hooks.js | 14 +- .../datagrids/backend_dg.js | 34 +- .../mech_rec_cost_prod_plans.js | 19 +- app/panels/mech_rec_dept_cost_jobs/hooks.js | 16 +- .../mech_rec_dept_cost_prod_plans/hooks.js | 30 +- app/panels/prj_fin/projects.js | 7 +- app/panels/prj_fin/stage_arts.js | 5 +- app/panels/prj_fin/stage_contracts.js | 7 +- app/panels/prj_fin/stages.js | 7 +- app/panels/prj_graph/prj_graph.js | 9 +- app/panels/prj_jobs/lab_fact_rpt_dtl.js | 7 +- app/panels/prj_jobs/lab_plan_fot_dtl.js | 7 +- app/panels/prj_jobs/lab_plan_jobs_dtl.js | 7 +- app/panels/prj_jobs/prj_jobs.js | 17 +- app/panels/prj_jobs/res_mon.js | 7 +- app/panels/rrp_conf_editor/hooks.js | 9 +- app/panels/samples/cyclogram.js | 3 +- app/panels/samples/data_grid.js | 44 +- app/panels/samples/gantt.js | 35 +- db/PKG_P8PANELS_EQUIPSRV.pck | 309 +- db/PKG_P8PANELS_MECHREC.pck | 2533 +++++++------- db/PKG_P8PANELS_PROJECTS.pck | 2963 +++++++++-------- db/PKG_P8PANELS_RRPCONFED.pck | 118 +- db/PKG_P8PANELS_SAMPLES.pck | 190 +- db/PKG_P8PANELS_VISUAL.pck | 777 +++-- 29 files changed, 3873 insertions(+), 3685 deletions(-) diff --git a/README.md b/README.md index bba4835..2163ed8 100644 --- a/README.md +++ b/README.md @@ -1341,18 +1341,18 @@ const MyPanel = () => { Такие свойства как `columnsDef`, `groups`, `rows` компонента `P8PDataGrid` требуют от разработчика передачи данных в определённом формате. Это не обязательно должна быть информация из БД Системы, можно, например, просто объявить переменные в коде панели, задать им соответствующие значения и передать в компонент. Но изначально, таблица данных задумывалась для отображения сведений, полученных их учётных регистров Системы. Такие сведения, как правило, собираются хранимым объектом БД, исполняемым из панели посредством вызова `executeStored`. С целью снижения трудозатрат на приведение собранных хранимым объектом данных к форматам, потребляемым `P8PDataGrid`, реализован специальный API на стороне сервера БД. Для таблицы данных это (см. детальные описания программных интерфейсов в пакете `PKG_P8PANELS_VISUAL`): -`PKG_P8PANELS_VISUAL.TDATA_GRID_MAKE` - функция, инициализация таблицы данных, возвращает объект для хранения описания таблицы\ -`PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF` - процедура, добавление описания колонки в таблицу, принимает на вход объект с описанием таблицы и параметры, описывающие добавляемую колонку (её имя, заголовок, тип данных, видимость, доступность отбора и сортировки, набор предопределённых значений и т.д.)\ -`PKG_P8PANELS_VISUAL.TCOL_VALS_ADD` - процедура, служит для формирования коллекции предопределённых значений колонки таблицы (подготовленная коллекция передаётся в `RCOL_VALS` вызова `TDATA_GRID_ADD_COL_DEF`, если необходимо)\ -`PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_GROUP` - процедура, служит для добавления описания группы в таблицу данных, на вход принимает объект для хранения описания таблицы и параметры добавляемой группы\ -`PKG_P8PANELS_VISUAL.TROW_ADD_COL` - процедура, добавляет значение колонки к строке таблицы (значение указывается явно в `[S|N|D]VALUE`)\ -`PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COL[S|N|D]` - процедура, добавляет значение колонки к строке таблицы (значение указывается через ссылку на номер колонки `NPOSITION` в курсоре `ICURSOR` динамического SQL)\ -`PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_ROW` - процедура, добавляет сформированную строку со значениями колонок в таблицу данных, на вход принимает объект для хранения описания таблицы и описание строки, сформированное вызовами `TROW_ADD_COL` и `TROW_ADD_CUR_COL[S|N|D]`, а так же год группы, в которую должна быть включена строка\ -`PKG_P8PANELS_VISUAL.TDATA_GRID_TO_XML` - функция, производит сериализацию объекта, описывающего таблицу данных, в специальный XML-формат, корректно интерпретируемый клиентским компонентом `P8PDataGrid` при передаче в WEB-приложение\ -`PKG_P8PANELS_VISUAL.TORDERS_FROM_XML` - функция, служит для десериализации (как правило, полученного от клиентского приложения) состояния сортировок в коллекцию формата `TORDERS`, на вход принимает `CLOB` с сериализованным состоянием сортировок таблицы в виде `BASE64(ИМЯASC|DESC...)` (клиентское приложение должно обеспечить передачу состояния сортировок в этом формате, см. пример ниже)\ -`PKG_P8PANELS_VISUAL.TORDERS_SET_QUERY` - процедура, вспомогательная утилита, производит в тексте SQL-запроса, поданного на вход, замену указанного шаблона на конструкцию `order by`, сформированную с учётом переданной коллекции `RORDERS`\ -`PKG_P8PANELS_VISUAL.TFILTERS_FROM_XML` - функция, служит для десериализации (как правило, полученного от клиентского приложения) состояния фильтров в коллекцию формата `TFILTERS`, на вход принимает `CLOB` с сериализованным состоянием фильтров таблицы в виде `BASE64(ИМЯЗНАЧЕНИЕЗНАЧЕНИЕ...)` (клиентское приложение должно обеспечить передачу состояния фильтров в этом формате, см. пример ниже)\ -`PKG_P8PANELS_VISUAL.TFILTERS_SET_QUERY` - процедура, вспомогательная утилита, производит вызов указанной серверной процедуры отбора с учётом переданных переменных окружения и значений в `RFILTERS`\ +`PKG_P8PANELS_VISUAL.TDG_MAKE` - функция, инициализация таблицы данных, возвращает объект для хранения описания таблицы\ +`PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF` - процедура, добавление описания колонки в таблицу, принимает на вход объект с описанием таблицы и параметры, описывающие добавляемую колонку (её имя, заголовок, тип данных, видимость, доступность отбора и сортировки, набор предопределённых значений и т.д.)\ +`PKG_P8PANELS_VISUAL.TDG_COL_VALS_ADD` - процедура, служит для формирования коллекции предопределённых значений колонки таблицы (подготовленная коллекция передаётся в `RCOL_VALS` вызова `TDG_ADD_COL_DEF`, если необходимо)\ +`PKG_P8PANELS_VISUAL.TDG_ADD_GROUP` - процедура, служит для добавления описания группы в таблицу данных, на вход принимает объект для хранения описания таблицы и параметры добавляемой группы\ +`PKG_P8PANELS_VISUAL.TDG_ROW_ADD_COL` - процедура, добавляет значение колонки к строке таблицы (значение указывается явно в `[S|N|D]VALUE`)\ +`PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COL[S|N|D]` - процедура, добавляет значение колонки к строке таблицы (значение указывается через ссылку на номер колонки `NPOSITION` в курсоре `ICURSOR` динамического SQL)\ +`PKG_P8PANELS_VISUAL.TDG_ADD_ROW` - процедура, добавляет сформированную строку со значениями колонок в таблицу данных, на вход принимает объект для хранения описания таблицы и описание строки, сформированное вызовами `TDG_ROW_ADD_COL` и `TDG_ROW_ADD_CUR_COL[S|N|D]`, а так же год группы, в которую должна быть включена строка\ +`PKG_P8PANELS_VISUAL.TDG_TO_XML` - функция, производит сериализацию объекта, описывающего таблицу данных, в специальный XML-формат, корректно интерпретируемый клиентским компонентом `P8PDataGrid` при передаче в WEB-приложение\ +`PKG_P8PANELS_VISUAL.TDG_ORDERS_FROM_XML` - функция, служит для десериализации (как правило, полученного от клиентского приложения) состояния сортировок в коллекцию формата `TORDERS`, на вход принимает `CLOB` с сериализованным состоянием сортировок таблицы в виде `BASE64(ИМЯASC|DESC...)` (клиентское приложение должно обеспечить передачу состояния сортировок в этом формате, см. пример ниже)\ +`PKG_P8PANELS_VISUAL.TDG_ORDERS_SET_QUERY` - процедура, вспомогательная утилита, производит в тексте SQL-запроса, поданного на вход, замену указанного шаблона на конструкцию `order by`, сформированную с учётом переданной коллекции `RORDERS`\ +`PKG_P8PANELS_VISUAL.TDG_FILTERS_FROM_XML` - функция, служит для десериализации (как правило, полученного от клиентского приложения) состояния фильтров в коллекцию формата `TFILTERS`, на вход принимает `CLOB` с сериализованным состоянием фильтров таблицы в виде `BASE64(ИМЯЗНАЧЕНИЕЗНАЧЕНИЕ...)` (клиентское приложение должно обеспечить передачу состояния фильтров в этом формате, см. пример ниже)\ +`PKG_P8PANELS_VISUAL.TDG_FILTERS_SET_QUERY` - процедура, вспомогательная утилита, производит вызов указанной серверной процедуры отбора с учётом переданных переменных окружения и значений в `RFILTERS`\ `PKG_P8PANELS_VISUAL.UTL_ROWS_LIMITS_CALC` - процедура, вспомогательная утилита, служит для конвертации номера страницы данных и размера страницы данных в границы диапазона строк выборки (как правило, клиентскому приложению удобнее прислать на сервер текущий номер страницы и её размер, в то время к в запросах, для выборки, удобнее применять границы диапазонов строк) **Пример** @@ -1372,11 +1372,11 @@ const MyPanel = () => { 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; -- Описание таблицы - RAGN_TYPES PKG_P8PANELS_VISUAL.TCOL_VALS; -- Предопределенные значения "Типа контрагентов" - RDG_ROW PKG_P8PANELS_VISUAL.TROW; -- Строка таблицы + RF PKG_P8PANELS_VISUAL.TDG_FILTERS; -- Фильтры + RO PKG_P8PANELS_VISUAL.TDG_ORDERS; -- Сортировки + RDG PKG_P8PANELS_VISUAL.TDG; -- Описание таблицы + RAGN_TYPES PKG_P8PANELS_VISUAL.TDG_COL_VALS; -- Предопределенные значения "Типа контрагентов" + RDG_ROW PKG_P8PANELS_VISUAL.TDG_ROW; -- Строка таблицы NROW_FROM PKG_STD.TREF; -- Номер строки с NROW_TO PKG_STD.TREF; -- Номер строки по CSQL clob; -- Буфер для запроса @@ -1387,71 +1387,71 @@ const MyPanel = () => { NAGNTYPE PKG_STD.TREF; -- Буфер для "Типа" begin /* Читаем фильтры */ - RF := PKG_P8PANELS_VISUAL.TFILTERS_FROM_XML(CFILTERS => CFILTERS); + RF := PKG_P8PANELS_VISUAL.TDG_FILTERS_FROM_XML(CFILTERS => CFILTERS); /* Читем сортировки */ - RO := PKG_P8PANELS_VISUAL.TORDERS_FROM_XML(CORDERS => CORDERS); + RO := PKG_P8PANELS_VISUAL.TDG_ORDERS_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(BFIXED_HEADER => true, NFIXED_COLUMNS => 2); + RDG := PKG_P8PANELS_VISUAL.TDG_MAKE(BFIXED_HEADER => true, NFIXED_COLUMNS => 2); /* Описываем колонки таблицы данных */ - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'SAGNABBR', - SCAPTION => 'Мнемокод', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, - SCOND_FROM => 'AgentAbbr', - BVISIBLE => true, - BORDER => true, - BFILTER => true, - NWIDTH => 150); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'SAGNINFO', - SCAPTION => 'Сведения', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, - BVISIBLE => true, - BORDER => false, - BFILTER => false, - BEXPANDABLE => true, - NWIDTH => 300); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'SAGNNAME', - SCAPTION => 'Наименование', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, - SCOND_FROM => 'AgentName', - BVISIBLE => true, - BORDER => true, - BFILTER => true, - SPARENT => 'SAGNINFO', - NWIDTH => 200); - PKG_P8PANELS_VISUAL.TCOL_VALS_ADD(RCOL_VALS => RAGN_TYPES, NVALUE => 0); - PKG_P8PANELS_VISUAL.TCOL_VALS_ADD(RCOL_VALS => RAGN_TYPES, NVALUE => 1); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'NAGNTYPE', - SCAPTION => 'Тип', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, - SCOND_FROM => 'AgentType', - BVISIBLE => true, - BORDER => true, - BFILTER => true, - SPARENT => 'SAGNINFO', - NWIDTH => 100, - RCOL_VALS => RAGN_TYPES, - SHINT => 'В Системе бывают контрагенты двух типов:
' || - 'Юридическое лицо - организация, которая имеет в собственности, хозяйственном ведении ' || - 'или оперативном управлении обособленное имущество, отвечает по своим обязательствам этим имуществом, может от своего ' || - 'имени приобретать и осуществлять имущественные и личные неимущественные права, отвечать по своим обязанностям.
' || - 'Физическое лицо - субъект правовых отношений, представляющий собой одного человека.'); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'SFULLNAME', - SCAPTION => 'Полное наименование', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'SAGNIDNUMB', - SCAPTION => 'ИНН', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'SAGNABBR', + SCAPTION => 'Мнемокод', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, + SCOND_FROM => 'AgentAbbr', + BVISIBLE => true, + BORDER => true, + BFILTER => true, + NWIDTH => 150); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'SAGNINFO', + SCAPTION => 'Сведения', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, + BVISIBLE => true, + BORDER => false, + BFILTER => false, + BEXPANDABLE => true, + NWIDTH => 300); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'SAGNNAME', + SCAPTION => 'Наименование', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, + SCOND_FROM => 'AgentName', + BVISIBLE => true, + BORDER => true, + BFILTER => true, + SPARENT => 'SAGNINFO', + NWIDTH => 200); + PKG_P8PANELS_VISUAL.TDG_COL_VALS_ADD(RCOL_VALS => RAGN_TYPES, NVALUE => 0); + PKG_P8PANELS_VISUAL.TDG_COL_VALS_ADD(RCOL_VALS => RAGN_TYPES, NVALUE => 1); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'NAGNTYPE', + SCAPTION => 'Тип', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, + SCOND_FROM => 'AgentType', + BVISIBLE => true, + BORDER => true, + BFILTER => true, + SPARENT => 'SAGNINFO', + NWIDTH => 100, + RCOL_VALS => RAGN_TYPES, + SHINT => 'В Системе бывают контрагенты двух типов:
' || + 'Юридическое лицо - организация, которая имеет в собственности, хозяйственном ведении ' || + 'или оперативном управлении обособленное имущество, отвечает по своим обязательствам этим имуществом, может от своего ' || + 'имени приобретать и осуществлять имущественные и личные неимущественные права, отвечать по своим обязанностям.
' || + 'Физическое лицо - субъект правовых отношений, представляющий собой одного человека.'); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'SFULLNAME', + SCAPTION => 'Полное наименование', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'SAGNIDNUMB', + SCAPTION => 'ИНН', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR); /* Обходим данные */ begin /* Добавляем подсказку совместимости */ @@ -1477,14 +1477,17 @@ const MyPanel = () => { PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' and AG.RN in (select ID from COND_BROKER_IDSMART where IDENT = :NIDENT) %ORDER_BY%) D) F'); PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' 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.TDG_ORDERS_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); + PKG_P8PANELS_VISUAL.TDG_FILTERS_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); @@ -1512,29 +1515,38 @@ const MyPanel = () => { if (NAGNTYPE = 0) then SGROUP := 'JUR'; SAGNINFO := SAGNNAME || ', ЮЛ'; - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_GROUP(RDATA_GRID => RDG, - SNAME => SGROUP, - SCAPTION => 'Юридические лица', - BEXPANDABLE => true, - BEXPANDED => false); + PKG_P8PANELS_VISUAL.TDG_ADD_GROUP(RDATA_GRID => RDG, + SNAME => SGROUP, + SCAPTION => 'Юридические лица', + BEXPANDABLE => true, + BEXPANDED => false); else SGROUP := 'PERS'; SAGNINFO := SAGNNAME || ', ФЛ'; - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_GROUP(RDATA_GRID => RDG, - SNAME => SGROUP, - SCAPTION => 'Физические лица', - BEXPANDABLE => true, - BEXPANDED => false); + PKG_P8PANELS_VISUAL.TDG_ADD_GROUP(RDATA_GRID => RDG, + SNAME => SGROUP, + SCAPTION => 'Физические лица', + BEXPANDABLE => true, + BEXPANDED => false); end if; - RDG_ROW := PKG_P8PANELS_VISUAL.TROW_MAKE(SGROUP => SGROUP); - PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLS(RROW => RDG_ROW, SNAME => 'SAGNABBR', ICURSOR => ICURSOR, NPOSITION => 1); - PKG_P8PANELS_VISUAL.TROW_ADD_COL(RROW => RDG_ROW, SNAME => 'SAGNINFO', SVALUE => SAGNINFO); - PKG_P8PANELS_VISUAL.TROW_ADD_COL(RROW => RDG_ROW, SNAME => 'SAGNNAME', SVALUE => SAGNNAME); - PKG_P8PANELS_VISUAL.TROW_ADD_COL(RROW => RDG_ROW, SNAME => 'NAGNTYPE', NVALUE => NAGNTYPE); - PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLS(RROW => RDG_ROW, SNAME => 'SFULLNAME', ICURSOR => ICURSOR, NPOSITION => 4); - PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLS(RROW => RDG_ROW, SNAME => 'SAGNIDNUMB', ICURSOR => ICURSOR, NPOSITION => 5); + RDG_ROW := PKG_P8PANELS_VISUAL.TDG_ROW_MAKE(SGROUP => SGROUP); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLS(RROW => RDG_ROW, + SNAME => 'SAGNABBR', + ICURSOR => ICURSOR, + NPOSITION => 1); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_COL(RROW => RDG_ROW, SNAME => 'SAGNINFO', SVALUE => SAGNINFO); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_COL(RROW => RDG_ROW, SNAME => 'SAGNNAME', SVALUE => SAGNNAME); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_COL(RROW => RDG_ROW, SNAME => 'NAGNTYPE', NVALUE => NAGNTYPE); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLS(RROW => RDG_ROW, + SNAME => 'SFULLNAME', + ICURSOR => ICURSOR, + NPOSITION => 4); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLS(RROW => RDG_ROW, + SNAME => 'SAGNIDNUMB', + ICURSOR => ICURSOR, + NPOSITION => 5); /* Добавляем строку в таблицу */ - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_ROW(RDATA_GRID => RDG, RROW => RDG_ROW); + PKG_P8PANELS_VISUAL.TDG_ADD_ROW(RDATA_GRID => RDG, RROW => RDG_ROW); end loop; /* Освобождаем курсор */ PKG_SQL_DML.CLOSE_CURSOR(ICURSOR => ICURSOR); @@ -1544,7 +1556,7 @@ const MyPanel = () => { raise; end; /* Сериализуем описание */ - COUT := PKG_P8PANELS_VISUAL.TDATA_GRID_TO_XML(RDATA_GRID => RDG, NINCLUDE_DEF => NINCLUDE_DEF); + COUT := PKG_P8PANELS_VISUAL.TDG_TO_XML(RDATA_GRID => RDG, NINCLUDE_DEF => NINCLUDE_DEF); end DATA_GRID; ``` @@ -1617,14 +1629,14 @@ export const groupCellRender = () => ({ cellStyle: { padding: "2px" } }); //Пример: Таблица данных "P8PDataGrid" const DataGrid = ({ title }) => { //Собственное состояние - таблица данных - const [dataGrid, setdataGrid] = useState({ + const [dataGrid, setDataGrid] = useState({ dataLoaded: false, columnsDef: [], filters: null, orders: null, groups: [], rows: [], - reload: true, + reloading: true, pageNumber: 1, morePages: true, fixedHeader: false, @@ -1639,7 +1651,7 @@ const DataGrid = ({ title }) => { //Загрузка данных таблицы с сервера const loadData = useCallback(async () => { - if (dataGrid.reload) { + if (dataGrid.reloading) { const data = await executeStored({ stored: "PKG_P8PANELS_SAMPLES.DATA_GRID", args: { @@ -1651,32 +1663,31 @@ const DataGrid = ({ title }) => { }, respArg: "COUT" }); - setdataGrid(pv => ({ + setDataGrid(pv => ({ ...pv, - fixedHeader: data.XDATA_GRID.fixedHeader, - fixedColumns: data.XDATA_GRID.fixedColumns, - columnsDef: data.XCOLUMNS_DEF ? [...data.XCOLUMNS_DEF] : pv.columnsDef, - rows: pv.pageNumber == 1 ? [...(data.XROWS || [])] : [...pv.rows, ...(data.XROWS || [])], - groups: data.XGROUPS + ...data.XDATA_GRID, + columnsDef: data.XDATA_GRID.columnsDef ? [...data.XDATA_GRID.columnsDef] : pv.columnsDef, + rows: pv.pageNumber == 1 ? [...(data.XDATA_GRID.rows || [])] : [...pv.rows, ...(data.XDATA_GRID.rows || [])], + groups: data.XDATA_GRID.groups ? pv.pageNumber == 1 - ? [...data.XGROUPS] - : [...pv.groups, ...data.XGROUPS.filter(g => !pv.groups.find(pg => pg.name == g.name))] + ? [...data.XDATA_GRID.groups] + : [...pv.groups, ...data.XDATA_GRID.groups.filter(g => !pv.groups.find(pg => pg.name == g.name))] : [...pv.groups], dataLoaded: true, - reload: false, - morePages: (data.XROWS || []).length >= DATA_GRID_PAGE_SIZE + reloading: false, + morePages: (data.XDATA_GRID.rows || []).length >= DATA_GRID_PAGE_SIZE })); } - }, [dataGrid.reload, dataGrid.filters, dataGrid.orders, dataGrid.dataLoaded, dataGrid.pageNumber, executeStored, SERV_DATA_TYPE_CLOB]); + }, [dataGrid.reloading, dataGrid.filters, dataGrid.orders, dataGrid.dataLoaded, dataGrid.pageNumber, executeStored, SERV_DATA_TYPE_CLOB]); //При изменении состояния фильтра - const handleFilterChanged = ({ filters }) => setdataGrid(pv => ({ ...pv, filters: [...filters], pageNumber: 1, reload: true })); + const handleFilterChanged = ({ filters }) => setDataGrid(pv => ({ ...pv, filters: [...filters], pageNumber: 1, reloading: true })); //При изменении состояния сортировки - const handleOrderChanged = ({ orders }) => setdataGrid(pv => ({ ...pv, orders: [...orders], pageNumber: 1, reload: true })); + const handleOrderChanged = ({ orders }) => setDataGrid(pv => ({ ...pv, orders: [...orders], pageNumber: 1, reloading: true })); //При изменении количества отображаемых страниц - const handlePagesCountChanged = () => setdataGrid(pv => ({ ...pv, pageNumber: pv.pageNumber + 1, reload: true })); + const handlePagesCountChanged = () => setDataGrid(pv => ({ ...pv, pageNumber: pv.pageNumber + 1, reloading: true })); //При нажатии на копку контрагента const handleAgnButtonClicked = agnCode => pOnlineShowDocument({ unitCode: "AGNLIST", document: agnCode, inRnParameter: "in_AGNABBR" }); @@ -1684,7 +1695,7 @@ const DataGrid = ({ title }) => { //При необходимости обновить данные таблицы useEffect(() => { loadData(); - }, [dataGrid.reload, loadData]); + }, [dataGrid.reloading, loadData]); //Генерация содержимого return ( @@ -1699,15 +1710,8 @@ const DataGrid = ({ title }) => { { //Пример: Диаграмма Ганта "P8Gantt" const Gantt = ({ title }) => { //Собственное состояние - const [state, setState] = useState({ + const [gantt, setGantt] = useState({ init: false, dataLoaded: false, ident: null, - ganttDef: {}, - ganttTasks: [], useCustomTaskDialog: false }); @@ -2142,21 +2144,21 @@ const Gantt = ({ title }) => { const loadData = useCallback(async () => { const data = await executeStored({ stored: "PKG_P8PANELS_SAMPLES.GANTT", - args: { NIDENT: state.ident }, + args: { NIDENT: gantt.ident }, attributeValueProcessor: (name, val) => name == "numb" ? undefined : ["start", "end"].includes(name) ? formatDateJSONDateOnly(val) : val, respArg: "COUT" }); - setState(pv => ({ ...pv, dataLoaded: true, ganttDef: { ...data.XGANTT_DEF }, ganttTasks: [...data.XGANTT_TASKS] })); - }, [state.ident, executeStored]); + setGantt(pv => ({ ...pv, dataLoaded: true, ...data.XGANTT })); + }, [gantt.ident, executeStored]); //Инициализация данных диаграммы const initData = useCallback(async () => { - if (!state.init) { - const data = await executeStored({ stored: "PKG_P8PANELS_SAMPLES.GANTT_INIT", args: { NIDENT: state.ident } }); - setState(pv => ({ ...pv, init: true, ident: data.NIDENT })); + if (!gantt.init) { + const data = await executeStored({ stored: "PKG_P8PANELS_SAMPLES.GANTT_INIT", args: { NIDENT: gantt.ident } }); + setGantt(pv => ({ ...pv, init: true, ident: data.NIDENT })); } - }, [state.init, state.ident, executeStored]); + }, [gantt.init, gantt.ident, executeStored]); //Изменение данных диаграммы const modifyData = useCallback( @@ -2164,13 +2166,13 @@ const Gantt = ({ title }) => { try { await executeStored({ stored: "PKG_P8PANELS_SAMPLES.GANTT_MODIFY", - args: { NIDENT: state.ident, NRN: rn, DDATE_FROM: new Date(start), DDATE_TO: new Date(end) } + args: { NIDENT: gantt.ident, NRN: rn, DDATE_FROM: new Date(start), DDATE_TO: new Date(end) } }); } finally { loadData(); } }, - [state.ident, executeStored, loadData] + [gantt.ident, executeStored, loadData] ); //Обработка измненения сроков задачи в диаграмме Гантта @@ -2180,8 +2182,8 @@ const Gantt = ({ title }) => { //При необходимости обновить данные таблицы useEffect(() => { - if (state.ident) loadData(); - }, [state.ident, loadData]); + if (gantt.ident) loadData(); + }, [gantt.ident, loadData]); //При подключении компонента к странице useEffect(() => { @@ -2196,23 +2198,21 @@ const Gantt = ({ title }) => { {title} setState(pv => ({ ...pv, useCustomTaskDialog: !pv.useCustomTaskDialog }))} />} + sx={STYLES.CONTROL} + control={ setGantt(pv => ({ ...pv, useCustomTaskDialog: !pv.useCustomTaskDialog }))} />} label="Отображать пользовательский диалог задачи" /> - + - {state.dataLoaded ? ( - - - + {gantt.dataLoaded ? ( + ) : null} diff --git a/app/core/utils.js b/app/core/utils.js index 205a31b..9552d02 100644 --- a/app/core/utils.js +++ b/app/core/utils.js @@ -33,34 +33,42 @@ const DISPLAY_SIZE = { //Типовые пути конвертации в массив (при переводе XML -> JSON) const XML_ALWAYS_ARRAY_PATHS = [ "XRESPOND.XPAYLOAD.XOUT_ARGUMENTS", - "XRESPOND.XPAYLOAD.XROWS", - "XRESPOND.XPAYLOAD.XCOLUMNS_DEF", - "XRESPOND.XPAYLOAD.XCOLUMNS_DEF.values", - "XRESPOND.XPAYLOAD.XGROUPS", - "XRESPOND.XPAYLOAD.XGANTT_DEF.taskAttributes", - "XRESPOND.XPAYLOAD.XGANTT_DEF.taskColors", - "XRESPOND.XPAYLOAD.XGANTT_TASKS", - "XRESPOND.XPAYLOAD.XGANTT_TASKS.dependencies", + "XRESPOND.XPAYLOAD.XDATA_GRID.rows", + "XRESPOND.XPAYLOAD.XDATA_GRID.columnsDef", + "XRESPOND.XPAYLOAD.XDATA_GRID.columnsDef.values", + "XRESPOND.XPAYLOAD.XDATA_GRID.groups", + "XRESPOND.XPAYLOAD.XGANTT.taskAttributes", + "XRESPOND.XPAYLOAD.XGANTT.taskColors", + "XRESPOND.XPAYLOAD.XGANTT.tasks", + "XRESPOND.XPAYLOAD.XGANTT.tasks.dependencies", "XRESPOND.XPAYLOAD.XCHART.labels", "XRESPOND.XPAYLOAD.XCHART.datasets", "XRESPOND.XPAYLOAD.XCHART.datasets.data", - "XRESPOND.XPAYLOAD.XCHART.datasets.items" + "XRESPOND.XPAYLOAD.XCHART.datasets.items", + "XRESPOND.XPAYLOAD.XCYCLOGRAM.taskAttributes", + "XRESPOND.XPAYLOAD.XCYCLOGRAM.columns", + "XRESPOND.XPAYLOAD.XCYCLOGRAM.groups", + "XRESPOND.XPAYLOAD.XCYCLOGRAM.tasks" ]; //Типовые шаблоны конвертации в массив (при переводе XML -> JSON) const XML_ALWAYS_ARRAY_PATH_PATTERNS = [ - /(.*)XROWS$/, - /(.*)XCOLUMNS_DEF$/, - /(.*)XCOLUMNS_DEF.values$/, - /(.*)XGROUPS$/, - /(.*)XGANTT_DEF.taskAttributes$/, - /(.*)XGANTT_DEF.taskColors$/, - /(.*)XGANTT_TASKS$/, - /(.*)XGANTT_TASKS.dependencies$/, + /(.*)XDATA_GRID.rows$/, + /(.*)XDATA_GRID.columnsDef$/, + /(.*)XDATA_GRID.columnsDef.values$/, + /(.*)XDATA_GRID.groups$/, + /(.*)XGANTT.taskAttributes$/, + /(.*)XGANTT.taskColors$/, + /(.*)XGANTT.tasks$/, + /(.*)XGANTT.tasks.dependencies$/, /(.*)XCHART.labels$/, /(.*)XCHART.datasets$/, /(.*)XCHART.datasets.data$/, - /(.*)XCHART.datasets.items$/ + /(.*)XCHART.datasets.items$/, + /(.*)XCYCLOGRAM.taskAttributes$/, + /(.*)XCYCLOGRAM.columns$/, + /(.*)XCYCLOGRAM.groups$/, + /(.*)XCYCLOGRAM.tasks$/ ]; //Типовой постфикс тега для массива (при переводе XML -> JSON) @@ -68,11 +76,13 @@ const XML_ALWAYS_ARRAY_POSTFIX = "__SYSTEM__ARRAY__"; //Типовые шаблоны конвертации значения атрибута в строку (при переводе XML -> JSON) const XML_ATTR_ALWAYS_STR_PATH_PATTERNS = [ - /(.*)XCOLUMNS_DEF.name$/, - /(.*)XCOLUMNS_DEF.caption$/, - /(.*)XCOLUMNS_DEF.parent$/, - /(.*)XGROUPS.name$/, - /(.*)XGROUPS.caption$/ + /(.*)XDATA_GRID.columnsDef.name$/, + /(.*)XDATA_GRID.columnsDef.caption$/, + /(.*)XDATA_GRID.columnsDef.parent$/, + /(.*)XDATA_GRID.groups.name$/, + /(.*)XDATA_GRID.groups.caption$/, + /(.*)XCYCLOGRAM.columns.name$/, + /(.*)XCYCLOGRAM.groups.name$/ ]; //----------- diff --git a/app/panels/eqs_prfrm/eqs_prfrm.js b/app/panels/eqs_prfrm/eqs_prfrm.js index c6ca224..3fbb30c 100644 --- a/app/panels/eqs_prfrm/eqs_prfrm.js +++ b/app/panels/eqs_prfrm/eqs_prfrm.js @@ -119,8 +119,8 @@ const EqsPrfrm = () => { let cF = 0; let sF = 0; let properties = []; - if (data.XROWS != null) { - data.XROWS.map(row => { + if (data.XDATA_GRID.rows != null) { + data.XDATA_GRID.rows.map(row => { properties = []; Object.entries(row).forEach(([key, value]) => properties.push({ name: key, data: value })); let info2 = properties.find(element => { @@ -156,11 +156,10 @@ const EqsPrfrm = () => { } setDataGrid(pv => ({ ...pv, - columnsDef: data.XCOLUMNS_DEF ? [...data.XCOLUMNS_DEF] : pv.columnsDef, - rows: [...(data.XROWS || [])], - fixedHeader: data.XDATA_GRID.fixedHeader, - fixedColumns: data.XDATA_GRID.fixedColumns, - groups: [...(data.XGROUPS || [])], + ...data.XDATA_GRID, + columnsDef: data.XDATA_GRID.columnsDef ? [...data.XDATA_GRID.columnsDef] : pv.columnsDef, + rows: [...(data.XDATA_GRID.rows || [])], + groups: [...(data.XDATA_GRID.groups || [])], dataLoaded: true, reload: false })); diff --git a/app/panels/mech_rec_assembly_mon/hooks.js b/app/panels/mech_rec_assembly_mon/hooks.js index 7b70dff..dbb39b5 100644 --- a/app/panels/mech_rec_assembly_mon/hooks.js +++ b/app/panels/mech_rec_assembly_mon/hooks.js @@ -195,9 +195,10 @@ const useProductDetailsTable = (planSpec, product, orders, pageNumber, stored) = }); setData(pv => ({ ...pv, - columnsDef: data.XCOLUMNS_DEF ? [...data.XCOLUMNS_DEF] : pv.columnsDef, - rows: pageNumber == 1 ? [...(data.XROWS || [])] : [...pv.rows, ...(data.XROWS || [])], - morePages: DATA_GRID_PAGE_SIZE == 0 ? false : (data.XROWS || []).length >= DATA_GRID_PAGE_SIZE, + ...data.XDATA_GRID, + columnsDef: data.XDATA_GRID.columnsDef ? [...data.XDATA_GRID.columnsDef] : pv.columnsDef, + rows: pageNumber == 1 ? [...(data.XDATA_GRID.rows || [])] : [...pv.rows, ...(data.XDATA_GRID.rows || [])], + morePages: DATA_GRID_PAGE_SIZE == 0 ? false : (data.XDATA_GRID.rows || []).length >= DATA_GRID_PAGE_SIZE, init: true })); } finally { diff --git a/app/panels/mech_rec_cost_jobs_manage/hooks.js b/app/panels/mech_rec_cost_jobs_manage/hooks.js index 01eab21..9b060d3 100644 --- a/app/panels/mech_rec_cost_jobs_manage/hooks.js +++ b/app/panels/mech_rec_cost_jobs_manage/hooks.js @@ -150,12 +150,13 @@ const useCostJobsSpecs = task => { }); setCostJobsSpecs(pv => ({ ...pv, + ...data.XDATA_GRID, task: task, - columnsDef: data.XCOLUMNS_DEF ? [...data.XCOLUMNS_DEF] : pv.columnsDef, - rows: pv.pageNumber == 1 ? [...(data.XROWS || [])] : [...pv.rows, ...(data.XROWS || [])], + columnsDef: data.XDATA_GRID.columnsDef ? [...data.XDATA_GRID.columnsDef] : pv.columnsDef, + rows: pv.pageNumber == 1 ? [...(data.XDATA_GRID.rows || [])] : [...pv.rows, ...(data.XDATA_GRID.rows || [])], dataLoaded: true, reload: false, - morePages: (data.XROWS || []).length >= DATA_GRID_PAGE_SIZE + morePages: (data.XDATA_GRID.rows || []).length >= DATA_GRID_PAGE_SIZE })); }; loadData(); @@ -256,12 +257,13 @@ const useEquipConfiguration = (task, fromAction) => { }); setEquipConfiguration(pv => ({ ...pv, + ...data.XDATA_GRID, task: task, - columnsDef: data.XCOLUMNS_DEF ? [...data.XCOLUMNS_DEF] : pv.columnsDef, - rows: pv.pageNumber == 1 ? [...(data.XROWS || [])] : [...pv.rows, ...(data.XROWS || [])], + columnsDef: data.XDATA_GRID.columnsDef ? [...data.XDATA_GRID.columnsDef] : pv.columnsDef, + rows: pv.pageNumber == 1 ? [...(data.XDATA_GRID.rows || [])] : [...pv.rows, ...(data.XDATA_GRID.rows || [])], dataLoaded: true, reload: false, - morePages: (data.XROWS || []).length >= DATA_GRID_PAGE_SIZE + morePages: (data.XDATA_GRID.rows || []).length >= DATA_GRID_PAGE_SIZE })); }; loadData(); diff --git a/app/panels/mech_rec_cost_prod_plans/datagrids/backend_dg.js b/app/panels/mech_rec_cost_prod_plans/datagrids/backend_dg.js index 04e626f..b913052 100644 --- a/app/panels/mech_rec_cost_prod_plans/datagrids/backend_dg.js +++ b/app/panels/mech_rec_cost_prod_plans/datagrids/backend_dg.js @@ -53,14 +53,15 @@ const useCostRouteLists = (task, taskType) => { }); setCostRouteLists(pv => ({ ...pv, - columnsDef: data.XCOLUMNS_DEF ? [...data.XCOLUMNS_DEF] : pv.columnsDef, - rows: pv.pageNumber == 1 ? [...(data.XROWS || [])] : [...pv.rows, ...(data.XROWS || [])], + ...data.XDATA_GRID, + columnsDef: data.XDATA_GRID.columnsDef ? [...data.XDATA_GRID.columnsDef] : pv.columnsDef, + rows: pv.pageNumber == 1 ? [...(data.XDATA_GRID.rows || [])] : [...pv.rows, ...(data.XDATA_GRID.rows || [])], dataLoaded: true, reload: false, - morePages: (data.XROWS || []).length >= DATA_GRID_PAGE_SIZE, - quantPlanSum: data.XROWS ? data.XROWS.reduce((a, b) => a + b["NQUANT_PLAN"], 0) : 0, - uniqueNomns: data.XROWS - ? data.XROWS.reduce((accumulator, current) => { + morePages: (data.XDATA_GRID.rows || []).length >= DATA_GRID_PAGE_SIZE, + quantPlanSum: data.XDATA_GRID.rows ? data.XDATA_GRID.rows.reduce((a, b) => a + b["NQUANT_PLAN"], 0) : 0, + uniqueNomns: data.XDATA_GRID.rows + ? data.XDATA_GRID.rows.reduce((accumulator, current) => { if (!accumulator.find(item => item.SMATRES_PLAN_NOMEN === current.SMATRES_PLAN_NOMEN)) { accumulator.push(current); } @@ -122,11 +123,12 @@ const useIncomFromDeps = (task, taskType) => { }); setIncomFromDeps(pv => ({ ...pv, - columnsDef: data.XCOLUMNS_DEF ? [...data.XCOLUMNS_DEF] : pv.columnsDef, - rows: pv.pageNumber == 1 ? [...(data.XROWS || [])] : [...pv.rows, ...(data.XROWS || [])], + ...data.XDATA_GRID, + columnsDef: data.XDATA_GRID.columnsDef ? [...data.XDATA_GRID.columnsDef] : pv.columnsDef, + rows: pv.pageNumber == 1 ? [...(data.XDATA_GRID.rows || [])] : [...pv.rows, ...(data.XDATA_GRID.rows || [])], dataLoaded: true, reload: false, - morePages: (data.XROWS || []).length >= DATA_GRID_PAGE_SIZE + morePages: (data.XDATA_GRID.rows || []).length >= DATA_GRID_PAGE_SIZE })); } // eslint-disable-next-line react-hooks/exhaustive-deps @@ -172,11 +174,12 @@ const useGoodsParties = mainRowRN => { }); setGoodsParties(pv => ({ ...pv, - columnsDef: data.XCOLUMNS_DEF ? [...data.XCOLUMNS_DEF] : pv.columnsDef, - rows: pv.pageNumber == 1 ? [...(data.XROWS || [])] : [...pv.rows, ...(data.XROWS || [])], + ...data.XDATA_GRID, + columnsDef: data.XDATA_GRID.columnsDef ? [...data.XDATA_GRID.columnsDef] : pv.columnsDef, + rows: pv.pageNumber == 1 ? [...(data.XDATA_GRID.rows || [])] : [...pv.rows, ...(data.XDATA_GRID.rows || [])], dataLoaded: true, reload: false, - morePages: (data.XROWS || []).length >= DATA_GRID_PAGE_SIZE + morePages: (data.XDATA_GRID.rows || []).length >= DATA_GRID_PAGE_SIZE })); } // eslint-disable-next-line react-hooks/exhaustive-deps @@ -223,11 +226,12 @@ const useCostDeliveryLists = mainRowRN => { }); setCostDeliveryLists(pv => ({ ...pv, - columnsDef: data.XCOLUMNS_DEF ? [...data.XCOLUMNS_DEF] : pv.columnsDef, - rows: pv.pageNumber == 1 ? [...(data.XROWS || [])] : [...pv.rows, ...(data.XROWS || [])], + ...data.XDATA_GRID, + columnsDef: data.XDATA_GRID.columnsDef ? [...data.XDATA_GRID.columnsDef] : pv.columnsDef, + rows: pv.pageNumber == 1 ? [...(data.XDATA_GRID.rows || [])] : [...pv.rows, ...(data.XDATA_GRID.rows || [])], dataLoaded: true, reload: false, - morePages: (data.XROWS || []).length >= DATA_GRID_PAGE_SIZE + morePages: (data.XDATA_GRID.rows || []).length >= DATA_GRID_PAGE_SIZE })); } // eslint-disable-next-line react-hooks/exhaustive-deps diff --git a/app/panels/mech_rec_cost_prod_plans/mech_rec_cost_prod_plans.js b/app/panels/mech_rec_cost_prod_plans/mech_rec_cost_prod_plans.js index cea0cad..ea989a4 100644 --- a/app/panels/mech_rec_cost_prod_plans/mech_rec_cost_prod_plans.js +++ b/app/panels/mech_rec_cost_prod_plans/mech_rec_cost_prod_plans.js @@ -97,7 +97,7 @@ const parseProdPlanSpXML = async xmlDoc => { attributeValueProcessor: (name, val) => ["numb", "title"].includes(name) ? undefined : ["start", "end"].includes(name) ? formatDateJSONDateOnly(val) : val }); - return data.XDATA; + return data.XDATA.XGANTT; }; //Форматирование для отображения количества документов @@ -237,8 +237,7 @@ const MechRecCostProdPlans = () => { selectedPlanCtlgLevel: null, selectedPlanCtlgSort: null, selectedPlanCtlgMenuItems: null, - selectedPlanCtlgGanttDef: {}, - selectedPlanCtlgSpecs: [], + gantt: {}, selectedTaskDetail: null, selectedTaskDetailType: null, planSpec: null @@ -282,8 +281,7 @@ const MechRecCostProdPlans = () => { selectedPlanCtlgLevel: null, selectedPlanCtlgSort: null, selectedPlanCtlgMenuItems: null, - selectedPlanCtlgSpecs: [], - selectedPlanCtlgGanttDef: {}, + gantt: {}, showPlanList: false, selectedTaskDetail: null, selectedTaskDetailType: null @@ -300,8 +298,7 @@ const MechRecCostProdPlans = () => { selectedPlanCtlgLevel: null, selectedPlanCtlgSort: null, selectedPlanCtlgMenuItems: null, - selectedPlanCtlgSpecs: [], - selectedPlanCtlgGanttDef: {}, + gantt: {}, showPlanList: false, selectedTaskDetail: null, selectedTaskDetailType: null @@ -324,8 +321,7 @@ const MechRecCostProdPlans = () => { ? state.selectedPlanCtlgMenuItems : [...Array(data.NMAX_LEVEL).keys()].map(el => el + 1), selectedPlanCtlgSpecsLoaded: true, - selectedPlanCtlgGanttDef: doc.XGANTT_DEF ? { ...doc.XGANTT_DEF } : {}, - selectedPlanCtlgSpecs: [...(doc?.XGANTT_TASKS || [])] + gantt: { ...doc, tasks: [...(doc?.tasks || [])] } })); }, // eslint-disable-next-line react-hooks/exhaustive-deps @@ -401,7 +397,7 @@ const MechRecCostProdPlans = () => { {state.selectedPlanCtlgSpecsLoaded ? ( - state.selectedPlanCtlgSpecs.length === 0 ? ( + state.gantt.tasks.length === 0 ? ( { ) : null} taskDialogRenderer({ ...prms, handleTaskDetailOpen })} /> diff --git a/app/panels/mech_rec_dept_cost_jobs/hooks.js b/app/panels/mech_rec_dept_cost_jobs/hooks.js index e5ef297..ebeb832 100644 --- a/app/panels/mech_rec_dept_cost_jobs/hooks.js +++ b/app/panels/mech_rec_dept_cost_jobs/hooks.js @@ -62,13 +62,12 @@ const useMechRecDeptCostJobs = (subdiv, fullDate, workHours) => { }); setCostJobs(pv => ({ ...pv, - fixedHeader: data.XDATA_GRID.fixedHeader, - fixedColumns: data.XDATA_GRID.fixedColumns, - columnsDef: data.XCOLUMNS_DEF ? [...data.XCOLUMNS_DEF] : pv.columnsDef, - rows: pv.pageNumber == 1 ? [...(data.XROWS || [])] : [...pv.rows, ...(data.XROWS || [])], + ...data.XDATA_GRID, + columnsDef: data.XDATA_GRID.columnsDef ? [...data.XDATA_GRID.columnsDef] : pv.columnsDef, + rows: pv.pageNumber == 1 ? [...(data.XDATA_GRID.rows || [])] : [...pv.rows, ...(data.XDATA_GRID.rows || [])], dataLoaded: true, reload: false, - morePages: (data.XROWS || []).length >= DATA_GRID_PAGE_SIZE_LARGE, + morePages: (data.XDATA_GRID.rows || []).length >= DATA_GRID_PAGE_SIZE_LARGE, date: fullDate })); }; @@ -109,11 +108,12 @@ const useInsDepartment = fullDate => { }); setInsDepartments(pv => ({ ...pv, - columnsDef: data.XCOLUMNS_DEF ? [...data.XCOLUMNS_DEF] : pv.columnsDef, - rows: pv.pageNumber == 1 ? [...(data.XROWS || [])] : [...pv.rows, ...(data.XROWS || [])], + ...data.XDATA_GRID, + columnsDef: data.XDATA_GRID.columnsDef ? [...data.XDATA_GRID.columnsDef] : pv.columnsDef, + rows: pv.pageNumber == 1 ? [...(data.XDATA_GRID.rows || [])] : [...pv.rows, ...(data.XDATA_GRID.rows || [])], dataLoaded: true, reload: false, - morePages: (data.XROWS || []).length >= DATA_GRID_PAGE_SIZE_SMALL + morePages: (data.XDATA_GRID.rows || []).length >= DATA_GRID_PAGE_SIZE_SMALL })); }; if (insDepartments.reload) { diff --git a/app/panels/mech_rec_dept_cost_prod_plans/hooks.js b/app/panels/mech_rec_dept_cost_prod_plans/hooks.js index c82d41a..38b4e2c 100644 --- a/app/panels/mech_rec_dept_cost_prod_plans/hooks.js +++ b/app/panels/mech_rec_dept_cost_prod_plans/hooks.js @@ -75,13 +75,12 @@ const useDeptCostProdPlans = () => { }); setState(pv => ({ ...pv, - fixedHeader: data.XDATA_GRID.fixedHeader, - fixedColumns: data.XDATA_GRID.fixedColumns, - columnsDef: data.XCOLUMNS_DEF ? [...data.XCOLUMNS_DEF] : pv.columnsDef, - rows: pv.pageNumber == 1 ? [...(data.XROWS || [])] : [...pv.rows, ...(data.XROWS || [])], + ...data.XDATA_GRID, + columnsDef: data.XDATA_GRID.columnsDef ? [...data.XDATA_GRID.columnsDef] : pv.columnsDef, + rows: pv.pageNumber == 1 ? [...(data.XDATA_GRID.rows || [])] : [...pv.rows, ...(data.XDATA_GRID.rows || [])], dataLoaded: true, reload: false, - morePages: (data.XROWS || []).length >= DATA_GRID_PAGE_SIZE_LARGE + morePages: (data.XDATA_GRID.rows || []).length >= DATA_GRID_PAGE_SIZE_LARGE })); }; if (state.reload) { @@ -144,11 +143,12 @@ const useCostRouteLists = task => { }); setCostRouteLists(pv => ({ ...pv, - columnsDef: data.XCOLUMNS_DEF ? [...data.XCOLUMNS_DEF] : pv.columnsDef, - rows: pv.pageNumber == 1 ? [...(data.XROWS || [])] : [...pv.rows, ...(data.XROWS || [])], + ...data.XDATA_GRID, + columnsDef: data.XDATA_GRID.columnsDef ? [...data.XDATA_GRID.columnsDef] : pv.columnsDef, + rows: pv.pageNumber == 1 ? [...(data.XDATA_GRID.rows || [])] : [...pv.rows, ...(data.XDATA_GRID.rows || [])], dataLoaded: true, reload: false, - morePages: (data.XROWS || []).length >= DATA_GRID_PAGE_SIZE_SMALL + morePages: (data.XDATA_GRID.rows || []).length >= DATA_GRID_PAGE_SIZE_SMALL })); }; if (costRouteLists.reload && task) { @@ -202,11 +202,12 @@ const useCostRouteListsSpecs = mainRowRN => { }); setCostRouteListsSpecs(pv => ({ ...pv, - columnsDef: data.XCOLUMNS_DEF ? [...data.XCOLUMNS_DEF] : pv.columnsDef, - rows: pv.pageNumber == 1 ? [...(data.XROWS || [])] : [...pv.rows, ...(data.XROWS || [])], + ...data.XDATA_GRID, + columnsDef: data.XDATA_GRID.columnsDef ? [...data.XDATA_GRID.columnsDef] : pv.columnsDef, + rows: pv.pageNumber == 1 ? [...(data.XDATA_GRID.rows || [])] : [...pv.rows, ...(data.XDATA_GRID.rows || [])], dataLoaded: true, reload: false, - morePages: (data.XROWS || []).length >= DATA_GRID_PAGE_SIZE_LARGE + morePages: (data.XDATA_GRID.rows || []).length >= DATA_GRID_PAGE_SIZE_LARGE })); }; if (costRouteListsSpecs.reload) { @@ -258,11 +259,12 @@ const useIncomFromDeps = task => { }); setIncomFromDeps(pv => ({ ...pv, - columnsDef: data.XCOLUMNS_DEF ? [...data.XCOLUMNS_DEF] : pv.columnsDef, - rows: pv.pageNumber == 1 ? [...(data.XROWS || [])] : [...pv.rows, ...(data.XROWS || [])], + ...data.XDATA_GRID, + columnsDef: data.XDATA_GRID.columnsDef ? [...data.XDATA_GRID.columnsDef] : pv.columnsDef, + rows: pv.pageNumber == 1 ? [...(data.XDATA_GRID.rows || [])] : [...pv.rows, ...(data.XDATA_GRID.rows || [])], dataLoaded: true, reload: false, - morePages: (data.XROWS || []).length >= DATA_GRID_PAGE_SIZE_LARGE + morePages: (data.XDATA_GRID.rows || []).length >= DATA_GRID_PAGE_SIZE_LARGE })); }; if (incomFromDeps.reload) { diff --git a/app/panels/prj_fin/projects.js b/app/panels/prj_fin/projects.js index 9855e07..d5f0501 100644 --- a/app/panels/prj_fin/projects.js +++ b/app/panels/prj_fin/projects.js @@ -84,11 +84,12 @@ const Projects = () => { }); setProjectsDataGrid(pv => ({ ...pv, - columnsDef: data.XCOLUMNS_DEF ? [...data.XCOLUMNS_DEF] : pv.columnsDef, - rows: pv.pageNumber == 1 ? [...(data.XROWS || [])] : [...pv.rows, ...(data.XROWS || [])], + ...data.XDATA_GRID, + columnsDef: data.XDATA_GRID.columnsDef ? [...data.XDATA_GRID.columnsDef] : pv.columnsDef, + rows: pv.pageNumber == 1 ? [...(data.XDATA_GRID.rows || [])] : [...pv.rows, ...(data.XDATA_GRID.rows || [])], dataLoaded: true, reload: false, - morePages: (data.XROWS || []).length >= configSystemPageSize + morePages: (data.XDATA_GRID.rows || []).length >= configSystemPageSize })); } }, [ diff --git a/app/panels/prj_fin/stage_arts.js b/app/panels/prj_fin/stage_arts.js index ca9d06b..01c2a28 100644 --- a/app/panels/prj_fin/stage_arts.js +++ b/app/panels/prj_fin/stage_arts.js @@ -57,8 +57,9 @@ const StageArts = ({ stage, filters }) => { }); setStageArtsDataGrid(pv => ({ ...pv, - columnsDef: data.XCOLUMNS_DEF ? [...data.XCOLUMNS_DEF] : pv.columnsDef, - rows: [...(data.XROWS || [])], + ...data.XDATA_GRID, + columnsDef: data.XDATA_GRID.columnsDef ? [...data.XDATA_GRID.columnsDef] : pv.columnsDef, + rows: [...(data.XDATA_GRID.rows || [])], dataLoaded: true, reload: false })); diff --git a/app/panels/prj_fin/stage_contracts.js b/app/panels/prj_fin/stage_contracts.js index dddc3fb..0953a75 100644 --- a/app/panels/prj_fin/stage_contracts.js +++ b/app/panels/prj_fin/stage_contracts.js @@ -67,11 +67,12 @@ const StageContracts = ({ stage, filters }) => { }); setStageContractsDataGrid(pv => ({ ...pv, - columnsDef: data.XCOLUMNS_DEF ? [...data.XCOLUMNS_DEF] : pv.columnsDef, - rows: pv.pageNumber == 1 ? [...(data.XROWS || [])] : [...pv.rows, ...(data.XROWS || [])], + ...data.XDATA_GRID, + columnsDef: data.XDATA_GRID.columnsDef ? [...data.XDATA_GRID.columnsDef] : pv.columnsDef, + rows: pv.pageNumber == 1 ? [...(data.XDATA_GRID.rows || [])] : [...pv.rows, ...(data.XDATA_GRID.rows || [])], dataLoaded: true, reload: false, - morePages: (data.XROWS || []).length >= configSystemPageSize + morePages: (data.XDATA_GRID.rows || []).length >= configSystemPageSize })); } }, [ diff --git a/app/panels/prj_fin/stages.js b/app/panels/prj_fin/stages.js index 9fec2da..7cc1f3b 100644 --- a/app/panels/prj_fin/stages.js +++ b/app/panels/prj_fin/stages.js @@ -71,11 +71,12 @@ const Stages = ({ project, projectName, filters }) => { }); setStagesDataGrid(pv => ({ ...pv, - columnsDef: data.XCOLUMNS_DEF ? [...data.XCOLUMNS_DEF] : pv.columnsDef, - rows: pv.pageNumber == 1 ? [...(data.XROWS || [])] : [...pv.rows, ...(data.XROWS || [])], + ...data.XDATA_GRID, + columnsDef: data.XDATA_GRID.columnsDef ? [...data.XDATA_GRID.columnsDef] : pv.columnsDef, + rows: pv.pageNumber == 1 ? [...(data.XDATA_GRID.rows || [])] : [...pv.rows, ...(data.XDATA_GRID.rows || [])], dataLoaded: true, reload: false, - morePages: (data.XROWS || []).length >= configSystemPageSize + morePages: (data.XDATA_GRID.rows || []).length >= configSystemPageSize })); } }, [ diff --git a/app/panels/prj_graph/prj_graph.js b/app/panels/prj_graph/prj_graph.js index bc26b95..a46c83d 100644 --- a/app/panels/prj_graph/prj_graph.js +++ b/app/panels/prj_graph/prj_graph.js @@ -55,11 +55,10 @@ const PrjGraph = () => { const data = await executeStored({ stored: "PKG_P8PANELS_PROJECTS.GRAPH", args: {}, respArg: "COUT" }); setdataGrid(pv => ({ ...pv, - fixedHeader: data.XDATA_GRID.fixedHeader, - fixedColumns: data.XDATA_GRID.fixedColumns, - columnsDef: data.XCOLUMNS_DEF ? [...data.XCOLUMNS_DEF] : pv.columnsDef, - rows: [...(data.XROWS || [])], - groups: [...(data.XGROUPS || [])], + ...data.XDATA_GRID, + columnsDef: data.XDATA_GRID.columnsDef ? [...data.XDATA_GRID.columnsDef] : pv.columnsDef, + rows: [...(data.XDATA_GRID.rows || [])], + groups: [...(data.XDATA_GRID.groups || [])], dataLoaded: true, reload: false })); diff --git a/app/panels/prj_jobs/lab_fact_rpt_dtl.js b/app/panels/prj_jobs/lab_fact_rpt_dtl.js index f443384..e368b48 100644 --- a/app/panels/prj_jobs/lab_fact_rpt_dtl.js +++ b/app/panels/prj_jobs/lab_fact_rpt_dtl.js @@ -57,11 +57,12 @@ const LabFactRptDtl = ({ periodId, title, onHide }) => { }); setFactRptDtl(pv => ({ ...pv, - columnsDef: data.XCOLUMNS_DEF ? [...data.XCOLUMNS_DEF] : pv.columnsDef, - rows: pv.pageNumber == 1 ? [...(data.XROWS || [])] : [...pv.rows, ...(data.XROWS || [])], + ...data.XDATA_GRID, + columnsDef: data.XDATA_GRID.columnsDef ? [...data.XDATA_GRID.columnsDef] : pv.columnsDef, + rows: pv.pageNumber == 1 ? [...(data.XDATA_GRID.rows || [])] : [...pv.rows, ...(data.XDATA_GRID.rows || [])], dataLoaded: true, reload: false, - morePages: (data.XROWS || []).length >= configSystemPageSize + morePages: (data.XDATA_GRID.rows || []).length >= configSystemPageSize })); } }, [ diff --git a/app/panels/prj_jobs/lab_plan_fot_dtl.js b/app/panels/prj_jobs/lab_plan_fot_dtl.js index 520360b..e3e323b 100644 --- a/app/panels/prj_jobs/lab_plan_fot_dtl.js +++ b/app/panels/prj_jobs/lab_plan_fot_dtl.js @@ -56,11 +56,12 @@ const LabPlanFOTDtl = ({ periodId, title, onHide }) => { }); setPlanFOTDtl(pv => ({ ...pv, - columnsDef: data.XCOLUMNS_DEF ? [...data.XCOLUMNS_DEF] : pv.columnsDef, - rows: pv.pageNumber == 1 ? [...(data.XROWS || [])] : [...pv.rows, ...(data.XROWS || [])], + ...data.XDATA_GRID, + columnsDef: data.XDATA_GRID.columnsDef ? [...data.XDATA_GRID.columnsDef] : pv.columnsDef, + rows: pv.pageNumber == 1 ? [...(data.XDATA_GRID.rows || [])] : [...pv.rows, ...(data.XDATA_GRID.rows || [])], dataLoaded: true, reload: false, - morePages: (data.XROWS || []).length >= configSystemPageSize + morePages: (data.XDATA_GRID.rows || []).length >= configSystemPageSize })); } }, [ diff --git a/app/panels/prj_jobs/lab_plan_jobs_dtl.js b/app/panels/prj_jobs/lab_plan_jobs_dtl.js index 251dd68..a1ee815 100644 --- a/app/panels/prj_jobs/lab_plan_jobs_dtl.js +++ b/app/panels/prj_jobs/lab_plan_jobs_dtl.js @@ -61,11 +61,12 @@ const LabPlanJobsDtl = ({ periodId, title, onHide, onProjectClick }) => { }); setPlanJobsDtl(pv => ({ ...pv, - columnsDef: data.XCOLUMNS_DEF ? [...data.XCOLUMNS_DEF] : pv.columnsDef, - rows: pv.pageNumber == 1 ? [...(data.XROWS || [])] : [...pv.rows, ...(data.XROWS || [])], + ...data.XDATA_GRID, + columnsDef: data.XDATA_GRID.columnsDef ? [...data.XDATA_GRID.columnsDef] : pv.columnsDef, + rows: pv.pageNumber == 1 ? [...(data.XDATA_GRID.rows || [])] : [...pv.rows, ...(data.XDATA_GRID.rows || [])], dataLoaded: true, reload: false, - morePages: (data.XROWS || []).length >= configSystemPageSize + morePages: (data.XDATA_GRID.rows || []).length >= configSystemPageSize })); } }, [ diff --git a/app/panels/prj_jobs/prj_jobs.js b/app/panels/prj_jobs/prj_jobs.js index ffafa48..fc2e5b1 100644 --- a/app/panels/prj_jobs/prj_jobs.js +++ b/app/panels/prj_jobs/prj_jobs.js @@ -265,8 +265,7 @@ const PrjJobs = () => { selectedProjectJobsLoaded: false, selectedProject: null, selectedProjectDocRn: null, - selectedProjectGanttDef: {}, - selectedProjectTasks: [], + gantt: {}, showInitDialog: false }); @@ -308,8 +307,9 @@ const PrjJobs = () => { setState(pv => ({ ...pv, selectedProjectJobsLoaded: true, - selectedProjectGanttDef: tasksOnly === true ? { ...pv.selectedProjectGanttDef } : data.XGANTT_DEF ? { ...data.XGANTT_DEF } : {}, - selectedProjectTasks: [...data.XGANTT_TASKS] + gantt: { + ...(tasksOnly === true ? { ...pv.gantt, tasks: [...data.XGANTT.tasks] } : data.XGANTT ? { ...data.XGANTT } : {}) + } })); }, [executeStored, state.ident, state.selectedProject] @@ -394,8 +394,7 @@ const PrjJobs = () => { selectedProject: project, selectedProjectDocRn: projectDocRn, selectedProjectJobsLoaded: false, - selectedProjectTasks: [], - selectedProjectGanttDef: {}, + gantt: {}, showProjectsList: false })); }; @@ -407,8 +406,7 @@ const PrjJobs = () => { selectedProjectJobsLoaded: false, selectedProject: null, selectedProjectDocRn: null, - selectedProjectTasks: [], - selectedProjectGanttDef: {}, + gantt: {}, showProjectsList: false })); @@ -515,11 +513,10 @@ const PrjJobs = () => { {state.selectedProjectJobsLoaded ? ( diff --git a/app/panels/prj_jobs/res_mon.js b/app/panels/prj_jobs/res_mon.js index d3a2ba9..d499255 100644 --- a/app/panels/prj_jobs/res_mon.js +++ b/app/panels/prj_jobs/res_mon.js @@ -79,11 +79,12 @@ const ResMon = ({ ident, onPlanJobsDtlProjectClick }) => { }); setPeriods(pv => ({ ...pv, - columnsDef: data.XCOLUMNS_DEF ? [...data.XCOLUMNS_DEF] : pv.columnsDef, - rows: pv.pageNumber == 1 ? [...(data.XROWS || [])] : [...pv.rows, ...(data.XROWS || [])], + ...data.XDATA_GRID, + columnsDef: data.XDATA_GRID.columnsDef ? [...data.XDATA_GRID.columnsDef] : pv.columnsDef, + rows: pv.pageNumber == 1 ? [...(data.XDATA_GRID.rows || [])] : [...pv.rows, ...(data.XDATA_GRID.rows || [])], dataLoaded: true, reload: false, - morePages: (data.XROWS || []).length >= configSystemPageSize + morePages: (data.XDATA_GRID.rows || []).length >= configSystemPageSize })); } }, [ident, peridos.reload, peridos.orders, peridos.dataLoaded, peridos.pageNumber, executeStored, configSystemPageSize, SERV_DATA_TYPE_CLOB]); diff --git a/app/panels/rrp_conf_editor/hooks.js b/app/panels/rrp_conf_editor/hooks.js index 03b8066..8030d1d 100644 --- a/app/panels/rrp_conf_editor/hooks.js +++ b/app/panels/rrp_conf_editor/hooks.js @@ -97,16 +97,15 @@ const useConf = (currentTab, handleSectionChange) => { sections.map(s => { let dg = {}; Object.assign(dg, dataGrid, { + ...s.XDATA.XDATA_GRID, rn: s.NRN, code: s.SCODE, name: s.SNAME, delete_allow: s.NDELETE_ALLOW, dataLoaded: true, - columnsDef: [...(s.XDATA.XCOLUMNS_DEF || [])], - groups: [...(s.XDATA.XGROUPS || [])], - rows: [...(s.XDATA.XROWS || [])], - fixedHeader: s.XDATA.XDATA_GRID.fixedHeader, - fixedColumns: s.XDATA.XDATA_GRID.fixedColumns, + columnsDef: [...(s.XDATA.XDATA_GRID.columnsDef || [])], + groups: [...(s.XDATA.XDATA_GRID.groups || [])], + rows: [...(s.XDATA.XDATA_GRID.rows || [])], reload: false }); //Если раздел имеет составы показателей diff --git a/app/panels/samples/cyclogram.js b/app/panels/samples/cyclogram.js index d9ee6cb..1ffca33 100644 --- a/app/panels/samples/cyclogram.js +++ b/app/panels/samples/cyclogram.js @@ -239,8 +239,7 @@ const Cyclogram = ({ title }) => { const data = await executeStored({ stored: "PKG_P8PANELS_SAMPLES.CYCLOGRAM", args: { NIDENT: state.ident }, - attributeValueProcessor: (name, val) => - name === "name" ? undefined : ["ddate_start", "ddate_end"].includes(name) ? formatDateJSONDateOnly(val) : val, + attributeValueProcessor: (name, val) => (["ddate_start", "ddate_end"].includes(name) ? formatDateJSONDateOnly(val) : val), respArg: "COUT" }); setState(pv => ({ ...pv, dataLoaded: true, ...data.XCYCLOGRAM, reload: false })); diff --git a/app/panels/samples/data_grid.js b/app/panels/samples/data_grid.js index c5b9bc3..6e61d15 100644 --- a/app/panels/samples/data_grid.js +++ b/app/panels/samples/data_grid.js @@ -86,14 +86,14 @@ export const groupCellRender = () => ({ cellStyle: { padding: "2px" } }); //Пример: Таблица данных "P8PDataGrid" const DataGrid = ({ title }) => { //Собственное состояние - таблица данных - const [dataGrid, setdataGrid] = useState({ + const [dataGrid, setDataGrid] = useState({ dataLoaded: false, columnsDef: [], filters: null, orders: null, groups: [], rows: [], - reload: true, + reloading: true, pageNumber: 1, morePages: true, fixedHeader: false, @@ -108,7 +108,7 @@ const DataGrid = ({ title }) => { //Загрузка данных таблицы с сервера const loadData = useCallback(async () => { - if (dataGrid.reload) { + if (dataGrid.reloading) { const data = await executeStored({ stored: "PKG_P8PANELS_SAMPLES.DATA_GRID", args: { @@ -120,32 +120,31 @@ const DataGrid = ({ title }) => { }, respArg: "COUT" }); - setdataGrid(pv => ({ + setDataGrid(pv => ({ ...pv, - fixedHeader: data.XDATA_GRID.fixedHeader, - fixedColumns: data.XDATA_GRID.fixedColumns, - columnsDef: data.XCOLUMNS_DEF ? [...data.XCOLUMNS_DEF] : pv.columnsDef, - rows: pv.pageNumber == 1 ? [...(data.XROWS || [])] : [...pv.rows, ...(data.XROWS || [])], - groups: data.XGROUPS + ...data.XDATA_GRID, + columnsDef: data.XDATA_GRID.columnsDef ? [...data.XDATA_GRID.columnsDef] : pv.columnsDef, + rows: pv.pageNumber == 1 ? [...(data.XDATA_GRID.rows || [])] : [...pv.rows, ...(data.XDATA_GRID.rows || [])], + groups: data.XDATA_GRID.groups ? pv.pageNumber == 1 - ? [...data.XGROUPS] - : [...pv.groups, ...data.XGROUPS.filter(g => !pv.groups.find(pg => pg.name == g.name))] + ? [...data.XDATA_GRID.groups] + : [...pv.groups, ...data.XDATA_GRID.groups.filter(g => !pv.groups.find(pg => pg.name == g.name))] : [...pv.groups], dataLoaded: true, - reload: false, - morePages: (data.XROWS || []).length >= DATA_GRID_PAGE_SIZE + reloading: false, + morePages: (data.XDATA_GRID.rows || []).length >= DATA_GRID_PAGE_SIZE })); } - }, [dataGrid.reload, dataGrid.filters, dataGrid.orders, dataGrid.dataLoaded, dataGrid.pageNumber, executeStored, SERV_DATA_TYPE_CLOB]); + }, [dataGrid.reloading, dataGrid.filters, dataGrid.orders, dataGrid.dataLoaded, dataGrid.pageNumber, executeStored, SERV_DATA_TYPE_CLOB]); //При изменении состояния фильтра - const handleFilterChanged = ({ filters }) => setdataGrid(pv => ({ ...pv, filters: [...filters], pageNumber: 1, reload: true })); + const handleFilterChanged = ({ filters }) => setDataGrid(pv => ({ ...pv, filters: [...filters], pageNumber: 1, reloading: true })); //При изменении состояния сортировки - const handleOrderChanged = ({ orders }) => setdataGrid(pv => ({ ...pv, orders: [...orders], pageNumber: 1, reload: true })); + const handleOrderChanged = ({ orders }) => setDataGrid(pv => ({ ...pv, orders: [...orders], pageNumber: 1, reloading: true })); //При изменении количества отображаемых страниц - const handlePagesCountChanged = () => setdataGrid(pv => ({ ...pv, pageNumber: pv.pageNumber + 1, reload: true })); + const handlePagesCountChanged = () => setDataGrid(pv => ({ ...pv, pageNumber: pv.pageNumber + 1, reloading: true })); //При нажатии на копку контрагента const handleAgnButtonClicked = agnCode => pOnlineShowDocument({ unitCode: "AGNLIST", document: agnCode, inRnParameter: "in_AGNABBR" }); @@ -153,7 +152,7 @@ const DataGrid = ({ title }) => { //При необходимости обновить данные таблицы useEffect(() => { loadData(); - }, [dataGrid.reload, loadData]); + }, [dataGrid.reloading, loadData]); //Генерация содержимого return ( @@ -168,15 +167,8 @@ const DataGrid = ({ title }) => { { //Пример: Диаграмма Ганта "P8Gantt" const Gantt = ({ title }) => { //Собственное состояние - const [state, setState] = useState({ + const [gantt, setGantt] = useState({ init: false, dataLoaded: false, ident: null, - ganttDef: {}, - ganttTasks: [], useCustomTaskDialog: false }); @@ -113,21 +111,21 @@ const Gantt = ({ title }) => { const loadData = useCallback(async () => { const data = await executeStored({ stored: "PKG_P8PANELS_SAMPLES.GANTT", - args: { NIDENT: state.ident }, + args: { NIDENT: gantt.ident }, attributeValueProcessor: (name, val) => name == "numb" ? undefined : ["start", "end"].includes(name) ? formatDateJSONDateOnly(val) : val, respArg: "COUT" }); - setState(pv => ({ ...pv, dataLoaded: true, ganttDef: { ...data.XGANTT_DEF }, ganttTasks: [...data.XGANTT_TASKS] })); - }, [state.ident, executeStored]); + setGantt(pv => ({ ...pv, dataLoaded: true, ...data.XGANTT })); + }, [gantt.ident, executeStored]); //Инициализация данных диаграммы const initData = useCallback(async () => { - if (!state.init) { - const data = await executeStored({ stored: "PKG_P8PANELS_SAMPLES.GANTT_INIT", args: { NIDENT: state.ident } }); - setState(pv => ({ ...pv, init: true, ident: data.NIDENT })); + if (!gantt.init) { + const data = await executeStored({ stored: "PKG_P8PANELS_SAMPLES.GANTT_INIT", args: { NIDENT: gantt.ident } }); + setGantt(pv => ({ ...pv, init: true, ident: data.NIDENT })); } - }, [state.init, state.ident, executeStored]); + }, [gantt.init, gantt.ident, executeStored]); //Изменение данных диаграммы const modifyData = useCallback( @@ -135,13 +133,13 @@ const Gantt = ({ title }) => { try { await executeStored({ stored: "PKG_P8PANELS_SAMPLES.GANTT_MODIFY", - args: { NIDENT: state.ident, NRN: rn, DDATE_FROM: new Date(start), DDATE_TO: new Date(end) } + args: { NIDENT: gantt.ident, NRN: rn, DDATE_FROM: new Date(start), DDATE_TO: new Date(end) } }); } finally { loadData(); } }, - [state.ident, executeStored, loadData] + [gantt.ident, executeStored, loadData] ); //Обработка измненения сроков задачи в диаграмме Гантта @@ -151,8 +149,8 @@ const Gantt = ({ title }) => { //При необходимости обновить данные таблицы useEffect(() => { - if (state.ident) loadData(); - }, [state.ident, loadData]); + if (gantt.ident) loadData(); + }, [gantt.ident, loadData]); //При подключении компонента к странице useEffect(() => { @@ -168,20 +166,19 @@ const Gantt = ({ title }) => { setState(pv => ({ ...pv, useCustomTaskDialog: !pv.useCustomTaskDialog }))} />} + control={ setGantt(pv => ({ ...pv, useCustomTaskDialog: !pv.useCustomTaskDialog }))} />} label="Отображать пользовательский диалог задачи" /> - {state.dataLoaded ? ( + {gantt.dataLoaded ? ( ) : null} diff --git a/db/PKG_P8PANELS_EQUIPSRV.pck b/db/PKG_P8PANELS_EQUIPSRV.pck index e11f20d..6cd469f 100644 --- a/db/PKG_P8PANELS_EQUIPSRV.pck +++ b/db/PKG_P8PANELS_EQUIPSRV.pck @@ -227,10 +227,10 @@ create or replace package body PKG_P8PANELS_EQUIPSRV as NCOMPANY PKG_STD.TREF := GET_SESSION_COMPANY(); -- Рег. номер организации SPRJ_GROUP_NAME PKG_STD.TSTRING; -- Наименование группы для проекта BEXPANDED boolean; -- Флаг раскрытости уровня - RDG PKG_P8PANELS_VISUAL.TDATA_GRID; -- Описание таблицы - RDG_ROW_INFO PKG_P8PANELS_VISUAL.TROW; -- Строка таблицы с информацией по объекту ремонта - RDG_ROW_PLAN PKG_P8PANELS_VISUAL.TROW; -- Строка таблицы с планом по объекту ремонта - RDG_ROW_FACT PKG_P8PANELS_VISUAL.TROW; -- Строка таблицы с фактом по объекту ремонта + RDG PKG_P8PANELS_VISUAL.TDG; -- Описание таблицы + RDG_ROW_INFO PKG_P8PANELS_VISUAL.TDG_ROW; -- Строка таблицы с информацией по объекту ремонта + RDG_ROW_PLAN PKG_P8PANELS_VISUAL.TDG_ROW; -- Строка таблицы с планом по объекту ремонта + RDG_ROW_FACT PKG_P8PANELS_VISUAL.TDG_ROW; -- Строка таблицы с фактом по объекту ремонта NCURYEAR PKG_STD.TNUMBER; -- Текущий год NCURMONTH PKG_STD.TNUMBER; -- Текущий месяц NTOTALDAYS PKG_STD.TNUMBER; -- Дней в текущем месяце @@ -399,99 +399,99 @@ create or replace package body PKG_P8PANELS_EQUIPSRV as /* Определим дату конца периода */ NTODATE := LAST_DAY(TO_DATE('01.' || LPAD(TO_CHAR(NTOMONTH), 2, '0') || '.' || TO_CHAR(NTOYEAR), 'dd.mm.yyyy')); /* Инициализируем таблицу данных */ - RDG := PKG_P8PANELS_VISUAL.TDATA_GRID_MAKE(BFIXED_HEADER => true, NFIXED_COLUMNS => 2); + RDG := PKG_P8PANELS_VISUAL.TDG_MAKE(BFIXED_HEADER => true, NFIXED_COLUMNS => 2); /* Формируем структуру заголовка */ - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'SOBJINFO', - SCAPTION => 'Информация по объекту ремонта', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, - NWIDTH => 80); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'SINFO', - SCAPTION => 'Объект ремонта', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, - NWIDTH => 80); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'SWRKTYPE', - SCAPTION => 'Тип работ', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, - SPARENT => 'SINFO', - NWIDTH => 80); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'NRN', - SCAPTION => 'Рег. номер', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, - BVISIBLE => false); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'SWORKNAME', - SCAPTION => 'Наименование работы', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, - BVISIBLE => false); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'STECHOBJCODE', - SCAPTION => 'Код тех. объекта', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, - BVISIBLE => false); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'STECHOBJNAME', - SCAPTION => 'Наименование тех. объекта', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, - BVISIBLE => false); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'SBELONG', - SCAPTION => 'Принадлежность', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, - BVISIBLE => false); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'SPRODOBJ', - SCAPTION => 'Производственный объект', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, - BVISIBLE => false); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'STECHSERV', - SCAPTION => 'Тех. служба', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, - BVISIBLE => false); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'SRESPDEP', - SCAPTION => 'Отвественное подразделение', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, - BVISIBLE => false); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'STECSERVCODE', - SCAPTION => 'Вид ремонта', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, - BVISIBLE => false); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'DDATEPLANBEG', - SCAPTION => 'Начало работы (план)', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_DATE, - BVISIBLE => false); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'DDATEPLANEND', - SCAPTION => 'Окончание работы (план)', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_DATE, - BVISIBLE => false); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'DDATEFACTBEG', - SCAPTION => 'Начало работы (факт)', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_DATE, - BVISIBLE => false); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'DDATEFACTEND', - SCAPTION => 'Окончание работы (факт)', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_DATE, - BVISIBLE => false); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'STECSRVKINDCODE', - SCAPTION => 'Код типа работы', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, - BVISIBLE => false); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'STECSRVKINDNAME', - SCAPTION => 'Наименование типа работы', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, - BVISIBLE => false); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'SOBJINFO', + SCAPTION => 'Информация по объекту ремонта', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, + NWIDTH => 80); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'SINFO', + SCAPTION => 'Объект ремонта', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, + NWIDTH => 80); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'SWRKTYPE', + SCAPTION => 'Тип работ', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, + SPARENT => 'SINFO', + NWIDTH => 80); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'NRN', + SCAPTION => 'Рег. номер', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, + BVISIBLE => false); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'SWORKNAME', + SCAPTION => 'Наименование работы', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, + BVISIBLE => false); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'STECHOBJCODE', + SCAPTION => 'Код тех. объекта', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, + BVISIBLE => false); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'STECHOBJNAME', + SCAPTION => 'Наименование тех. объекта', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, + BVISIBLE => false); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'SBELONG', + SCAPTION => 'Принадлежность', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, + BVISIBLE => false); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'SPRODOBJ', + SCAPTION => 'Производственный объект', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, + BVISIBLE => false); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'STECHSERV', + SCAPTION => 'Тех. служба', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, + BVISIBLE => false); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'SRESPDEP', + SCAPTION => 'Отвественное подразделение', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, + BVISIBLE => false); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'STECSERVCODE', + SCAPTION => 'Вид ремонта', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, + BVISIBLE => false); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'DDATEPLANBEG', + SCAPTION => 'Начало работы (план)', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_DATE, + BVISIBLE => false); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'DDATEPLANEND', + SCAPTION => 'Окончание работы (план)', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_DATE, + BVISIBLE => false); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'DDATEFACTBEG', + SCAPTION => 'Начало работы (факт)', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_DATE, + BVISIBLE => false); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'DDATEFACTEND', + SCAPTION => 'Окончание работы (факт)', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_DATE, + BVISIBLE => false); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'STECSRVKINDCODE', + SCAPTION => 'Код типа работы', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, + BVISIBLE => false); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'STECSRVKINDNAME', + SCAPTION => 'Наименование типа работы', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, + BVISIBLE => false); /* Очистка коллекций */ PKG_CONTVALLOC1S.PURGE(RCONTAINER => YM); PKG_CONTVALLOC1S.PURGE(RCONTAINER => MCLR); @@ -530,12 +530,12 @@ create or replace package body PKG_P8PANELS_EQUIPSRV as else BEXPANDED := false; end if; - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => '_' || TO_CHAR(Y) || '_' || TO_CHAR(M), - SCAPTION => LPAD(TO_CHAR(M), 2, '0') || ' ' || TO_CHAR(Y), - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, - BEXPANDABLE => true, - BEXPANDED => BEXPANDED); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => '_' || TO_CHAR(Y) || '_' || TO_CHAR(M), + SCAPTION => LPAD(TO_CHAR(M), 2, '0') || ' ' || TO_CHAR(Y), + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, + BEXPANDABLE => true, + BEXPANDED => BEXPANDED); /* Подсчёт кол-ва дней в месяце */ NTOTALDAYS := TO_NUMBER(TO_CHAR(LAST_DAY(TO_DATE('01.' || LPAD(TO_CHAR(M), 2, '0') || '.' || TO_CHAR(Y), 'dd.mm.yyyy')), @@ -544,12 +544,11 @@ create or replace package body PKG_P8PANELS_EQUIPSRV as /* Цикл по дням месяца */ for D in 1 .. NTOTALDAYS loop - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => '_' || TO_CHAR(Y) || '_' || TO_CHAR(M) || '_' || - TO_CHAR(D), - SCAPTION => TO_CHAR(D, '99'), - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, - SPARENT => '_' || TO_CHAR(Y) || '_' || TO_CHAR(M)); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => '_' || TO_CHAR(Y) || '_' || TO_CHAR(M) || '_' || TO_CHAR(D), + SCAPTION => TO_CHAR(D, '99'), + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, + SPARENT => '_' || TO_CHAR(Y) || '_' || TO_CHAR(M)); end loop; end loop; end loop; @@ -573,7 +572,7 @@ create or replace package body PKG_P8PANELS_EQUIPSRV as if (NFROMYEAR = NTOYEAR) then NMS := NFROMMONTH; NME := NTOMONTH; - /* Иначе вычисляем кол-во месяцев в каждом году периода отчёта */ + /* Иначе вычисляем кол-во месяцев в каждом году периода отчёта */ else if (Y = NFROMYEAR) then NMS := NFROMMONTH; @@ -590,14 +589,14 @@ create or replace package body PKG_P8PANELS_EQUIPSRV as for M in NMS .. NME loop SPERIODNAME := '_' || TO_CHAR(Y) || '_' || TO_CHAR(M); - PKG_P8PANELS_VISUAL.TROW_ADD_COL(RROW => RDG_ROW_INFO, - SNAME => SPERIODNAME, - SVALUE => 'план: ' || HOURS_STR(NHOURS => TRUNC(PKG_CONTVALLOC1S.GETN(RCONTAINER => YM, - SROWID => SPERIODNAME || '_P'), - 1)) || ' факт: ' || - HOURS_STR(NHOURS => TRUNC(PKG_CONTVALLOC1S.GETN(RCONTAINER => YM, - SROWID => SPERIODNAME || '_F'), - 1))); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_COL(RROW => RDG_ROW_INFO, + SNAME => SPERIODNAME, + SVALUE => 'план: ' || HOURS_STR(NHOURS => TRUNC(PKG_CONTVALLOC1S.GETN(RCONTAINER => YM, + SROWID => SPERIODNAME || '_P'), + 1)) || ' факт: ' || + HOURS_STR(NHOURS => TRUNC(PKG_CONTVALLOC1S.GETN(RCONTAINER => YM, + SROWID => SPERIODNAME || '_F'), + 1))); /* Добавление в коллекцию трудоёмкость план */ PKG_CONTVALLOC1S.PUTN(RCONTAINER => YM, SROWID => SPERIODNAME || '_P', NVALUE => 0); /* Добавление в коллекцию трудоёмкость факт */ @@ -605,17 +604,17 @@ create or replace package body PKG_P8PANELS_EQUIPSRV as end loop; end loop; /* Добавление строки с трудоёмкостью */ - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_ROW(RDATA_GRID => RDG, RROW => RDG_ROW_INFO); + PKG_P8PANELS_VISUAL.TDG_ADD_ROW(RDATA_GRID => RDG, RROW => RDG_ROW_INFO); end if; /* Добавление группы с объектом ремонта */ SCURTECHOBJ := QQ.STECHOBJNAME; SPRJ_GROUP_NAME := SCURTECHOBJ; - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_GROUP(RDATA_GRID => RDG, - SNAME => SPRJ_GROUP_NAME, - SCAPTION => QQ.STECHOBJNAME, - BEXPANDABLE => false); - RDG_ROW_INFO := PKG_P8PANELS_VISUAL.TROW_MAKE(SGROUP => SPRJ_GROUP_NAME); - PKG_P8PANELS_VISUAL.TROW_ADD_COL(RROW => RDG_ROW_INFO, SNAME => 'SOBJINFO', SVALUE => SCURTECHOBJ); + PKG_P8PANELS_VISUAL.TDG_ADD_GROUP(RDATA_GRID => RDG, + SNAME => SPRJ_GROUP_NAME, + SCAPTION => QQ.STECHOBJNAME, + BEXPANDABLE => false); + RDG_ROW_INFO := PKG_P8PANELS_VISUAL.TDG_ROW_MAKE(SGROUP => SPRJ_GROUP_NAME); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_COL(RROW => RDG_ROW_INFO, SNAME => 'SOBJINFO', SVALUE => SCURTECHOBJ); end if; /* Формируем имя группы для вида ремонта */ SCURTSKCODE := SCURTECHOBJ || '_' || QQ.STECSRVKINDCODE; @@ -623,7 +622,7 @@ create or replace package body PKG_P8PANELS_EQUIPSRV as if (PKG_CONTVALLOC1S.EXISTS_(RCONTAINER => GF, SROWID => SCURTSKCODE) = false) then /* Добавляем строку плана */ if (RDG_ROW_PLAN.RCOLS is not null) then - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_ROW(RDATA_GRID => RDG, RROW => RDG_ROW_PLAN); + PKG_P8PANELS_VISUAL.TDG_ADD_ROW(RDATA_GRID => RDG, RROW => RDG_ROW_PLAN); end if; /* Добавляем строку факта */ if (RDG_ROW_FACT.RCOLS is not null) then @@ -631,27 +630,27 @@ create or replace package body PKG_P8PANELS_EQUIPSRV as /* Цикл по коллекции для закрашивания месяцев */ for Z in 1 .. PKG_CONTVALLOC1S.COUNT_(RCONTAINER => MCLR) loop - PKG_P8PANELS_VISUAL.TROW_ADD_COL(RROW => RDG_ROW_FACT, - SNAME => CR, - SVALUE => PKG_CONTVALLOC1S.GETS(RCONTAINER => MCLR, SROWID => CR)); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_COL(RROW => RDG_ROW_FACT, + SNAME => CR, + SVALUE => PKG_CONTVALLOC1S.GETS(RCONTAINER => MCLR, SROWID => CR)); CR := PKG_CONTVALLOC1S.NEXT_(RCONTAINER => MCLR, SROWID => CR); end loop; - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_ROW(RDATA_GRID => RDG, RROW => RDG_ROW_FACT); + PKG_P8PANELS_VISUAL.TDG_ADD_ROW(RDATA_GRID => RDG, RROW => RDG_ROW_FACT); end if; PKG_CONTVALLOC1S.PURGE(RCONTAINER => MCLR); /* Добвим группу для вида ремонта */ SPRJ_GROUP_NAME := SCURTSKCODE; - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_GROUP(RDATA_GRID => RDG, - SNAME => SPRJ_GROUP_NAME, - SCAPTION => QQ.STECSRVKINDCODE, - BEXPANDABLE => false); + PKG_P8PANELS_VISUAL.TDG_ADD_GROUP(RDATA_GRID => RDG, + SNAME => SPRJ_GROUP_NAME, + SCAPTION => QQ.STECSRVKINDCODE, + BEXPANDABLE => false); /* Строка плана */ - RDG_ROW_PLAN := PKG_P8PANELS_VISUAL.TROW_MAKE(SGROUP => SPRJ_GROUP_NAME); - PKG_P8PANELS_VISUAL.TROW_ADD_COL(RROW => RDG_ROW_PLAN, SNAME => 'SOBJINFO', SVALUE => QQ.STECSRVKINDCODE); - PKG_P8PANELS_VISUAL.TROW_ADD_COL(RROW => RDG_ROW_PLAN, SNAME => 'SWRKTYPE', SVALUE => 'План'); + RDG_ROW_PLAN := PKG_P8PANELS_VISUAL.TDG_ROW_MAKE(SGROUP => SPRJ_GROUP_NAME); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_COL(RROW => RDG_ROW_PLAN, SNAME => 'SOBJINFO', SVALUE => QQ.STECSRVKINDCODE); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_COL(RROW => RDG_ROW_PLAN, SNAME => 'SWRKTYPE', SVALUE => 'План'); /* Строка факта */ - RDG_ROW_FACT := PKG_P8PANELS_VISUAL.TROW_MAKE(SGROUP => SPRJ_GROUP_NAME); - PKG_P8PANELS_VISUAL.TROW_ADD_COL(RROW => RDG_ROW_FACT, SNAME => 'SWRKTYPE', SVALUE => 'Факт'); + RDG_ROW_FACT := PKG_P8PANELS_VISUAL.TDG_ROW_MAKE(SGROUP => SPRJ_GROUP_NAME); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_COL(RROW => RDG_ROW_FACT, SNAME => 'SWRKTYPE', SVALUE => 'Факт'); /* Добавляем в заполненные группы */ PKG_CONTVALLOC1S.PUTS(RCONTAINER => GF, SROWID => SPRJ_GROUP_NAME, SVALUE => ''); end if; @@ -676,7 +675,7 @@ create or replace package body PKG_P8PANELS_EQUIPSRV as /* Закрашивание месяца плана синим */ if (PKG_CONTVALLOC1S.EXISTS_(RCONTAINER => COLS, SROWID => SPRJ_GROUP_NAME || ' ' || SPERIODNAME || ' PLAN') = false) then - PKG_P8PANELS_VISUAL.TROW_ADD_COL(RROW => RDG_ROW_PLAN, SNAME => SPERIODNAME, SVALUE => 'blue'); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_COL(RROW => RDG_ROW_PLAN, SNAME => SPERIODNAME, SVALUE => 'blue'); PKG_CONTVALLOC1S.PUTS(RCONTAINER => COLS, SROWID => SPRJ_GROUP_NAME || ' ' || SPERIODNAME || ' PLAN', SVALUE => ''); @@ -686,7 +685,7 @@ create or replace package body PKG_P8PANELS_EQUIPSRV as /* Закрашивание дня плана синим */ if (PKG_CONTVALLOC1S.EXISTS_(RCONTAINER => COLS, SROWID => SPRJ_GROUP_NAME || ' ' || SPERIODNAME || ' PLAN') = false) then - PKG_P8PANELS_VISUAL.TROW_ADD_COL(RROW => RDG_ROW_PLAN, SNAME => SPERIODNAME, SVALUE => 'blue'); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_COL(RROW => RDG_ROW_PLAN, SNAME => SPERIODNAME, SVALUE => 'blue'); PKG_CONTVALLOC1S.PUTS(RCONTAINER => COLS, SROWID => SPRJ_GROUP_NAME || ' ' || SPERIODNAME || ' PLAN', SVALUE => ''); @@ -783,37 +782,37 @@ create or replace package body PKG_P8PANELS_EQUIPSRV as for M in NMS .. NME loop SPERIODNAME := '_' || TO_CHAR(Y) || '_' || TO_CHAR(M); - PKG_P8PANELS_VISUAL.TROW_ADD_COL(RROW => RDG_ROW_INFO, - SNAME => SPERIODNAME, - SVALUE => 'план: ' || HOURS_STR(NHOURS => TRUNC(PKG_CONTVALLOC1S.GETN(RCONTAINER => YM, - SROWID => SPERIODNAME || '_P'), - 1)) || ' факт: ' || - HOURS_STR(NHOURS => TRUNC(PKG_CONTVALLOC1S.GETN(RCONTAINER => YM, - SROWID => SPERIODNAME || '_F'), - 1))); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_COL(RROW => RDG_ROW_INFO, + SNAME => SPERIODNAME, + SVALUE => 'план: ' || HOURS_STR(NHOURS => TRUNC(PKG_CONTVALLOC1S.GETN(RCONTAINER => YM, + SROWID => SPERIODNAME || '_P'), + 1)) || ' факт: ' || + HOURS_STR(NHOURS => TRUNC(PKG_CONTVALLOC1S.GETN(RCONTAINER => YM, + SROWID => SPERIODNAME || '_F'), + 1))); end loop; end loop; - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_ROW(RDATA_GRID => RDG, RROW => RDG_ROW_INFO); + PKG_P8PANELS_VISUAL.TDG_ADD_ROW(RDATA_GRID => RDG, RROW => RDG_ROW_INFO); end if; /* План для последней записи */ if ((RDG_ROW_PLAN.RCOLS is not null) and (NROWS = 0)) then - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_ROW(RDATA_GRID => RDG, RROW => RDG_ROW_PLAN); + PKG_P8PANELS_VISUAL.TDG_ADD_ROW(RDATA_GRID => RDG, RROW => RDG_ROW_PLAN); end if; /* Факт для последней записи */ if ((RDG_ROW_FACT.RCOLS is not null) and (NROWS = 0)) then CR := PKG_CONTVALLOC1S.FIRST_(RCONTAINER => MCLR); for Z in 1 .. PKG_CONTVALLOC1S.COUNT_(RCONTAINER => MCLR) loop - PKG_P8PANELS_VISUAL.TROW_ADD_COL(RROW => RDG_ROW_FACT, - SNAME => CR, - SVALUE => PKG_CONTVALLOC1S.GETS(RCONTAINER => MCLR, SROWID => CR)); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_COL(RROW => RDG_ROW_FACT, + SNAME => CR, + SVALUE => PKG_CONTVALLOC1S.GETS(RCONTAINER => MCLR, SROWID => CR)); CR := PKG_CONTVALLOC1S.NEXT_(RCONTAINER => MCLR, SROWID => CR); end loop; - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_ROW(RDATA_GRID => RDG, RROW => RDG_ROW_FACT); + PKG_P8PANELS_VISUAL.TDG_ADD_ROW(RDATA_GRID => RDG, RROW => RDG_ROW_FACT); end if; end loop; /* Сериализуем описание */ - COUT := PKG_P8PANELS_VISUAL.TDATA_GRID_TO_XML(RDATA_GRID => RDG, NINCLUDE_DEF => 1); + COUT := PKG_P8PANELS_VISUAL.TDG_TO_XML(RDATA_GRID => RDG, NINCLUDE_DEF => 1); /* Очищаем контейнеры */ PKG_CONTVALLOC1S.PURGE(RCONTAINER => YM); PKG_CONTVALLOC1S.PURGE(RCONTAINER => MCLR); diff --git a/db/PKG_P8PANELS_MECHREC.pck b/db/PKG_P8PANELS_MECHREC.pck index 74db9ce..ce4dcf8 100644 --- a/db/PKG_P8PANELS_MECHREC.pck +++ b/db/PKG_P8PANELS_MECHREC.pck @@ -390,7 +390,7 @@ create or replace package body PKG_P8PANELS_MECHREC as TDAYS(TDAYS.LAST).DDATE := DDATE; TDAYS(TDAYS.LAST).NVALUE := NVALUE; TDAYS(TDAYS.LAST).NTYPE := NTYPE; - end TJOB_DAYS_ADD; + end TJOB_DAYS_ADD; /* Инциализация списка маршрутных листов (с иерархией) */ procedure UTL_FCROUTLST_IDENT_INIT @@ -911,9 +911,9 @@ create or replace package body PKG_P8PANELS_MECHREC as ) is NCOMPANY PKG_STD.TREF := GET_SESSION_COMPANY(); -- Организация сеанса - RO PKG_P8PANELS_VISUAL.TORDERS; -- Сортировки - RDG PKG_P8PANELS_VISUAL.TDATA_GRID; -- Описание таблицы - RDG_ROW PKG_P8PANELS_VISUAL.TROW; -- Строка таблицы + RO PKG_P8PANELS_VISUAL.TDG_ORDERS; -- Сортировки + RDG PKG_P8PANELS_VISUAL.TDG; -- Описание таблицы + RDG_ROW PKG_P8PANELS_VISUAL.TDG_ROW; -- Строка таблицы NROW_FROM PKG_STD.TREF; -- Номер строки с NROW_TO PKG_STD.TREF; -- Номер строки по CSQL clob; -- Буфер для запроса @@ -921,62 +921,62 @@ create or replace package body PKG_P8PANELS_MECHREC as NFCROUTLST_IDENT PKG_STD.TREF; -- Рег. номер идентификатора отмеченных записей маршрутных листов begin /* Читем сортировки */ - RO := PKG_P8PANELS_VISUAL.TORDERS_FROM_XML(CORDERS => CORDERS); + RO := PKG_P8PANELS_VISUAL.TDG_ORDERS_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(); + RDG := PKG_P8PANELS_VISUAL.TDG_MAKE(); /* Описываем колонки таблицы данных */ - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'NRN', - SCAPTION => 'Рег. номер', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, - BVISIBLE => false); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'SDOC_INFO', - SCAPTION => 'Накладная', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, - BVISIBLE => true); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'NRN', + SCAPTION => 'Рег. номер', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, + BVISIBLE => false); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'SDOC_INFO', + SCAPTION => 'Накладная', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, + BVISIBLE => true); /* Если тип "Приход из подразделений и маршрутные листы", то необходимо включать состояние */ if (NTYPE = NTASK_TYPE_INC_DEPS_RL) then - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'SDOC_STATE', - SCAPTION => 'Состояние', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, - BVISIBLE => true); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'SDOC_STATE', + SCAPTION => 'Состояние', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, + BVISIBLE => true); end if; - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'DWORK_DATE', - SCAPTION => 'Дата сдачи', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_DATE, - BVISIBLE => true, - BORDER => true); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'SDOC_VALID_INFO', - SCAPTION => 'Маршрутный лист', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, - BVISIBLE => true); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'SOUT_DEPARTMENT', - SCAPTION => 'Сдающий цех', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, - BVISIBLE => true, - BORDER => true); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'SSTORE', - SCAPTION => 'Склад цеха потребителя', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, - BVISIBLE => true, - BORDER => true); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'NQUANT_FACT', - SCAPTION => 'Количество сдано', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, - BVISIBLE => true, - BORDER => true); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'DWORK_DATE', + SCAPTION => 'Дата сдачи', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_DATE, + BVISIBLE => true, + BORDER => true); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'SDOC_VALID_INFO', + SCAPTION => 'Маршрутный лист', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, + BVISIBLE => true); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'SOUT_DEPARTMENT', + SCAPTION => 'Сдающий цех', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, + BVISIBLE => true, + BORDER => true); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'SSTORE', + SCAPTION => 'Склад цеха потребителя', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, + BVISIBLE => true, + BORDER => true); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'NQUANT_FACT', + SCAPTION => 'Количество сдано', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, + BVISIBLE => true, + BORDER => true); /* Инициализируем список маршрутных листов */ UTL_FCROUTLST_IDENT_INIT(NFCPRODPLANSP => NFCPRODPLANSP, NIDENT => NFCROUTLST_IDENT); /* Обходим данные */ @@ -1034,7 +1034,10 @@ create or replace package body PKG_P8PANELS_MECHREC as PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' %ORDER_BY%) D) F'); PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' 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.TDG_ORDERS_SET_QUERY(RDATA_GRID => RDG, + RORDERS => RO, + SPATTERN => '%ORDER_BY%', + CSQL => CSQL); /* Разбираем его */ ICURSOR := PKG_SQL_DML.OPEN_CURSOR(SWHAT => 'SELECT'); PKG_SQL_DML.PARSE(ICURSOR => ICURSOR, SQUERY => CSQL); @@ -1062,41 +1065,44 @@ create or replace package body PKG_P8PANELS_MECHREC as while (PKG_SQL_DML.FETCH_ROWS(ICURSOR => ICURSOR) > 0) loop /* Добавляем колонки с данными */ - PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLN(RROW => RDG_ROW, - SNAME => 'NRN', - ICURSOR => ICURSOR, - NPOSITION => 1, - BCLEAR => true); - PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLS(RROW => RDG_ROW, - SNAME => 'SDOC_INFO', - ICURSOR => ICURSOR, - NPOSITION => 2); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLN(RROW => RDG_ROW, + SNAME => 'NRN', + ICURSOR => ICURSOR, + NPOSITION => 1, + BCLEAR => true); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLS(RROW => RDG_ROW, + SNAME => 'SDOC_INFO', + ICURSOR => ICURSOR, + NPOSITION => 2); /* Если тип "Приход из подразделений и маршрутные листы", то необходимо включать состояние */ if (NTYPE = NTASK_TYPE_INC_DEPS_RL) then - PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLS(RROW => RDG_ROW, - SNAME => 'SDOC_STATE', - ICURSOR => ICURSOR, - NPOSITION => 3); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLS(RROW => RDG_ROW, + SNAME => 'SDOC_STATE', + ICURSOR => ICURSOR, + NPOSITION => 3); end if; - PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLD(RROW => RDG_ROW, - SNAME => 'DWORK_DATE', - ICURSOR => ICURSOR, - NPOSITION => 4); - PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLS(RROW => RDG_ROW, - SNAME => 'SDOC_VALID_INFO', - ICURSOR => ICURSOR, - NPOSITION => 5); - PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLS(RROW => RDG_ROW, - SNAME => 'SOUT_DEPARTMENT', - ICURSOR => ICURSOR, - NPOSITION => 6); - PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLS(RROW => RDG_ROW, SNAME => 'SSTORE', ICURSOR => ICURSOR, NPOSITION => 7); - PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLN(RROW => RDG_ROW, - SNAME => 'NQUANT_FACT', - ICURSOR => ICURSOR, - NPOSITION => 8); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLD(RROW => RDG_ROW, + SNAME => 'DWORK_DATE', + ICURSOR => ICURSOR, + NPOSITION => 4); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLS(RROW => RDG_ROW, + SNAME => 'SDOC_VALID_INFO', + ICURSOR => ICURSOR, + NPOSITION => 5); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLS(RROW => RDG_ROW, + SNAME => 'SOUT_DEPARTMENT', + ICURSOR => ICURSOR, + NPOSITION => 6); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLS(RROW => RDG_ROW, + SNAME => 'SSTORE', + ICURSOR => ICURSOR, + NPOSITION => 7); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLN(RROW => RDG_ROW, + SNAME => 'NQUANT_FACT', + ICURSOR => ICURSOR, + NPOSITION => 8); /* Добавляем строку в таблицу */ - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_ROW(RDATA_GRID => RDG, RROW => RDG_ROW); + PKG_P8PANELS_VISUAL.TDG_ADD_ROW(RDATA_GRID => RDG, RROW => RDG_ROW); end loop; exception when others then @@ -1106,7 +1112,7 @@ create or replace package body PKG_P8PANELS_MECHREC as /* Очищаем отмеченные маршрутные листы */ P_SELECTLIST_CLEAR(NIDENT => NFCROUTLST_IDENT); /* Сериализуем описание */ - COUT := PKG_P8PANELS_VISUAL.TDATA_GRID_TO_XML(RDATA_GRID => RDG, NINCLUDE_DEF => NINCLUDE_DEF); + COUT := PKG_P8PANELS_VISUAL.TDG_TO_XML(RDATA_GRID => RDG, NINCLUDE_DEF => NINCLUDE_DEF); exception when others then /* Очищаем отмеченные маршрутные листы */ @@ -1126,71 +1132,71 @@ create or replace package body PKG_P8PANELS_MECHREC as ) is NCOMPANY PKG_STD.TREF := GET_SESSION_COMPANY(); -- Организация сеанса - RO PKG_P8PANELS_VISUAL.TORDERS; -- Сортировки - RDG PKG_P8PANELS_VISUAL.TDATA_GRID; -- Описание таблицы - RDG_ROW PKG_P8PANELS_VISUAL.TROW; -- Строка таблицы + RO PKG_P8PANELS_VISUAL.TDG_ORDERS; -- Сортировки + RDG PKG_P8PANELS_VISUAL.TDG; -- Описание таблицы + RDG_ROW PKG_P8PANELS_VISUAL.TDG_ROW; -- Строка таблицы NROW_FROM PKG_STD.TREF; -- Номер строки с NROW_TO PKG_STD.TREF; -- Номер строки по CSQL clob; -- Буфер для запроса ICURSOR integer; -- Курсор для исполнения запроса begin /* Читем сортировки */ - RO := PKG_P8PANELS_VISUAL.TORDERS_FROM_XML(CORDERS => CORDERS); + RO := PKG_P8PANELS_VISUAL.TDG_ORDERS_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(); + RDG := PKG_P8PANELS_VISUAL.TDG_MAKE(); /* Описываем колонки таблицы данных */ - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'NRN', - SCAPTION => 'Рег. номер', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, - BVISIBLE => false); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'SMATRESPL_CODE', - SCAPTION => 'Обозначение', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, - BVISIBLE => true); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'SMATRESPL_NAME', - SCAPTION => 'Наименование', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, - BVISIBLE => true, - BORDER => true); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'NPROD_QUANT', - SCAPTION => 'Применяемость', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, - BVISIBLE => true); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'NQUANT_PLAN', - SCAPTION => 'Количество план', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, - BVISIBLE => true); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'NREST', - SCAPTION => 'Остаток', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, - BVISIBLE => true); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'NQUANT_FACT', - SCAPTION => 'Скомплектовано', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, - BVISIBLE => true, - BORDER => true); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'DRES_DATE_TO', - SCAPTION => 'Зарезервировано', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_DATE, - BVISIBLE => true); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'SMATRESPL_NOMEN', - SCAPTION => 'Номенклатура', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, - BVISIBLE => true); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'NRN', + SCAPTION => 'Рег. номер', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, + BVISIBLE => false); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'SMATRESPL_CODE', + SCAPTION => 'Обозначение', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, + BVISIBLE => true); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'SMATRESPL_NAME', + SCAPTION => 'Наименование', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, + BVISIBLE => true, + BORDER => true); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'NPROD_QUANT', + SCAPTION => 'Применяемость', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, + BVISIBLE => true); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'NQUANT_PLAN', + SCAPTION => 'Количество план', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, + BVISIBLE => true); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'NREST', + SCAPTION => 'Остаток', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, + BVISIBLE => true); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'NQUANT_FACT', + SCAPTION => 'Скомплектовано', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, + BVISIBLE => true, + BORDER => true); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'DRES_DATE_TO', + SCAPTION => 'Зарезервировано', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_DATE, + BVISIBLE => true); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'SMATRESPL_NOMEN', + SCAPTION => 'Номенклатура', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, + BVISIBLE => true); /* Обходим данные */ begin /* Добавляем подсказку совместимости */ @@ -1228,7 +1234,10 @@ create or replace package body PKG_P8PANELS_MECHREC as PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' %ORDER_BY%) D) F'); PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' 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.TDG_ORDERS_SET_QUERY(RDATA_GRID => RDG, + RORDERS => RO, + SPATTERN => '%ORDER_BY%', + CSQL => CSQL); /* Разбираем его */ ICURSOR := PKG_SQL_DML.OPEN_CURSOR(SWHAT => 'SELECT'); PKG_SQL_DML.PARSE(ICURSOR => ICURSOR, SQUERY => CSQL); @@ -1256,42 +1265,42 @@ create or replace package body PKG_P8PANELS_MECHREC as while (PKG_SQL_DML.FETCH_ROWS(ICURSOR => ICURSOR) > 0) loop /* Добавляем колонки с данными */ - PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLN(RROW => RDG_ROW, - SNAME => 'NRN', - ICURSOR => ICURSOR, - NPOSITION => 1, - BCLEAR => true); - PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLD(RROW => RDG_ROW, - SNAME => 'DRES_DATE_TO', - ICURSOR => ICURSOR, - NPOSITION => 2); - PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLS(RROW => RDG_ROW, - SNAME => 'SMATRESPL_NOMEN', - ICURSOR => ICURSOR, - NPOSITION => 3); - PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLS(RROW => RDG_ROW, - SNAME => 'SMATRESPL_CODE', - ICURSOR => ICURSOR, - NPOSITION => 4); - PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLS(RROW => RDG_ROW, - SNAME => 'SMATRESPL_NAME', - ICURSOR => ICURSOR, - NPOSITION => 5); - PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLN(RROW => RDG_ROW, - SNAME => 'NPROD_QUANT', - ICURSOR => ICURSOR, - NPOSITION => 6); - PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLN(RROW => RDG_ROW, - SNAME => 'NQUANT_PLAN', - ICURSOR => ICURSOR, - NPOSITION => 7); - PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLN(RROW => RDG_ROW, SNAME => 'NREST', ICURSOR => ICURSOR, NPOSITION => 8); - PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLN(RROW => RDG_ROW, - SNAME => 'NQUANT_FACT', - ICURSOR => ICURSOR, - NPOSITION => 9); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLN(RROW => RDG_ROW, + SNAME => 'NRN', + ICURSOR => ICURSOR, + NPOSITION => 1, + BCLEAR => true); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLD(RROW => RDG_ROW, + SNAME => 'DRES_DATE_TO', + ICURSOR => ICURSOR, + NPOSITION => 2); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLS(RROW => RDG_ROW, + SNAME => 'SMATRESPL_NOMEN', + ICURSOR => ICURSOR, + NPOSITION => 3); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLS(RROW => RDG_ROW, + SNAME => 'SMATRESPL_CODE', + ICURSOR => ICURSOR, + NPOSITION => 4); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLS(RROW => RDG_ROW, + SNAME => 'SMATRESPL_NAME', + ICURSOR => ICURSOR, + NPOSITION => 5); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLN(RROW => RDG_ROW, + SNAME => 'NPROD_QUANT', + ICURSOR => ICURSOR, + NPOSITION => 6); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLN(RROW => RDG_ROW, + SNAME => 'NQUANT_PLAN', + ICURSOR => ICURSOR, + NPOSITION => 7); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLN(RROW => RDG_ROW, SNAME => 'NREST', ICURSOR => ICURSOR, NPOSITION => 8); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLN(RROW => RDG_ROW, + SNAME => 'NQUANT_FACT', + ICURSOR => ICURSOR, + NPOSITION => 9); /* Добавляем строку в таблицу */ - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_ROW(RDATA_GRID => RDG, RROW => RDG_ROW); + PKG_P8PANELS_VISUAL.TDG_ADD_ROW(RDATA_GRID => RDG, RROW => RDG_ROW); end loop; exception when others then @@ -1299,7 +1308,7 @@ create or replace package body PKG_P8PANELS_MECHREC as raise; end; /* Сериализуем описание */ - COUT := PKG_P8PANELS_VISUAL.TDATA_GRID_TO_XML(RDATA_GRID => RDG, NINCLUDE_DEF => NINCLUDE_DEF); + COUT := PKG_P8PANELS_VISUAL.TDG_TO_XML(RDATA_GRID => RDG, NINCLUDE_DEF => NINCLUDE_DEF); end FCDELIVERYLISTSP_DG_GET; /* Получение таблицы товарных запасов на основании маршрутного листа */ @@ -1317,9 +1326,9 @@ create or replace package body PKG_P8PANELS_MECHREC as NSTORAGE_IN PKG_STD.TREF; -- Рег. номер склада получения NNOMENCLATURE PKG_STD.TREF; -- Рег. номер номенклатуры основного материала NCOMPANY PKG_STD.TREF := GET_SESSION_COMPANY(); -- Организация сеанса - RO PKG_P8PANELS_VISUAL.TORDERS; -- Сортировки - RDG PKG_P8PANELS_VISUAL.TDATA_GRID; -- Описание таблицы - RDG_ROW PKG_P8PANELS_VISUAL.TROW; -- Строка таблицы + RO PKG_P8PANELS_VISUAL.TDG_ORDERS; -- Сортировки + RDG PKG_P8PANELS_VISUAL.TDG; -- Описание таблицы + RDG_ROW PKG_P8PANELS_VISUAL.TDG_ROW; -- Строка таблицы NROW_FROM PKG_STD.TREF; -- Номер строки с NROW_TO PKG_STD.TREF; -- Номер строки по CSQL clob; -- Буфер для запроса @@ -1352,50 +1361,50 @@ create or replace package body PKG_P8PANELS_MECHREC as /* Инициализируем даты */ DDATE := TRUNC(sysdate); /* Читем сортировки */ - RO := PKG_P8PANELS_VISUAL.TORDERS_FROM_XML(CORDERS => CORDERS); + RO := PKG_P8PANELS_VISUAL.TDG_ORDERS_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); /* Описываем колонки таблицы данных */ - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'SINDOC', - SCAPTION => 'Партия', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, - BVISIBLE => true, - BORDER => true); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'SSTORE', - SCAPTION => 'Склад', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, - BVISIBLE => true, - BORDER => true); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'NSALE', - SCAPTION => 'К продаже', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, - BVISIBLE => true, - BORDER => true); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'NRESTFACT', - SCAPTION => 'Фактический остаток', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, - BVISIBLE => true, - BORDER => true); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'NRESERV', - SCAPTION => 'Резерв', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, - BVISIBLE => true, - BORDER => true, - BFILTER => false); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'SPRICEMEAS', - SCAPTION => 'Единица измерения', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, - BVISIBLE => true, - BORDER => true); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'SINDOC', + SCAPTION => 'Партия', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, + BVISIBLE => true, + BORDER => true); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'SSTORE', + SCAPTION => 'Склад', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, + BVISIBLE => true, + BORDER => true); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'NSALE', + SCAPTION => 'К продаже', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, + BVISIBLE => true, + BORDER => true); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'NRESTFACT', + SCAPTION => 'Фактический остаток', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, + BVISIBLE => true, + BORDER => true); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'NRESERV', + SCAPTION => 'Резерв', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, + BVISIBLE => true, + BORDER => true, + BFILTER => false); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'SPRICEMEAS', + SCAPTION => 'Единица измерения', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, + BVISIBLE => true, + BORDER => true); /* Обходим данные */ begin /* Добавляем подсказку совместимости */ @@ -1454,7 +1463,10 @@ create or replace package body PKG_P8PANELS_MECHREC as PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' %ORDER_BY%) D) F'); PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' 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.TDG_ORDERS_SET_QUERY(RDATA_GRID => RDG, + RORDERS => RO, + SPATTERN => '%ORDER_BY%', + CSQL => CSQL); /* Разбираем его */ ICURSOR := PKG_SQL_DML.OPEN_CURSOR(SWHAT => 'SELECT'); PKG_SQL_DML.PARSE(ICURSOR => ICURSOR, SQUERY => CSQL); @@ -1482,24 +1494,30 @@ create or replace package body PKG_P8PANELS_MECHREC as while (PKG_SQL_DML.FETCH_ROWS(ICURSOR => ICURSOR) > 0) loop /* Добавляем колонки с данными */ - PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLS(RROW => RDG_ROW, - SNAME => 'SINDOC', - ICURSOR => ICURSOR, - NPOSITION => 1, - BCLEAR => true); - PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLS(RROW => RDG_ROW, SNAME => 'SSTORE', ICURSOR => ICURSOR, NPOSITION => 2); - PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLN(RROW => RDG_ROW, SNAME => 'NSALE', ICURSOR => ICURSOR, NPOSITION => 3); - PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLN(RROW => RDG_ROW, - SNAME => 'NRESTFACT', - ICURSOR => ICURSOR, - NPOSITION => 4); - PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLN(RROW => RDG_ROW, SNAME => 'NRESERV', ICURSOR => ICURSOR, NPOSITION => 5); - PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLS(RROW => RDG_ROW, - SNAME => 'SPRICEMEAS', - ICURSOR => ICURSOR, - NPOSITION => 6); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLS(RROW => RDG_ROW, + SNAME => 'SINDOC', + ICURSOR => ICURSOR, + NPOSITION => 1, + BCLEAR => true); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLS(RROW => RDG_ROW, + SNAME => 'SSTORE', + ICURSOR => ICURSOR, + NPOSITION => 2); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLN(RROW => RDG_ROW, SNAME => 'NSALE', ICURSOR => ICURSOR, NPOSITION => 3); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLN(RROW => RDG_ROW, + SNAME => 'NRESTFACT', + ICURSOR => ICURSOR, + NPOSITION => 4); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLN(RROW => RDG_ROW, + SNAME => 'NRESERV', + ICURSOR => ICURSOR, + NPOSITION => 5); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLS(RROW => RDG_ROW, + SNAME => 'SPRICEMEAS', + ICURSOR => ICURSOR, + NPOSITION => 6); /* Добавляем строку в таблицу */ - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_ROW(RDATA_GRID => RDG, RROW => RDG_ROW); + PKG_P8PANELS_VISUAL.TDG_ADD_ROW(RDATA_GRID => RDG, RROW => RDG_ROW); end loop; exception when others then @@ -1507,7 +1525,7 @@ create or replace package body PKG_P8PANELS_MECHREC as raise; end; /* Сериализуем описание */ - COUT := PKG_P8PANELS_VISUAL.TDATA_GRID_TO_XML(RDATA_GRID => RDG, NINCLUDE_DEF => NINCLUDE_DEF); + COUT := PKG_P8PANELS_VISUAL.TDG_TO_XML(RDATA_GRID => RDG, NINCLUDE_DEF => NINCLUDE_DEF); end GOODSPARTIES_DG_GET; /* Получение таблицы маршрутных листов, связанных со спецификацией плана (по детали) */ @@ -1522,71 +1540,71 @@ create or replace package body PKG_P8PANELS_MECHREC as ) is NCOMPANY PKG_STD.TREF := GET_SESSION_COMPANY(); -- Организация сеанса - RO PKG_P8PANELS_VISUAL.TORDERS; -- Сортировки - RDG PKG_P8PANELS_VISUAL.TDATA_GRID; -- Описание таблицы - RDG_ROW PKG_P8PANELS_VISUAL.TROW; -- Строка таблицы + RO PKG_P8PANELS_VISUAL.TDG_ORDERS; -- Сортировки + RDG PKG_P8PANELS_VISUAL.TDG; -- Описание таблицы + RDG_ROW PKG_P8PANELS_VISUAL.TDG_ROW; -- Строка таблицы NROW_FROM PKG_STD.TREF; -- Номер строки с NROW_TO PKG_STD.TREF; -- Номер строки по CSQL clob; -- Буфер для запроса ICURSOR integer; -- Курсор для исполнения запроса begin /* Читем сортировки */ - RO := PKG_P8PANELS_VISUAL.TORDERS_FROM_XML(CORDERS => CORDERS); + RO := PKG_P8PANELS_VISUAL.TDG_ORDERS_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(); + RDG := PKG_P8PANELS_VISUAL.TDG_MAKE(); /* Описываем колонки таблицы данных */ - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'NRN', - SCAPTION => 'Рег. номер', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, - BVISIBLE => false); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'SDOCPREF', - SCAPTION => 'Префикс', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, - BVISIBLE => true, - BORDER => true); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'SDOCNUMB', - SCAPTION => 'Номер', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, - BVISIBLE => true, - BORDER => true); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'DEXEC_DATE', - SCAPTION => 'Дата запуска', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_DATE, - BVISIBLE => true, - BORDER => true); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'SMATRES_PLAN_NOMEN', - SCAPTION => 'Номенклатура основного материала', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, - BVISIBLE => true, - BORDER => true); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'SMATRES_PLAN_NAME', - SCAPTION => 'Наименование основного материала', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, - BVISIBLE => true, - BORDER => true); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'NQUANT', - SCAPTION => 'Количество запуска', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, - BVISIBLE => true, - BORDER => true); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'NQUANT_PLAN', - SCAPTION => 'Выдать по норме', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, - BVISIBLE => true, - BORDER => true); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'NRN', + SCAPTION => 'Рег. номер', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, + BVISIBLE => false); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'SDOCPREF', + SCAPTION => 'Префикс', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, + BVISIBLE => true, + BORDER => true); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'SDOCNUMB', + SCAPTION => 'Номер', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, + BVISIBLE => true, + BORDER => true); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'DEXEC_DATE', + SCAPTION => 'Дата запуска', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_DATE, + BVISIBLE => true, + BORDER => true); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'SMATRES_PLAN_NOMEN', + SCAPTION => 'Номенклатура основного материала', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, + BVISIBLE => true, + BORDER => true); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'SMATRES_PLAN_NAME', + SCAPTION => 'Наименование основного материала', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, + BVISIBLE => true, + BORDER => true); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'NQUANT', + SCAPTION => 'Количество запуска', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, + BVISIBLE => true, + BORDER => true); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'NQUANT_PLAN', + SCAPTION => 'Выдать по норме', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, + BVISIBLE => true, + BORDER => true); /* Обходим данные */ begin /* Добавляем подсказку совместимости */ @@ -1639,7 +1657,10 @@ create or replace package body PKG_P8PANELS_MECHREC as PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' %ORDER_BY%) D) F'); PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' 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.TDG_ORDERS_SET_QUERY(RDATA_GRID => RDG, + RORDERS => RO, + SPATTERN => '%ORDER_BY%', + CSQL => CSQL); /* Разбираем его */ ICURSOR := PKG_SQL_DML.OPEN_CURSOR(SWHAT => 'SELECT'); PKG_SQL_DML.PARSE(ICURSOR => ICURSOR, SQUERY => CSQL); @@ -1666,38 +1687,41 @@ create or replace package body PKG_P8PANELS_MECHREC as while (PKG_SQL_DML.FETCH_ROWS(ICURSOR => ICURSOR) > 0) loop /* Добавляем колонки с данными */ - PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLN(RROW => RDG_ROW, - SNAME => 'NRN', - ICURSOR => ICURSOR, - NPOSITION => 1, - BCLEAR => true); - PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLS(RROW => RDG_ROW, - SNAME => 'SDOCPREF', - ICURSOR => ICURSOR, - NPOSITION => 2); - PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLS(RROW => RDG_ROW, SNAME => 'SDOCNUMB', ICURSOR => ICURSOR, NPOSITION => 3); - PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLD(RROW => RDG_ROW, - SNAME => 'DEXEC_DATE', - ICURSOR => ICURSOR, - NPOSITION => 4); - PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLS(RROW => RDG_ROW, - SNAME => 'SMATRES_PLAN_NOMEN', - ICURSOR => ICURSOR, - NPOSITION => 5); - PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLS(RROW => RDG_ROW, - SNAME => 'SMATRES_PLAN_NAME', - ICURSOR => ICURSOR, - NPOSITION => 6); - PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLN(RROW => RDG_ROW, - SNAME => 'NQUANT', - ICURSOR => ICURSOR, - NPOSITION => 7); - PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLN(RROW => RDG_ROW, - SNAME => 'NQUANT_PLAN', - ICURSOR => ICURSOR, - NPOSITION => 8); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLN(RROW => RDG_ROW, + SNAME => 'NRN', + ICURSOR => ICURSOR, + NPOSITION => 1, + BCLEAR => true); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLS(RROW => RDG_ROW, + SNAME => 'SDOCPREF', + ICURSOR => ICURSOR, + NPOSITION => 2); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLS(RROW => RDG_ROW, + SNAME => 'SDOCNUMB', + ICURSOR => ICURSOR, + NPOSITION => 3); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLD(RROW => RDG_ROW, + SNAME => 'DEXEC_DATE', + ICURSOR => ICURSOR, + NPOSITION => 4); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLS(RROW => RDG_ROW, + SNAME => 'SMATRES_PLAN_NOMEN', + ICURSOR => ICURSOR, + NPOSITION => 5); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLS(RROW => RDG_ROW, + SNAME => 'SMATRES_PLAN_NAME', + ICURSOR => ICURSOR, + NPOSITION => 6); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLN(RROW => RDG_ROW, + SNAME => 'NQUANT', + ICURSOR => ICURSOR, + NPOSITION => 7); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLN(RROW => RDG_ROW, + SNAME => 'NQUANT_PLAN', + ICURSOR => ICURSOR, + NPOSITION => 8); /* Добавляем строку в таблицу */ - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_ROW(RDATA_GRID => RDG, RROW => RDG_ROW); + PKG_P8PANELS_VISUAL.TDG_ADD_ROW(RDATA_GRID => RDG, RROW => RDG_ROW); end loop; exception when others then @@ -1705,7 +1729,7 @@ create or replace package body PKG_P8PANELS_MECHREC as raise; end; /* Сериализуем описание */ - COUT := PKG_P8PANELS_VISUAL.TDATA_GRID_TO_XML(RDATA_GRID => RDG, NINCLUDE_DEF => NINCLUDE_DEF); + COUT := PKG_P8PANELS_VISUAL.TDG_TO_XML(RDATA_GRID => RDG, NINCLUDE_DEF => NINCLUDE_DEF); end FCROUTLST_DG_BY_DTL; /* Получение таблицы маршрутных листов, связанных со спецификацией плана (по изделию) */ @@ -1720,65 +1744,65 @@ create or replace package body PKG_P8PANELS_MECHREC as ) is NCOMPANY PKG_STD.TREF := GET_SESSION_COMPANY(); -- Организация сеанса - RO PKG_P8PANELS_VISUAL.TORDERS; -- Сортировки - RDG PKG_P8PANELS_VISUAL.TDATA_GRID; -- Описание таблицы - RDG_ROW PKG_P8PANELS_VISUAL.TROW; -- Строка таблицы + RO PKG_P8PANELS_VISUAL.TDG_ORDERS; -- Сортировки + RDG PKG_P8PANELS_VISUAL.TDG; -- Описание таблицы + RDG_ROW PKG_P8PANELS_VISUAL.TDG_ROW; -- Строка таблицы NROW_FROM PKG_STD.TREF; -- Номер строки с NROW_TO PKG_STD.TREF; -- Номер строки по CSQL clob; -- Буфер для запроса ICURSOR integer; -- Курсор для исполнения запроса begin /* Читем сортировки */ - RO := PKG_P8PANELS_VISUAL.TORDERS_FROM_XML(CORDERS => CORDERS); + RO := PKG_P8PANELS_VISUAL.TDG_ORDERS_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(); + RDG := PKG_P8PANELS_VISUAL.TDG_MAKE(); /* Описываем колонки таблицы данных */ - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'NRN', - SCAPTION => 'Рег. номер', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, - BVISIBLE => false); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'SDOCPREF', - SCAPTION => 'Префикс', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, - BVISIBLE => true, - BORDER => true); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'SDOCNUMB', - SCAPTION => 'Номер', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, - BVISIBLE => true, - BORDER => true); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'DEXEC_DATE', - SCAPTION => 'Дата запуска', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_DATE, - BVISIBLE => true, - BORDER => true); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'NQUANT', - SCAPTION => 'Количество запуска', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, - BVISIBLE => true, - BORDER => true); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'DREL_DATE', - SCAPTION => 'Дата выпуска', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_DATE, - BVISIBLE => true, - BORDER => true); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'NREL_QUANT', - SCAPTION => 'Количество выпуска', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, - BVISIBLE => true, - BORDER => true); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'NRN', + SCAPTION => 'Рег. номер', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, + BVISIBLE => false); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'SDOCPREF', + SCAPTION => 'Префикс', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, + BVISIBLE => true, + BORDER => true); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'SDOCNUMB', + SCAPTION => 'Номер', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, + BVISIBLE => true, + BORDER => true); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'DEXEC_DATE', + SCAPTION => 'Дата запуска', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_DATE, + BVISIBLE => true, + BORDER => true); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'NQUANT', + SCAPTION => 'Количество запуска', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, + BVISIBLE => true, + BORDER => true); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'DREL_DATE', + SCAPTION => 'Дата выпуска', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_DATE, + BVISIBLE => true, + BORDER => true); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'NREL_QUANT', + SCAPTION => 'Количество выпуска', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, + BVISIBLE => true, + BORDER => true); /* Обходим данные */ begin /* Добавляем подсказку совместимости */ @@ -1829,7 +1853,10 @@ create or replace package body PKG_P8PANELS_MECHREC as PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' %ORDER_BY%) D) F'); PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' 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.TDG_ORDERS_SET_QUERY(RDATA_GRID => RDG, + RORDERS => RO, + SPATTERN => '%ORDER_BY%', + CSQL => CSQL); /* Разбираем его */ ICURSOR := PKG_SQL_DML.OPEN_CURSOR(SWHAT => 'SELECT'); PKG_SQL_DML.PARSE(ICURSOR => ICURSOR, SQUERY => CSQL); @@ -1855,34 +1882,37 @@ create or replace package body PKG_P8PANELS_MECHREC as while (PKG_SQL_DML.FETCH_ROWS(ICURSOR => ICURSOR) > 0) loop /* Добавляем колонки с данными */ - PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLN(RROW => RDG_ROW, - SNAME => 'NRN', - ICURSOR => ICURSOR, - NPOSITION => 1, - BCLEAR => true); - PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLS(RROW => RDG_ROW, - SNAME => 'SDOCPREF', - ICURSOR => ICURSOR, - NPOSITION => 2); - PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLS(RROW => RDG_ROW, SNAME => 'SDOCNUMB', ICURSOR => ICURSOR, NPOSITION => 3); - PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLD(RROW => RDG_ROW, - SNAME => 'DEXEC_DATE', - ICURSOR => ICURSOR, - NPOSITION => 4); - PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLN(RROW => RDG_ROW, - SNAME => 'NQUANT', - ICURSOR => ICURSOR, - NPOSITION => 5); - PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLD(RROW => RDG_ROW, - SNAME => 'DREL_DATE', - ICURSOR => ICURSOR, - NPOSITION => 6); - PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLN(RROW => RDG_ROW, - SNAME => 'NREL_QUANT', - ICURSOR => ICURSOR, - NPOSITION => 7); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLN(RROW => RDG_ROW, + SNAME => 'NRN', + ICURSOR => ICURSOR, + NPOSITION => 1, + BCLEAR => true); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLS(RROW => RDG_ROW, + SNAME => 'SDOCPREF', + ICURSOR => ICURSOR, + NPOSITION => 2); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLS(RROW => RDG_ROW, + SNAME => 'SDOCNUMB', + ICURSOR => ICURSOR, + NPOSITION => 3); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLD(RROW => RDG_ROW, + SNAME => 'DEXEC_DATE', + ICURSOR => ICURSOR, + NPOSITION => 4); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLN(RROW => RDG_ROW, + SNAME => 'NQUANT', + ICURSOR => ICURSOR, + NPOSITION => 5); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLD(RROW => RDG_ROW, + SNAME => 'DREL_DATE', + ICURSOR => ICURSOR, + NPOSITION => 6); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLN(RROW => RDG_ROW, + SNAME => 'NREL_QUANT', + ICURSOR => ICURSOR, + NPOSITION => 7); /* Добавляем строку в таблицу */ - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_ROW(RDATA_GRID => RDG, RROW => RDG_ROW); + PKG_P8PANELS_VISUAL.TDG_ADD_ROW(RDATA_GRID => RDG, RROW => RDG_ROW); end loop; exception when others then @@ -1890,7 +1920,7 @@ create or replace package body PKG_P8PANELS_MECHREC as raise; end; /* Сериализуем описание */ - COUT := PKG_P8PANELS_VISUAL.TDATA_GRID_TO_XML(RDATA_GRID => RDG, NINCLUDE_DEF => NINCLUDE_DEF); + COUT := PKG_P8PANELS_VISUAL.TDG_TO_XML(RDATA_GRID => RDG, NINCLUDE_DEF => NINCLUDE_DEF); end FCROUTLST_DG_BY_PRDCT; /* Получение таблицы маршрутных листов, связанных со спецификацией плана (для приходов) */ @@ -1905,77 +1935,77 @@ create or replace package body PKG_P8PANELS_MECHREC as ) is NCOMPANY PKG_STD.TREF := GET_SESSION_COMPANY(); -- Организация сеанса - RO PKG_P8PANELS_VISUAL.TORDERS; -- Сортировки - RDG PKG_P8PANELS_VISUAL.TDATA_GRID; -- Описание таблицы - RDG_ROW PKG_P8PANELS_VISUAL.TROW; -- Строка таблицы + RO PKG_P8PANELS_VISUAL.TDG_ORDERS; -- Сортировки + RDG PKG_P8PANELS_VISUAL.TDG; -- Описание таблицы + RDG_ROW PKG_P8PANELS_VISUAL.TDG_ROW; -- Строка таблицы NROW_FROM PKG_STD.TREF; -- Номер строки с NROW_TO PKG_STD.TREF; -- Номер строки по CSQL clob; -- Буфер для запроса ICURSOR integer; -- Курсор для исполнения запроса begin /* Читем сортировки */ - RO := PKG_P8PANELS_VISUAL.TORDERS_FROM_XML(CORDERS => CORDERS); + RO := PKG_P8PANELS_VISUAL.TDG_ORDERS_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(); + RDG := PKG_P8PANELS_VISUAL.TDG_MAKE(); /* Описываем колонки таблицы данных */ - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'NRN', - SCAPTION => 'Рег. номер', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, - BVISIBLE => false); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'SDOCPREF', - SCAPTION => 'Префикс', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, - BVISIBLE => true, - BORDER => true); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'SDOCNUMB', - SCAPTION => 'Номер', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, - BVISIBLE => true, - BORDER => true); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'DEXEC_DATE', - SCAPTION => 'Дата запуска', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_DATE, - BVISIBLE => true, - BORDER => true); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'NQUANT', - SCAPTION => 'Количество запуска', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, - BVISIBLE => true, - BORDER => true); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'DREL_DATE', - SCAPTION => 'Дата выпуска', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_DATE, - BVISIBLE => true, - BORDER => true); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'NREL_QUANT', - SCAPTION => 'Количество выпуска', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, - BVISIBLE => true, - BORDER => true); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'NQUANT_FACT', - SCAPTION => 'Сдано', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, - BVISIBLE => true, - BORDER => true); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'NPROCENT', - SCAPTION => '% готовности', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, - BVISIBLE => true, - BORDER => true); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'NRN', + SCAPTION => 'Рег. номер', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, + BVISIBLE => false); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'SDOCPREF', + SCAPTION => 'Префикс', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, + BVISIBLE => true, + BORDER => true); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'SDOCNUMB', + SCAPTION => 'Номер', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, + BVISIBLE => true, + BORDER => true); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'DEXEC_DATE', + SCAPTION => 'Дата запуска', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_DATE, + BVISIBLE => true, + BORDER => true); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'NQUANT', + SCAPTION => 'Количество запуска', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, + BVISIBLE => true, + BORDER => true); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'DREL_DATE', + SCAPTION => 'Дата выпуска', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_DATE, + BVISIBLE => true, + BORDER => true); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'NREL_QUANT', + SCAPTION => 'Количество выпуска', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, + BVISIBLE => true, + BORDER => true); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'NQUANT_FACT', + SCAPTION => 'Сдано', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, + BVISIBLE => true, + BORDER => true); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'NPROCENT', + SCAPTION => '% готовности', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, + BVISIBLE => true, + BORDER => true); /* Обходим данные */ begin /* Добавляем подсказку совместимости */ @@ -2048,7 +2078,10 @@ create or replace package body PKG_P8PANELS_MECHREC as PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' %ORDER_BY%) D) F'); PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' 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.TDG_ORDERS_SET_QUERY(RDATA_GRID => RDG, + RORDERS => RO, + SPATTERN => '%ORDER_BY%', + CSQL => CSQL); /* Разбираем его */ ICURSOR := PKG_SQL_DML.OPEN_CURSOR(SWHAT => 'SELECT'); PKG_SQL_DML.PARSE(ICURSOR => ICURSOR, SQUERY => CSQL); @@ -2076,33 +2109,45 @@ create or replace package body PKG_P8PANELS_MECHREC as while (PKG_SQL_DML.FETCH_ROWS(ICURSOR => ICURSOR) > 0) loop /* Добавляем колонки с данными */ - PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLN(RROW => RDG_ROW, - SNAME => 'NRN', - ICURSOR => ICURSOR, - NPOSITION => 1, - BCLEAR => true); - PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLS(RROW => RDG_ROW, SNAME => 'SDOCPREF', ICURSOR => ICURSOR, NPOSITION => 2); - PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLS(RROW => RDG_ROW, SNAME => 'SDOCNUMB', ICURSOR => ICURSOR, NPOSITION => 3); - PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLD(RROW => RDG_ROW, - SNAME => 'DEXEC_DATE', - ICURSOR => ICURSOR, - NPOSITION => 4); - PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLN(RROW => RDG_ROW, SNAME => 'NQUANT', ICURSOR => ICURSOR, NPOSITION => 5); - PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLD(RROW => RDG_ROW, - SNAME => 'DREL_DATE', - ICURSOR => ICURSOR, - NPOSITION => 6); - PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLN(RROW => RDG_ROW, - SNAME => 'NREL_QUANT', - ICURSOR => ICURSOR, - NPOSITION => 7); - PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLN(RROW => RDG_ROW, - SNAME => 'NQUANT_FACT', - ICURSOR => ICURSOR, - NPOSITION => 8); - PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLN(RROW => RDG_ROW, SNAME => 'NPROCENT', ICURSOR => ICURSOR, NPOSITION => 9); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLN(RROW => RDG_ROW, + SNAME => 'NRN', + ICURSOR => ICURSOR, + NPOSITION => 1, + BCLEAR => true); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLS(RROW => RDG_ROW, + SNAME => 'SDOCPREF', + ICURSOR => ICURSOR, + NPOSITION => 2); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLS(RROW => RDG_ROW, + SNAME => 'SDOCNUMB', + ICURSOR => ICURSOR, + NPOSITION => 3); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLD(RROW => RDG_ROW, + SNAME => 'DEXEC_DATE', + ICURSOR => ICURSOR, + NPOSITION => 4); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLN(RROW => RDG_ROW, + SNAME => 'NQUANT', + ICURSOR => ICURSOR, + NPOSITION => 5); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLD(RROW => RDG_ROW, + SNAME => 'DREL_DATE', + ICURSOR => ICURSOR, + NPOSITION => 6); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLN(RROW => RDG_ROW, + SNAME => 'NREL_QUANT', + ICURSOR => ICURSOR, + NPOSITION => 7); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLN(RROW => RDG_ROW, + SNAME => 'NQUANT_FACT', + ICURSOR => ICURSOR, + NPOSITION => 8); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLN(RROW => RDG_ROW, + SNAME => 'NPROCENT', + ICURSOR => ICURSOR, + NPOSITION => 9); /* Добавляем строку в таблицу */ - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_ROW(RDATA_GRID => RDG, RROW => RDG_ROW); + PKG_P8PANELS_VISUAL.TDG_ADD_ROW(RDATA_GRID => RDG, RROW => RDG_ROW); end loop; exception when others then @@ -2110,7 +2155,7 @@ create or replace package body PKG_P8PANELS_MECHREC as raise; end; /* Сериализуем описание */ - COUT := PKG_P8PANELS_VISUAL.TDATA_GRID_TO_XML(RDATA_GRID => RDG, NINCLUDE_DEF => NINCLUDE_DEF); + COUT := PKG_P8PANELS_VISUAL.TDG_TO_XML(RDATA_GRID => RDG, NINCLUDE_DEF => NINCLUDE_DEF); end FCROUTLST_DG_BY_DEPS; /* Получение таблицы маршрутных листов, связанных со спецификацией плана с учетом типа */ @@ -2980,9 +3025,9 @@ create or replace package body PKG_P8PANELS_MECHREC as ) is NCOMPANY PKG_STD.TREF := GET_SESSION_COMPANY(); -- Организация сеанса - RO PKG_P8PANELS_VISUAL.TORDERS; -- Сортировки - RDG PKG_P8PANELS_VISUAL.TDATA_GRID; -- Описание таблицы - RDG_ROW PKG_P8PANELS_VISUAL.TROW; -- Строка таблицы + RO PKG_P8PANELS_VISUAL.TDG_ORDERS; -- Сортировки + RDG PKG_P8PANELS_VISUAL.TDG; -- Описание таблицы + RDG_ROW PKG_P8PANELS_VISUAL.TDG_ROW; -- Строка таблицы NROW_FROM PKG_STD.TREF; -- Номер строки с NROW_TO PKG_STD.TREF; -- Номер строки по CSQL clob; -- Буфер для запроса @@ -3033,56 +3078,56 @@ create or replace package body PKG_P8PANELS_MECHREC as end FCROUTLSTORD_QUANT_GET; begin /* Читем сортировки */ - RO := PKG_P8PANELS_VISUAL.TORDERS_FROM_XML(CORDERS => CORDERS); + RO := PKG_P8PANELS_VISUAL.TDG_ORDERS_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(); + RDG := PKG_P8PANELS_VISUAL.TDG_MAKE(); /* Описываем колонки таблицы данных */ - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'NRN', - SCAPTION => 'Рег. номер', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, - BVISIBLE => false); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'SDOC_INFO', - SCAPTION => 'Документ (тип, №, дата)', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, - BVISIBLE => true, - BORDER => true); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'NQUANT', - SCAPTION => 'Количество план', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, - BVISIBLE => true, - BORDER => true); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'NPROCENT', - SCAPTION => 'Готовность партии', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, - BVISIBLE => true, - BORDER => true); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'NPRIOR_PARTY', - SCAPTION => 'Приоритет партии', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, - BVISIBLE => true, - BORDER => true); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'SPROD_ORDER', - SCAPTION => 'Заказ', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, - BVISIBLE => false); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'NRN', + SCAPTION => 'Рег. номер', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, + BVISIBLE => false); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'SDOC_INFO', + SCAPTION => 'Документ (тип, №, дата)', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, + BVISIBLE => true, + BORDER => true); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'NQUANT', + SCAPTION => 'Количество план', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, + BVISIBLE => true, + BORDER => true); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'NPROCENT', + SCAPTION => 'Готовность партии', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, + BVISIBLE => true, + BORDER => true); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'NPRIOR_PARTY', + SCAPTION => 'Приоритет партии', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, + BVISIBLE => true, + BORDER => true); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'SPROD_ORDER', + SCAPTION => 'Заказ', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, + BVISIBLE => false); /*! Пока отключен */ - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'NCHANGE_FACEACC', - SCAPTION => 'Изменить заказ', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, - BVISIBLE => false, - BORDER => true); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'NCHANGE_FACEACC', + SCAPTION => 'Изменить заказ', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, + BVISIBLE => false, + BORDER => true); /* Считываем рег. номер связанной спецификации из "Производственная программа" */ NFCPRODPLANSP_MAIN := UTL_FCPRODPLANSP_MAIN_GET(NCOMPANY => NCOMPANY, NFCPRODPLANSP => NFCPRODPLANSP); /* Если спецификация производственной программы найдена */ @@ -3156,7 +3201,10 @@ create or replace package body PKG_P8PANELS_MECHREC as PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' %ORDER_BY%) D) F'); PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' 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.TDG_ORDERS_SET_QUERY(RDATA_GRID => RDG, + RORDERS => RO, + SPATTERN => '%ORDER_BY%', + CSQL => CSQL); /* Разбираем его */ ICURSOR := PKG_SQL_DML.OPEN_CURSOR(SWHAT => 'SELECT'); PKG_SQL_DML.PARSE(ICURSOR => ICURSOR, SQUERY => CSQL); @@ -3184,17 +3232,17 @@ create or replace package body PKG_P8PANELS_MECHREC as /* Читаем данные из курсора */ PKG_SQL_DML.COLUMN_VALUE_NUM(ICURSOR => ICURSOR, IPOSITION => 1, NVALUE => NFCROUTLST); /* Добавляем колонку с рег. номером */ - PKG_P8PANELS_VISUAL.TROW_ADD_COL(RROW => RDG_ROW, SNAME => 'NRN', NVALUE => NFCROUTLST, BCLEAR => true); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_COL(RROW => RDG_ROW, SNAME => 'NRN', NVALUE => NFCROUTLST, BCLEAR => true); /* Добавляем колонки с данными */ - PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLN(RROW => RDG_ROW, - SNAME => 'NRN', - ICURSOR => ICURSOR, - NPOSITION => 1, - BCLEAR => true); - PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLS(RROW => RDG_ROW, - SNAME => 'SDOC_INFO', - ICURSOR => ICURSOR, - NPOSITION => 2); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLN(RROW => RDG_ROW, + SNAME => 'NRN', + ICURSOR => ICURSOR, + NPOSITION => 1, + BCLEAR => true); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLS(RROW => RDG_ROW, + SNAME => 'SDOC_INFO', + ICURSOR => ICURSOR, + NPOSITION => 2); /* Проверяем наличие прямой связи между МЛ и спецификацией плана */ if (PKG_DOCLINKS.FIND(NFLAG_SMART => 1, SIN_UNITCODE => 'CostProductPlansSpecs', @@ -3208,30 +3256,33 @@ create or replace package body PKG_P8PANELS_MECHREC as /* Если сумма "Количество" в "Заказы" больше 0 */ if (NFCROUTLSTORD_QUANT > 0) then /* Указываем её */ - PKG_P8PANELS_VISUAL.TROW_ADD_COL(RROW => RDG_ROW, SNAME => 'NQUANT', NVALUE => NFCROUTLSTORD_QUANT); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_COL(RROW => RDG_ROW, SNAME => 'NQUANT', NVALUE => NFCROUTLSTORD_QUANT); else /* Берем из заголовка МЛ */ - PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLN(RROW => RDG_ROW, - SNAME => 'NQUANT', - ICURSOR => ICURSOR, - NPOSITION => 3); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLN(RROW => RDG_ROW, + SNAME => 'NQUANT', + ICURSOR => ICURSOR, + NPOSITION => 3); end if; else /* Указываем 0 */ - PKG_P8PANELS_VISUAL.TROW_ADD_COL(RROW => RDG_ROW, SNAME => 'NQUANT', NVALUE => 0); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_COL(RROW => RDG_ROW, SNAME => 'NQUANT', NVALUE => 0); end if; - PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLN(RROW => RDG_ROW, SNAME => 'NPROCENT', ICURSOR => ICURSOR, NPOSITION => 4); - PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLN(RROW => RDG_ROW, - SNAME => 'NPRIOR_PARTY', - ICURSOR => ICURSOR, - NPOSITION => 5); - PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLS(RROW => RDG_ROW, - SNAME => 'SPROD_ORDER', - ICURSOR => ICURSOR, - NPOSITION => 6); - PKG_P8PANELS_VISUAL.TROW_ADD_COL(RROW => RDG_ROW, SNAME => 'NCHANGE_FACEACC', SVALUE => null); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLN(RROW => RDG_ROW, + SNAME => 'NPROCENT', + ICURSOR => ICURSOR, + NPOSITION => 4); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLN(RROW => RDG_ROW, + SNAME => 'NPRIOR_PARTY', + ICURSOR => ICURSOR, + NPOSITION => 5); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLS(RROW => RDG_ROW, + SNAME => 'SPROD_ORDER', + ICURSOR => ICURSOR, + NPOSITION => 6); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_COL(RROW => RDG_ROW, SNAME => 'NCHANGE_FACEACC', SVALUE => null); /* Добавляем строку в таблицу */ - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_ROW(RDATA_GRID => RDG, RROW => RDG_ROW); + PKG_P8PANELS_VISUAL.TDG_ADD_ROW(RDATA_GRID => RDG, RROW => RDG_ROW); end loop; exception when others then @@ -3242,7 +3293,7 @@ create or replace package body PKG_P8PANELS_MECHREC as P_SELECTLIST_CLEAR(NIDENT => NFCROUTLST_IDENT); end if; /* Сериализуем описание */ - COUT := PKG_P8PANELS_VISUAL.TDATA_GRID_TO_XML(RDATA_GRID => RDG, NINCLUDE_DEF => NINCLUDE_DEF); + COUT := PKG_P8PANELS_VISUAL.TDG_TO_XML(RDATA_GRID => RDG, NINCLUDE_DEF => NINCLUDE_DEF); exception when others then /* Очищаем отмеченные маршрутные листы */ @@ -3262,9 +3313,9 @@ create or replace package body PKG_P8PANELS_MECHREC as ) is NCOMPANY PKG_STD.TREF := GET_SESSION_COMPANY(); -- Организация сеанса - RO PKG_P8PANELS_VISUAL.TORDERS; -- Сортировки - RDG PKG_P8PANELS_VISUAL.TDATA_GRID; -- Описание таблицы - RDG_ROW PKG_P8PANELS_VISUAL.TROW; -- Строка таблицы + RO PKG_P8PANELS_VISUAL.TDG_ORDERS; -- Сортировки + RDG PKG_P8PANELS_VISUAL.TDG; -- Описание таблицы + RDG_ROW PKG_P8PANELS_VISUAL.TDG_ROW; -- Строка таблицы NROW_FROM PKG_STD.TREF; -- Номер строки с NROW_TO PKG_STD.TREF; -- Номер строки по CSQL clob; -- Буфер для запроса @@ -3297,65 +3348,65 @@ create or replace package body PKG_P8PANELS_MECHREC as end FCROUTLSTSP_STATE_NAME_GET; begin /* Читем сортировки */ - RO := PKG_P8PANELS_VISUAL.TORDERS_FROM_XML(CORDERS => CORDERS); + RO := PKG_P8PANELS_VISUAL.TDG_ORDERS_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(); + RDG := PKG_P8PANELS_VISUAL.TDG_MAKE(); /* Описываем колонки таблицы данных */ - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'NRN', - SCAPTION => 'Рег. номер', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, - BVISIBLE => false); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'SSTATE', - SCAPTION => 'Состояние', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, - BVISIBLE => true); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'SOPER_NUMB', - SCAPTION => 'Номер операции', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, - BVISIBLE => true); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'SROUTSHTSP_NAME', - SCAPTION => 'Операция', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, - BVISIBLE => true); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'SSUBDIV', - SCAPTION => 'Цех, участок', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, - BVISIBLE => true); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'NQUANT_PLAN', - SCAPTION => 'План', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, - BVISIBLE => true); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'NQUANT_FACT', - SCAPTION => 'Факт', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, - BVISIBLE => true); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'NT_SHT_PLAN', - SCAPTION => 'Трудоемкость план', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, - BVISIBLE => true); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'NLABOUR_FACT', - SCAPTION => 'Трудоемкость факт', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, - BVISIBLE => true); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'SMUNIT', - SCAPTION => 'ЕИ трудоемкости', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, - BVISIBLE => true); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'NRN', + SCAPTION => 'Рег. номер', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, + BVISIBLE => false); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'SSTATE', + SCAPTION => 'Состояние', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, + BVISIBLE => true); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'SOPER_NUMB', + SCAPTION => 'Номер операции', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, + BVISIBLE => true); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'SROUTSHTSP_NAME', + SCAPTION => 'Операция', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, + BVISIBLE => true); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'SSUBDIV', + SCAPTION => 'Цех, участок', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, + BVISIBLE => true); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'NQUANT_PLAN', + SCAPTION => 'План', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, + BVISIBLE => true); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'NQUANT_FACT', + SCAPTION => 'Факт', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, + BVISIBLE => true); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'NT_SHT_PLAN', + SCAPTION => 'Трудоемкость план', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, + BVISIBLE => true); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'NLABOUR_FACT', + SCAPTION => 'Трудоемкость факт', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, + BVISIBLE => true); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'SMUNIT', + SCAPTION => 'ЕИ трудоемкости', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, + BVISIBLE => true); /* Обходим данные */ begin /* Добавляем подсказку совместимости */ @@ -3381,7 +3432,10 @@ create or replace package body PKG_P8PANELS_MECHREC as PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' %ORDER_BY%) D) F'); PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' 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.TDG_ORDERS_SET_QUERY(RDATA_GRID => RDG, + RORDERS => RO, + SPATTERN => '%ORDER_BY%', + CSQL => CSQL); /* Разбираем его */ ICURSOR := PKG_SQL_DML.OPEN_CURSOR(SWHAT => 'SELECT'); PKG_SQL_DML.PARSE(ICURSOR => ICURSOR, SQUERY => CSQL); @@ -3410,44 +3464,50 @@ create or replace package body PKG_P8PANELS_MECHREC as while (PKG_SQL_DML.FETCH_ROWS(ICURSOR => ICURSOR) > 0) loop /* Добавляем колонки с данными */ - PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLN(RROW => RDG_ROW, - SNAME => 'NRN', - ICURSOR => ICURSOR, - NPOSITION => 1, - BCLEAR => true); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLN(RROW => RDG_ROW, + SNAME => 'NRN', + ICURSOR => ICURSOR, + NPOSITION => 1, + BCLEAR => true); /* Читаем состояние из курсора */ PKG_SQL_DML.COLUMN_VALUE_NUM(ICURSOR => ICURSOR, IPOSITION => 2, NVALUE => NSTATE); - PKG_P8PANELS_VISUAL.TROW_ADD_COL(RROW => RDG_ROW, - SNAME => 'SSTATE', - SVALUE => FCROUTLSTSP_STATE_NAME_GET(NSTATE => NSTATE)); - PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLS(RROW => RDG_ROW, - SNAME => 'SOPER_NUMB', - ICURSOR => ICURSOR, - NPOSITION => 3); - PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLS(RROW => RDG_ROW, - SNAME => 'SROUTSHTSP_NAME', - ICURSOR => ICURSOR, - NPOSITION => 4); - PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLS(RROW => RDG_ROW, SNAME => 'SSUBDIV', ICURSOR => ICURSOR, NPOSITION => 5); - PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLN(RROW => RDG_ROW, - SNAME => 'NQUANT_PLAN', - ICURSOR => ICURSOR, - NPOSITION => 6); - PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLN(RROW => RDG_ROW, - SNAME => 'NQUANT_FACT', - ICURSOR => ICURSOR, - NPOSITION => 7); - PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLN(RROW => RDG_ROW, - SNAME => 'NT_SHT_PLAN', - ICURSOR => ICURSOR, - NPOSITION => 8); - PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLN(RROW => RDG_ROW, - SNAME => 'NLABOUR_FACT', - ICURSOR => ICURSOR, - NPOSITION => 9); - PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLS(RROW => RDG_ROW, SNAME => 'SMUNIT', ICURSOR => ICURSOR, NPOSITION => 10); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_COL(RROW => RDG_ROW, + SNAME => 'SSTATE', + SVALUE => FCROUTLSTSP_STATE_NAME_GET(NSTATE => NSTATE)); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLS(RROW => RDG_ROW, + SNAME => 'SOPER_NUMB', + ICURSOR => ICURSOR, + NPOSITION => 3); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLS(RROW => RDG_ROW, + SNAME => 'SROUTSHTSP_NAME', + ICURSOR => ICURSOR, + NPOSITION => 4); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLS(RROW => RDG_ROW, + SNAME => 'SSUBDIV', + ICURSOR => ICURSOR, + NPOSITION => 5); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLN(RROW => RDG_ROW, + SNAME => 'NQUANT_PLAN', + ICURSOR => ICURSOR, + NPOSITION => 6); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLN(RROW => RDG_ROW, + SNAME => 'NQUANT_FACT', + ICURSOR => ICURSOR, + NPOSITION => 7); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLN(RROW => RDG_ROW, + SNAME => 'NT_SHT_PLAN', + ICURSOR => ICURSOR, + NPOSITION => 8); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLN(RROW => RDG_ROW, + SNAME => 'NLABOUR_FACT', + ICURSOR => ICURSOR, + NPOSITION => 9); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLS(RROW => RDG_ROW, + SNAME => 'SMUNIT', + ICURSOR => ICURSOR, + NPOSITION => 10); /* Добавляем строку в таблицу */ - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_ROW(RDATA_GRID => RDG, RROW => RDG_ROW); + PKG_P8PANELS_VISUAL.TDG_ADD_ROW(RDATA_GRID => RDG, RROW => RDG_ROW); end loop; exception when others then @@ -3455,7 +3515,7 @@ create or replace package body PKG_P8PANELS_MECHREC as raise; end; /* Сериализуем описание */ - COUT := PKG_P8PANELS_VISUAL.TDATA_GRID_TO_XML(RDATA_GRID => RDG, NINCLUDE_DEF => NINCLUDE_DEF); + COUT := PKG_P8PANELS_VISUAL.TDG_TO_XML(RDATA_GRID => RDG, NINCLUDE_DEF => NINCLUDE_DEF); end FCROUTLSTSP_DEPT_DG_GET; /* Получение таблицы ПиП на основании маршрутного листа, связанных со спецификацией плана */ @@ -3470,9 +3530,9 @@ create or replace package body PKG_P8PANELS_MECHREC as ) is NCOMPANY PKG_STD.TREF := GET_SESSION_COMPANY(); -- Организация сеанса - RO PKG_P8PANELS_VISUAL.TORDERS; -- Сортировки - RDG PKG_P8PANELS_VISUAL.TDATA_GRID; -- Описание таблицы - RDG_ROW PKG_P8PANELS_VISUAL.TROW; -- Строка таблицы + RO PKG_P8PANELS_VISUAL.TDG_ORDERS; -- Сортировки + RDG PKG_P8PANELS_VISUAL.TDG; -- Описание таблицы + RDG_ROW PKG_P8PANELS_VISUAL.TDG_ROW; -- Строка таблицы NROW_FROM PKG_STD.TREF; -- Номер строки с NROW_TO PKG_STD.TREF; -- Номер строки по CSQL clob; -- Буфер для запроса @@ -3481,43 +3541,43 @@ create or replace package body PKG_P8PANELS_MECHREC as NFCROUTLST_IDENT PKG_STD.TREF; -- Рег. номер идентификатора отмеченных записей маршрутных листов begin /* Читем сортировки */ - RO := PKG_P8PANELS_VISUAL.TORDERS_FROM_XML(CORDERS => CORDERS); + RO := PKG_P8PANELS_VISUAL.TDG_ORDERS_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(); + RDG := PKG_P8PANELS_VISUAL.TDG_MAKE(); /* Описываем колонки таблицы данных */ - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'NRN', - SCAPTION => 'Рег. номер', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, - BVISIBLE => false); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'SSTATE', - SCAPTION => 'Состояние', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, - BVISIBLE => true); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'SDOC_INFO', - SCAPTION => 'Документ (тип, №, дата)', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, - BVISIBLE => true, - BORDER => true); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'NQUANT_FACT', - SCAPTION => 'Количество сдано', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, - BVISIBLE => true, - BORDER => true); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'DDUE_DATE', - SCAPTION => 'Дата сдачи', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_DATE, - BVISIBLE => true, - BORDER => true); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'NRN', + SCAPTION => 'Рег. номер', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, + BVISIBLE => false); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'SSTATE', + SCAPTION => 'Состояние', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, + BVISIBLE => true); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'SDOC_INFO', + SCAPTION => 'Документ (тип, №, дата)', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, + BVISIBLE => true, + BORDER => true); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'NQUANT_FACT', + SCAPTION => 'Количество сдано', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, + BVISIBLE => true, + BORDER => true); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'DDUE_DATE', + SCAPTION => 'Дата сдачи', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_DATE, + BVISIBLE => true, + BORDER => true); /* Считываем рег. номер связанной спецификации из "Производственная программа" */ NFCPRODPLANSP_MAIN := UTL_FCPRODPLANSP_MAIN_GET(NCOMPANY => NCOMPANY, NFCPRODPLANSP => NFCPRODPLANSP); /* Если спецификация производственной программы найдена */ @@ -3562,7 +3622,10 @@ create or replace package body PKG_P8PANELS_MECHREC as PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' %ORDER_BY%) D) F'); PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' 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.TDG_ORDERS_SET_QUERY(RDATA_GRID => RDG, + RORDERS => RO, + SPATTERN => '%ORDER_BY%', + CSQL => CSQL); /* Разбираем его */ ICURSOR := PKG_SQL_DML.OPEN_CURSOR(SWHAT => 'SELECT'); PKG_SQL_DML.PARSE(ICURSOR => ICURSOR, SQUERY => CSQL); @@ -3587,29 +3650,29 @@ create or replace package body PKG_P8PANELS_MECHREC as while (PKG_SQL_DML.FETCH_ROWS(ICURSOR => ICURSOR) > 0) loop /* Добавляем колонки с данными */ - PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLN(RROW => RDG_ROW, - SNAME => 'NRN', - ICURSOR => ICURSOR, - NPOSITION => 1, - BCLEAR => true); - PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLS(RROW => RDG_ROW, - SNAME => 'SSTATE', - ICURSOR => ICURSOR, - NPOSITION => 2); - PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLS(RROW => RDG_ROW, - SNAME => 'SDOC_INFO', - ICURSOR => ICURSOR, - NPOSITION => 3); - PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLN(RROW => RDG_ROW, - SNAME => 'NQUANT_FACT', - ICURSOR => ICURSOR, - NPOSITION => 4); - PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLD(RROW => RDG_ROW, - SNAME => 'DDUE_DATE', - ICURSOR => ICURSOR, - NPOSITION => 5); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLN(RROW => RDG_ROW, + SNAME => 'NRN', + ICURSOR => ICURSOR, + NPOSITION => 1, + BCLEAR => true); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLS(RROW => RDG_ROW, + SNAME => 'SSTATE', + ICURSOR => ICURSOR, + NPOSITION => 2); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLS(RROW => RDG_ROW, + SNAME => 'SDOC_INFO', + ICURSOR => ICURSOR, + NPOSITION => 3); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLN(RROW => RDG_ROW, + SNAME => 'NQUANT_FACT', + ICURSOR => ICURSOR, + NPOSITION => 4); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLD(RROW => RDG_ROW, + SNAME => 'DDUE_DATE', + ICURSOR => ICURSOR, + NPOSITION => 5); /* Добавляем строку в таблицу */ - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_ROW(RDATA_GRID => RDG, RROW => RDG_ROW); + PKG_P8PANELS_VISUAL.TDG_ADD_ROW(RDATA_GRID => RDG, RROW => RDG_ROW); end loop; exception when others then @@ -3620,7 +3683,7 @@ create or replace package body PKG_P8PANELS_MECHREC as P_SELECTLIST_CLEAR(NIDENT => NFCROUTLST_IDENT); end if; /* Сериализуем описание */ - COUT := PKG_P8PANELS_VISUAL.TDATA_GRID_TO_XML(RDATA_GRID => RDG, NINCLUDE_DEF => NINCLUDE_DEF); + COUT := PKG_P8PANELS_VISUAL.TDG_TO_XML(RDATA_GRID => RDG, NINCLUDE_DEF => NINCLUDE_DEF); exception when others then /* Очищаем отмеченные маршрутные листы */ @@ -3640,9 +3703,9 @@ create or replace package body PKG_P8PANELS_MECHREC as ) is NCOMPANY PKG_STD.TREF := GET_SESSION_COMPANY(); -- Организация сеанса - RO PKG_P8PANELS_VISUAL.TORDERS; -- Сортировки - RDG PKG_P8PANELS_VISUAL.TDATA_GRID; -- Описание таблицы - RDG_ROW PKG_P8PANELS_VISUAL.TROW; -- Строка таблицы + RO PKG_P8PANELS_VISUAL.TDG_ORDERS; -- Сортировки + RDG PKG_P8PANELS_VISUAL.TDG; -- Описание таблицы + RDG_ROW PKG_P8PANELS_VISUAL.TDG_ROW; -- Строка таблицы NROW_FROM PKG_STD.TREF; -- Номер строки с NROW_TO PKG_STD.TREF; -- Номер строки по CSQL clob; -- Буфер для запроса @@ -3684,16 +3747,16 @@ create or replace package body PKG_P8PANELS_MECHREC as /* Инициализация дней месяца */ procedure INIT_DAYS ( - RDG in out nocopy PKG_P8PANELS_VISUAL.TDATA_GRID, -- Описание таблицы - DDATE_FROM in date, -- Дата начала месяца - DDATE_TO in date -- Дата окончания месяца + RDG in out nocopy PKG_P8PANELS_VISUAL.TDG, -- Описание таблицы + DDATE_FROM in date, -- Дата начала месяца + DDATE_TO in date -- Дата окончания месяца ) is - DDATE PKG_STD.TLDATE; -- Сформированная дата дня - NMONTH PKG_STD.TNUMBER; -- Текущий месяц - NYEAR PKG_STD.TNUMBER; -- Текущий год - SDATE_NAME PKG_STD.TSTRING; -- Строковое представление даты для наименования колонки - SPARENT_NAME PKG_STD.TSTRING; -- Наименование родительской строки + DDATE PKG_STD.TLDATE; -- Сформированная дата дня + NMONTH PKG_STD.TNUMBER; -- Текущий месяц + NYEAR PKG_STD.TNUMBER; -- Текущий год + SDATE_NAME PKG_STD.TSTRING; -- Строковое представление даты для наименования колонки + SPARENT_NAME PKG_STD.TSTRING; -- Наименование родительской строки begin /* Считываем месяц и год текущей даты */ NMONTH := D_MONTH(DDATE => sysdate); @@ -3708,11 +3771,11 @@ create or replace package body PKG_P8PANELS_MECHREC as /* Формируем наименование родительской строки */ SPARENT_NAME := 'N_' || SDATE_NAME || '_PLAN_FACT'; /* Описываем родительскую колонку таблицы данных */ - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => SPARENT_NAME, - SCAPTION => LPAD(D_DAY(DDATE), 2, '0'), - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, - SPARENT => 'NVALUE_BY_DAYS'); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => SPARENT_NAME, + SCAPTION => LPAD(D_DAY(DDATE), 2, '0'), + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, + SPARENT => 'NVALUE_BY_DAYS'); end loop; end INIT_DAYS; @@ -3750,98 +3813,98 @@ create or replace package body PKG_P8PANELS_MECHREC as FCPRODPLANSP_CALC(NFCPRODPLAN => NFCPRODPLAN, NCOMPANY => NCOMPANY); end if; /* Читем сортировки */ - RO := PKG_P8PANELS_VISUAL.TORDERS_FROM_XML(CORDERS => CORDERS); + RO := PKG_P8PANELS_VISUAL.TDG_ORDERS_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(BFIXED_HEADER => true, NFIXED_COLUMNS => 7); + RDG := PKG_P8PANELS_VISUAL.TDG_MAKE(BFIXED_HEADER => true, NFIXED_COLUMNS => 7); /* Описываем колонки таблицы данных */ - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'NRN', - SCAPTION => 'Рег. номер', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, - BVISIBLE => false); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'SSTATUS', - SCAPTION => 'Статус', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, - BVISIBLE => false); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'SPROD_ORDER', - SCAPTION => 'Заказ', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, - BVISIBLE => true, - BORDER => true, - SHINT => 'Содержит ссылку на связанные сдаточные накладные.', - NWIDTH => 100); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'SMATRES_CODE', - SCAPTION => 'Обозначение', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, - BVISIBLE => true, - BORDER => true, - SHINT => 'Содержит ссылку на связанные маршрутные листы.

' || - 'Цвет залики отражает следующие статусы:
' || - 'Зеленый - "Факт" равен "План";
' || - 'Голубой - "План" меньше или равно "Факт" + "Запущено";
' || - 'Желтый - предыдущие условия не выполнены и на текущую дату сумма "Количество план" = 0 или меньше "План", то "Факт" больше или равно "План". ' || - 'Иначе сумма "Количество факт" больше или равно сумме "Количество план";
' || - 'Красный - ни одно из предыдущих условий не выполнено.
', - NWIDTH => 120); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'SMATRES_NAME', - SCAPTION => 'Наименование', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, - BVISIBLE => true, - BORDER => true, - NWIDTH => 200); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'SSUBDIV', - SCAPTION => 'Цех-получатель', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, - BVISIBLE => true, - BORDER => true, - NWIDTH => 180); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'NMAIN_QUANT', - SCAPTION => 'План', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, - BVISIBLE => true, - NWIDTH => 80); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'NREL_FACT', - SCAPTION => 'Факт', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, - BVISIBLE => true, - NWIDTH => 80); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'NFCROUTLST_QUANT', - SCAPTION => 'Запущено', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, - BVISIBLE => true, - NWIDTH => 90); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'NVALUE_BY_DAYS', - SCAPTION => 'План/факт по дням', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, - BVISIBLE => true, - SHINT => 'Значения по спецификации "График сдачи":
' || - 'Черный - значение "Количество план";
' || - 'Синий - значение "Количество факт".

' || - 'Заливка серым определяет текущий день.'); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'NSUM_PLAN', - SCAPTION => 'Сумма "Количество план"', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, - BVISIBLE => false); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'NSUM_FACT', - SCAPTION => 'Сумма "Количество факт"', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, - BVISIBLE => false); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'NRN', + SCAPTION => 'Рег. номер', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, + BVISIBLE => false); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'SSTATUS', + SCAPTION => 'Статус', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, + BVISIBLE => false); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'SPROD_ORDER', + SCAPTION => 'Заказ', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, + BVISIBLE => true, + BORDER => true, + SHINT => 'Содержит ссылку на связанные сдаточные накладные.', + NWIDTH => 100); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'SMATRES_CODE', + SCAPTION => 'Обозначение', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, + BVISIBLE => true, + BORDER => true, + SHINT => 'Содержит ссылку на связанные маршрутные листы.

' || + 'Цвет залики отражает следующие статусы:
' || + 'Зеленый - "Факт" равен "План";
' || + 'Голубой - "План" меньше или равно "Факт" + "Запущено";
' || + 'Желтый - предыдущие условия не выполнены и на текущую дату сумма "Количество план" = 0 или меньше "План", то "Факт" больше или равно "План". ' || + 'Иначе сумма "Количество факт" больше или равно сумме "Количество план";
' || + 'Красный - ни одно из предыдущих условий не выполнено.
', + NWIDTH => 120); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'SMATRES_NAME', + SCAPTION => 'Наименование', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, + BVISIBLE => true, + BORDER => true, + NWIDTH => 200); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'SSUBDIV', + SCAPTION => 'Цех-получатель', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, + BVISIBLE => true, + BORDER => true, + NWIDTH => 180); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'NMAIN_QUANT', + SCAPTION => 'План', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, + BVISIBLE => true, + NWIDTH => 80); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'NREL_FACT', + SCAPTION => 'Факт', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, + BVISIBLE => true, + NWIDTH => 80); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'NFCROUTLST_QUANT', + SCAPTION => 'Запущено', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, + BVISIBLE => true, + NWIDTH => 90); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'NVALUE_BY_DAYS', + SCAPTION => 'План/факт по дням', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, + BVISIBLE => true, + SHINT => 'Значения по спецификации "График сдачи":
' || + 'Черный - значение "Количество план";
' || + 'Синий - значение "Количество факт".

' || + 'Заливка серым определяет текущий день.'); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'NSUM_PLAN', + SCAPTION => 'Сумма "Количество план"', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, + BVISIBLE => false); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'NSUM_FACT', + SCAPTION => 'Сумма "Количество факт"', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, + BVISIBLE => false); /* Считываем первый и последний день месяца */ P_FIRST_LAST_DAY(DCALCDATE => sysdate, DBGNDATE => DDATE_FROM, DENDDATE => DDATE_TO); /* Инициализация дней месяца */ @@ -3908,7 +3971,10 @@ create or replace package body PKG_P8PANELS_MECHREC as PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' %ORDER_BY%) D) F'); PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' 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.TDG_ORDERS_SET_QUERY(RDATA_GRID => RDG, + RORDERS => RO, + SPATTERN => '%ORDER_BY%', + CSQL => CSQL); /* Разбираем его */ ICURSOR := PKG_SQL_DML.OPEN_CURSOR(SWHAT => 'SELECT'); PKG_SQL_DML.PARSE(ICURSOR => ICURSOR, SQUERY => CSQL); @@ -3937,33 +4003,36 @@ create or replace package body PKG_P8PANELS_MECHREC as /* Читаем данные из курсора */ PKG_SQL_DML.COLUMN_VALUE_NUM(ICURSOR => ICURSOR, IPOSITION => 1, NVALUE => NFCPRODPLANSP); /* Добавляем колонку с рег. номером */ - PKG_P8PANELS_VISUAL.TROW_ADD_COL(RROW => RDG_ROW, SNAME => 'NRN', NVALUE => NFCPRODPLANSP, BCLEAR => true); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_COL(RROW => RDG_ROW, SNAME => 'NRN', NVALUE => NFCPRODPLANSP, BCLEAR => true); /* Добавляем колонки с данными */ - PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLS(RROW => RDG_ROW, - SNAME => 'SPROD_ORDER', - ICURSOR => ICURSOR, - NPOSITION => 2); - PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLS(RROW => RDG_ROW, - SNAME => 'SMATRES_CODE', - ICURSOR => ICURSOR, - NPOSITION => 3); - PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLS(RROW => RDG_ROW, - SNAME => 'SMATRES_NAME', - ICURSOR => ICURSOR, - NPOSITION => 4); - PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLS(RROW => RDG_ROW, SNAME => 'SSUBDIV', ICURSOR => ICURSOR, NPOSITION => 5); - PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLN(RROW => RDG_ROW, - SNAME => 'NMAIN_QUANT', - ICURSOR => ICURSOR, - NPOSITION => 6); - PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLN(RROW => RDG_ROW, - SNAME => 'NREL_FACT', - ICURSOR => ICURSOR, - NPOSITION => 7); - PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLN(RROW => RDG_ROW, - SNAME => 'NFCROUTLST_QUANT', - ICURSOR => ICURSOR, - NPOSITION => 8); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLS(RROW => RDG_ROW, + SNAME => 'SPROD_ORDER', + ICURSOR => ICURSOR, + NPOSITION => 2); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLS(RROW => RDG_ROW, + SNAME => 'SMATRES_CODE', + ICURSOR => ICURSOR, + NPOSITION => 3); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLS(RROW => RDG_ROW, + SNAME => 'SMATRES_NAME', + ICURSOR => ICURSOR, + NPOSITION => 4); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLS(RROW => RDG_ROW, + SNAME => 'SSUBDIV', + ICURSOR => ICURSOR, + NPOSITION => 5); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLN(RROW => RDG_ROW, + SNAME => 'NMAIN_QUANT', + ICURSOR => ICURSOR, + NPOSITION => 6); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLN(RROW => RDG_ROW, + SNAME => 'NREL_FACT', + ICURSOR => ICURSOR, + NPOSITION => 7); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLN(RROW => RDG_ROW, + SNAME => 'NFCROUTLST_QUANT', + ICURSOR => ICURSOR, + NPOSITION => 8); /* Считываем рег. номер связанной спецификации из "Производственная программа" */ NFCPRODPLANSP_MAIN := UTL_FCPRODPLANSP_MAIN_GET(NCOMPANY => NCOMPANY, NFCPRODPLANSP => NFCPRODPLANSP); /* Если есть связанная спецификация из производственной программы */ @@ -4028,9 +4097,9 @@ create or replace package body PKG_P8PANELS_MECHREC as group by TMP.DOC_DATE) loop /* Добавляем значение план/факт в соответствующую колонку */ - PKG_P8PANELS_VISUAL.TROW_ADD_COL(RROW => RDG_ROW, - SNAME => 'N_' || TO_CHAR(REC.DOC_DATE, SCOL_PATTERN_DATE) || '_PLAN_FACT', - SVALUE => TO_CHAR(REC.QUANT_PLAN) || '/' || TO_CHAR(REC.QUANT_FACT)); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_COL(RROW => RDG_ROW, + SNAME => 'N_' || TO_CHAR(REC.DOC_DATE, SCOL_PATTERN_DATE) || '_PLAN_FACT', + SVALUE => TO_CHAR(REC.QUANT_PLAN) || '/' || TO_CHAR(REC.QUANT_FACT)); /* Если это ранее текущей даты */ if (REC.DOC_DATE <= DDATE) then /* Добавляем к сумме по строке */ @@ -4039,10 +4108,10 @@ create or replace package body PKG_P8PANELS_MECHREC as end if; end loop; /* Добавляем колонки с суммами */ - PKG_P8PANELS_VISUAL.TROW_ADD_COL(RROW => RDG_ROW, SNAME => 'NSUM_PLAN', NVALUE => NSUM_PLAN); - PKG_P8PANELS_VISUAL.TROW_ADD_COL(RROW => RDG_ROW, SNAME => 'NSUM_FACT', NVALUE => NSUM_FACT); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_COL(RROW => RDG_ROW, SNAME => 'NSUM_PLAN', NVALUE => NSUM_PLAN); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_COL(RROW => RDG_ROW, SNAME => 'NSUM_FACT', NVALUE => NSUM_FACT); /* Добавляем строку в таблицу */ - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_ROW(RDATA_GRID => RDG, RROW => RDG_ROW); + PKG_P8PANELS_VISUAL.TDG_ADD_ROW(RDATA_GRID => RDG, RROW => RDG_ROW); /* Очищаем отмеченные маршрутные листы */ P_SELECTLIST_CLEAR(NIDENT => NFCROUTLST_IDENT); end loop; @@ -4054,7 +4123,7 @@ create or replace package body PKG_P8PANELS_MECHREC as raise; end; /* Сериализуем описание */ - COUT := PKG_P8PANELS_VISUAL.TDATA_GRID_TO_XML(RDATA_GRID => RDG, NINCLUDE_DEF => NINCLUDE_DEF); + COUT := PKG_P8PANELS_VISUAL.TDG_TO_XML(RDATA_GRID => RDG, NINCLUDE_DEF => NINCLUDE_DEF); end FCPRODPLANSP_DEPT_DG_GET; /* Инициализация записей раздела "Планы и отчеты производства изделий" */ @@ -4603,9 +4672,9 @@ create or replace package body PKG_P8PANELS_MECHREC as ) is NCOMPANY PKG_STD.TREF := GET_SESSION_COMPANY(); -- Организация сеанса - RO PKG_P8PANELS_VISUAL.TORDERS; -- Сортировки - RDG PKG_P8PANELS_VISUAL.TDATA_GRID; -- Описание таблицы - RDG_ROW PKG_P8PANELS_VISUAL.TROW; -- Строка таблицы + RO PKG_P8PANELS_VISUAL.TDG_ORDERS; -- Сортировки + RDG PKG_P8PANELS_VISUAL.TDG; -- Описание таблицы + RDG_ROW PKG_P8PANELS_VISUAL.TDG_ROW; -- Строка таблицы NROW_FROM PKG_STD.TREF; -- Номер строки с NROW_TO PKG_STD.TREF; -- Номер строки по CSQL clob; -- Буфер для запроса @@ -4613,7 +4682,7 @@ create or replace package body PKG_P8PANELS_MECHREC as NVERSION PKG_STD.TREF; -- Версия контрагентов begin /* Читем сортировки */ - RO := PKG_P8PANELS_VISUAL.TORDERS_FROM_XML(CORDERS => CORDERS); + RO := PKG_P8PANELS_VISUAL.TDG_ORDERS_FROM_XML(CORDERS => CORDERS); /* Считываем версию контрагентов */ FIND_VERSION_BY_COMPANY(NCOMPANY => NCOMPANY, SUNITCODE => 'AGNLIST', NVERSION => NVERSION); /* Преобразуем номер и размер страницы в номер строк с и по */ @@ -4622,64 +4691,64 @@ create or replace package body PKG_P8PANELS_MECHREC as NROW_FROM => NROW_FROM, NROW_TO => NROW_TO); /* Инициализируем таблицу данных */ - RDG := PKG_P8PANELS_VISUAL.TDATA_GRID_MAKE(BFIXED_HEADER => true, NFIXED_COLUMNS => 8); + RDG := PKG_P8PANELS_VISUAL.TDG_MAKE(BFIXED_HEADER => true, NFIXED_COLUMNS => 8); /* Описываем колонки таблицы данных */ - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'NRN', - SCAPTION => 'Рег. номер', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, - BVISIBLE => false); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'NSELECT', - SCAPTION => 'Выбран', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'NPRIOR_PARTY', - SCAPTION => 'Приоритет партии', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, - NWIDTH => 80); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'SFCROUTLST', - SCAPTION => 'МЛ', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, - BORDER => true); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'SMATRES', - SCAPTION => 'ДСЕ', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, - BORDER => true); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'SOPER', - SCAPTION => 'Операция', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, - BORDER => true); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'NQUANT_PLAN', - SCAPTION => 'Количество', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'NLABOUR_PLAN', - SCAPTION => 'Трудоемкость', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'SEQCONFIG', - SCAPTION => 'Станок', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'NEQCONFIG', - SCAPTION => 'Рег. номер станка', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, - BVISIBLE => false); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'NEQUIP_PLAN', - SCAPTION => 'Рег. номер оборудования', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, - BVISIBLE => false); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'DBEG_FACT', - SCAPTION => 'Дата начала факт', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_DATE, - BVISIBLE => false); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'NRN', + SCAPTION => 'Рег. номер', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, + BVISIBLE => false); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'NSELECT', + SCAPTION => 'Выбран', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'NPRIOR_PARTY', + SCAPTION => 'Приоритет партии', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, + NWIDTH => 80); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'SFCROUTLST', + SCAPTION => 'МЛ', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, + BORDER => true); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'SMATRES', + SCAPTION => 'ДСЕ', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, + BORDER => true); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'SOPER', + SCAPTION => 'Операция', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, + BORDER => true); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'NQUANT_PLAN', + SCAPTION => 'Количество', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'NLABOUR_PLAN', + SCAPTION => 'Трудоемкость', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'SEQCONFIG', + SCAPTION => 'Станок', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'NEQCONFIG', + SCAPTION => 'Рег. номер станка', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, + BVISIBLE => false); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'NEQUIP_PLAN', + SCAPTION => 'Рег. номер оборудования', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, + BVISIBLE => false); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'DBEG_FACT', + SCAPTION => 'Дата начала факт', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_DATE, + BVISIBLE => false); /* Обходим данные */ begin /* Добавляем подсказку совместимости */ @@ -4718,7 +4787,10 @@ create or replace package body PKG_P8PANELS_MECHREC as /* Если сортировки не указаны */ if (CORDERS is not null) then /* Учтём сортировки */ - PKG_P8PANELS_VISUAL.TORDERS_SET_QUERY(RDATA_GRID => RDG, RORDERS => RO, SPATTERN => '%ORDER_BY%', CSQL => CSQL); + PKG_P8PANELS_VISUAL.TDG_ORDERS_SET_QUERY(RDATA_GRID => RDG, + RORDERS => RO, + SPATTERN => '%ORDER_BY%', + CSQL => CSQL); else /* Устанавливаем стандартную сортировку */ CSQL := replace(CSQL, '%ORDER_BY%', 'order by T.PRIOR_PARTY asc, T.BEG_PLAN asc'); @@ -4752,48 +4824,51 @@ create or replace package body PKG_P8PANELS_MECHREC as while (PKG_SQL_DML.FETCH_ROWS(ICURSOR => ICURSOR) > 0) loop /* Добавляем колонки с данными */ - PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLN(RROW => RDG_ROW, - SNAME => 'NRN', - ICURSOR => ICURSOR, - NPOSITION => 1, - BCLEAR => true); - PKG_P8PANELS_VISUAL.TROW_ADD_COL(RROW => RDG_ROW, SNAME => 'NSELECT', NVALUE => 0); - PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLN(RROW => RDG_ROW, - SNAME => 'NPRIOR_PARTY', - ICURSOR => ICURSOR, - NPOSITION => 2); - PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLS(RROW => RDG_ROW, - SNAME => 'SFCROUTLST', - ICURSOR => ICURSOR, - NPOSITION => 3); - PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLS(RROW => RDG_ROW, SNAME => 'SMATRES', ICURSOR => ICURSOR, NPOSITION => 4); - PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLS(RROW => RDG_ROW, SNAME => 'SOPER', ICURSOR => ICURSOR, NPOSITION => 5); - PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLN(RROW => RDG_ROW, - SNAME => 'NQUANT_PLAN', - ICURSOR => ICURSOR, - NPOSITION => 6); - PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLN(RROW => RDG_ROW, - SNAME => 'NLABOUR_PLAN', - ICURSOR => ICURSOR, - NPOSITION => 7); - PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLS(RROW => RDG_ROW, - SNAME => 'SEQCONFIG', - ICURSOR => ICURSOR, - NPOSITION => 8); - PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLN(RROW => RDG_ROW, - SNAME => 'NEQCONFIG', - ICURSOR => ICURSOR, - NPOSITION => 9); - PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLN(RROW => RDG_ROW, - SNAME => 'NEQUIP_PLAN', - ICURSOR => ICURSOR, - NPOSITION => 10); - PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLD(RROW => RDG_ROW, - SNAME => 'DBEG_FACT', - ICURSOR => ICURSOR, - NPOSITION => 11); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLN(RROW => RDG_ROW, + SNAME => 'NRN', + ICURSOR => ICURSOR, + NPOSITION => 1, + BCLEAR => true); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_COL(RROW => RDG_ROW, SNAME => 'NSELECT', NVALUE => 0); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLN(RROW => RDG_ROW, + SNAME => 'NPRIOR_PARTY', + ICURSOR => ICURSOR, + NPOSITION => 2); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLS(RROW => RDG_ROW, + SNAME => 'SFCROUTLST', + ICURSOR => ICURSOR, + NPOSITION => 3); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLS(RROW => RDG_ROW, + SNAME => 'SMATRES', + ICURSOR => ICURSOR, + NPOSITION => 4); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLS(RROW => RDG_ROW, SNAME => 'SOPER', ICURSOR => ICURSOR, NPOSITION => 5); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLN(RROW => RDG_ROW, + SNAME => 'NQUANT_PLAN', + ICURSOR => ICURSOR, + NPOSITION => 6); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLN(RROW => RDG_ROW, + SNAME => 'NLABOUR_PLAN', + ICURSOR => ICURSOR, + NPOSITION => 7); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLS(RROW => RDG_ROW, + SNAME => 'SEQCONFIG', + ICURSOR => ICURSOR, + NPOSITION => 8); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLN(RROW => RDG_ROW, + SNAME => 'NEQCONFIG', + ICURSOR => ICURSOR, + NPOSITION => 9); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLN(RROW => RDG_ROW, + SNAME => 'NEQUIP_PLAN', + ICURSOR => ICURSOR, + NPOSITION => 10); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLD(RROW => RDG_ROW, + SNAME => 'DBEG_FACT', + ICURSOR => ICURSOR, + NPOSITION => 11); /* Добавляем строку в таблицу */ - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_ROW(RDATA_GRID => RDG, RROW => RDG_ROW); + PKG_P8PANELS_VISUAL.TDG_ADD_ROW(RDATA_GRID => RDG, RROW => RDG_ROW); end loop; exception when others then @@ -4801,7 +4876,7 @@ create or replace package body PKG_P8PANELS_MECHREC as raise; end; /* Сериализуем описание */ - COUT := PKG_P8PANELS_VISUAL.TDATA_GRID_TO_XML(RDATA_GRID => RDG, NINCLUDE_DEF => NINCLUDE_DEF); + COUT := PKG_P8PANELS_VISUAL.TDG_TO_XML(RDATA_GRID => RDG, NINCLUDE_DEF => NINCLUDE_DEF); end FCJOBSSP_DG_GET; /* Получение составов оборудования подразделения */ @@ -4817,9 +4892,9 @@ create or replace package body PKG_P8PANELS_MECHREC as ) is NCOMPANY PKG_STD.TREF := GET_SESSION_COMPANY(); -- Организация сеанса - RO PKG_P8PANELS_VISUAL.TORDERS; -- Сортировки - RDG PKG_P8PANELS_VISUAL.TDATA_GRID; -- Описание таблицы - RDG_ROW PKG_P8PANELS_VISUAL.TROW; -- Строка таблицы + RO PKG_P8PANELS_VISUAL.TDG_ORDERS; -- Сортировки + RDG PKG_P8PANELS_VISUAL.TDG; -- Описание таблицы + RDG_ROW PKG_P8PANELS_VISUAL.TDG_ROW; -- Строка таблицы NROW_FROM PKG_STD.TREF; -- Номер строки с NROW_TO PKG_STD.TREF; -- Номер строки по CSQL clob; -- Буфер для запроса @@ -4833,44 +4908,44 @@ create or replace package body PKG_P8PANELS_MECHREC as NDICMUNTS_WD PKG_STD.TREF; -- Рег. номер ед. изм. нормочасов begin /* Читем сортировки */ - RO := PKG_P8PANELS_VISUAL.TORDERS_FROM_XML(CORDERS => CORDERS); + RO := PKG_P8PANELS_VISUAL.TDG_ORDERS_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(BFIXED_HEADER => true, NFIXED_COLUMNS => 4); + RDG := PKG_P8PANELS_VISUAL.TDG_MAKE(BFIXED_HEADER => true, NFIXED_COLUMNS => 4); /* Описываем колонки таблицы данных */ - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'NRN', - SCAPTION => 'Рег. номер', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, - BVISIBLE => false); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'NSELECT', - SCAPTION => 'Выбран', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'SCODE', - SCAPTION => 'Станок', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, - BORDER => true); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'NSUM_LABOUR', - SCAPTION => 'Загрузка в н/ч', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, - BORDER => true); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'NLOADING', - SCAPTION => 'Загрузка в %', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, - BORDER => true); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'NEQUIPMENT', - SCAPTION => 'Рег. номер оборудования', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, - BVISIBLE => false); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'NRN', + SCAPTION => 'Рег. номер', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, + BVISIBLE => false); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'NSELECT', + SCAPTION => 'Выбран', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'SCODE', + SCAPTION => 'Станок', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, + BORDER => true); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'NSUM_LABOUR', + SCAPTION => 'Загрузка в н/ч', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, + BORDER => true); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'NLOADING', + SCAPTION => 'Загрузка в %', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, + BORDER => true); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'NEQUIPMENT', + SCAPTION => 'Рег. номер оборудования', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, + BVISIBLE => false); /* Считываем единицу измерения минут */ FIND_DICMUNTS_CODE(NFLAG_SMART => 0, NFLAG_OPTION => 0, @@ -4912,7 +4987,10 @@ create or replace package body PKG_P8PANELS_MECHREC as PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' %ORDER_BY%) D) F'); PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' 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.TDG_ORDERS_SET_QUERY(RDATA_GRID => RDG, + RORDERS => RO, + SPATTERN => '%ORDER_BY%', + CSQL => CSQL); /* Разбираем его */ ICURSOR := PKG_SQL_DML.OPEN_CURSOR(SWHAT => 'SELECT'); PKG_SQL_DML.PARSE(ICURSOR => ICURSOR, SQUERY => CSQL); @@ -4967,17 +5045,20 @@ create or replace package body PKG_P8PANELS_MECHREC as end if; end if; /* Добавляем колонки с данными */ - PKG_P8PANELS_VISUAL.TROW_ADD_COL(RROW => RDG_ROW, SNAME => 'NRN', NVALUE => NEQCONFIG, BCLEAR => true); - PKG_P8PANELS_VISUAL.TROW_ADD_COL(RROW => RDG_ROW, SNAME => 'NSELECT', NVALUE => 0); - PKG_P8PANELS_VISUAL.TROW_ADD_COL(RROW => RDG_ROW, SNAME => 'NSUM_LABOUR', NVALUE => NSUM_LABOUR); - PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLS(RROW => RDG_ROW, SNAME => 'SCODE', ICURSOR => ICURSOR, NPOSITION => 2); - PKG_P8PANELS_VISUAL.TROW_ADD_COL(RROW => RDG_ROW, SNAME => 'NLOADING', NVALUE => NLOADING); - PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLN(RROW => RDG_ROW, - SNAME => 'NEQUIPMENT', - ICURSOR => ICURSOR, - NPOSITION => 3); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_COL(RROW => RDG_ROW, SNAME => 'NRN', NVALUE => NEQCONFIG, BCLEAR => true); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_COL(RROW => RDG_ROW, SNAME => 'NSELECT', NVALUE => 0); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_COL(RROW => RDG_ROW, SNAME => 'NSUM_LABOUR', NVALUE => NSUM_LABOUR); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLS(RROW => RDG_ROW, + SNAME => 'SCODE', + ICURSOR => ICURSOR, + NPOSITION => 2); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_COL(RROW => RDG_ROW, SNAME => 'NLOADING', NVALUE => NLOADING); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLN(RROW => RDG_ROW, + SNAME => 'NEQUIPMENT', + ICURSOR => ICURSOR, + NPOSITION => 3); /* Добавляем строку в таблицу */ - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_ROW(RDATA_GRID => RDG, RROW => RDG_ROW); + PKG_P8PANELS_VISUAL.TDG_ADD_ROW(RDATA_GRID => RDG, RROW => RDG_ROW); end loop; exception when others then @@ -4986,7 +5067,7 @@ create or replace package body PKG_P8PANELS_MECHREC as end; end if; /* Сериализуем описание */ - COUT := PKG_P8PANELS_VISUAL.TDATA_GRID_TO_XML(RDATA_GRID => RDG, NINCLUDE_DEF => NINCLUDE_DEF); + COUT := PKG_P8PANELS_VISUAL.TDG_TO_XML(RDATA_GRID => RDG, NINCLUDE_DEF => NINCLUDE_DEF); end EQCONFIG_DG_GET; /* Инициализация записей раздела "Планы и отчеты производства изделий" */ @@ -5186,8 +5267,8 @@ create or replace package body PKG_P8PANELS_MECHREC as ) is NCOMPANY PKG_STD.TREF := GET_SESSION_COMPANY(); -- Организация сеанса - RDG PKG_P8PANELS_VISUAL.TDATA_GRID; -- Описание таблицы - RDG_ROW PKG_P8PANELS_VISUAL.TROW; -- Строка таблицы + RDG PKG_P8PANELS_VISUAL.TDG; -- Описание таблицы + RDG_ROW PKG_P8PANELS_VISUAL.TDG_ROW; -- Строка таблицы NROW_FROM PKG_STD.TREF; -- Номер строки с NROW_TO PKG_STD.TREF; -- Номер строки по CSQL clob; -- Буфер для запроса @@ -5201,29 +5282,29 @@ create or replace package body PKG_P8PANELS_MECHREC as NROW_FROM => NROW_FROM, NROW_TO => NROW_TO); /* Инициализируем таблицу данных */ - RDG := PKG_P8PANELS_VISUAL.TDATA_GRID_MAKE(); + RDG := PKG_P8PANELS_VISUAL.TDG_MAKE(); /* Описываем колонки таблицы данных */ - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'NRN', - SCAPTION => 'Рег. номер', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, - BVISIBLE => false); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'SCODE', - SCAPTION => 'Мнемокод', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'SNAME', - SCAPTION => 'Наименование', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'DBGNDATE', - SCAPTION => 'Действует с', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_DATE); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'DENDDATE', - SCAPTION => 'Действует по', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_DATE); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'NRN', + SCAPTION => 'Рег. номер', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, + BVISIBLE => false); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'SCODE', + SCAPTION => 'Мнемокод', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'SNAME', + SCAPTION => 'Наименование', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'DBGNDATE', + SCAPTION => 'Действует с', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_DATE); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'DENDDATE', + SCAPTION => 'Действует по', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_DATE); /* Считываем первый и последний день месяца */ P_FIRST_LAST_DAY(DCALCDATE => TO_DATE(SMONTH_YEAR, 'mm.yyyy'), DBGNDATE => DDATE_FROM, DENDDATE => DDATE_TO); /* Обходим данные */ @@ -5273,17 +5354,23 @@ create or replace package body PKG_P8PANELS_MECHREC as while (PKG_SQL_DML.FETCH_ROWS(ICURSOR => ICURSOR) > 0) loop /* Добавляем колонки с данными */ - PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLN(RROW => RDG_ROW, - SNAME => 'NRN', - ICURSOR => ICURSOR, - NPOSITION => 1, - BCLEAR => true); - PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLS(RROW => RDG_ROW, SNAME => 'SCODE', ICURSOR => ICURSOR, NPOSITION => 2); - PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLS(RROW => RDG_ROW, SNAME => 'SNAME', ICURSOR => ICURSOR, NPOSITION => 3); - PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLD(RROW => RDG_ROW, SNAME => 'DBGNDATE', ICURSOR => ICURSOR, NPOSITION => 4); - PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLD(RROW => RDG_ROW, SNAME => 'DENDDATE', ICURSOR => ICURSOR, NPOSITION => 5); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLN(RROW => RDG_ROW, + SNAME => 'NRN', + ICURSOR => ICURSOR, + NPOSITION => 1, + BCLEAR => true); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLS(RROW => RDG_ROW, SNAME => 'SCODE', ICURSOR => ICURSOR, NPOSITION => 2); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLS(RROW => RDG_ROW, SNAME => 'SNAME', ICURSOR => ICURSOR, NPOSITION => 3); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLD(RROW => RDG_ROW, + SNAME => 'DBGNDATE', + ICURSOR => ICURSOR, + NPOSITION => 4); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLD(RROW => RDG_ROW, + SNAME => 'DENDDATE', + ICURSOR => ICURSOR, + NPOSITION => 5); /* Добавляем строку в таблицу */ - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_ROW(RDATA_GRID => RDG, RROW => RDG_ROW); + PKG_P8PANELS_VISUAL.TDG_ADD_ROW(RDATA_GRID => RDG, RROW => RDG_ROW); end loop; exception when others then @@ -5291,7 +5378,7 @@ create or replace package body PKG_P8PANELS_MECHREC as raise; end; /* Сериализуем описание */ - COUT := PKG_P8PANELS_VISUAL.TDATA_GRID_TO_XML(RDATA_GRID => RDG, NINCLUDE_DEF => NINCLUDE_DEF); + COUT := PKG_P8PANELS_VISUAL.TDG_TO_XML(RDATA_GRID => RDG, NINCLUDE_DEF => NINCLUDE_DEF); end INS_DEPARTMENT_DG_GET; /* Получение загрузки цеха */ @@ -5309,9 +5396,9 @@ create or replace package body PKG_P8PANELS_MECHREC as is NCOMPANY PKG_STD.TREF := GET_SESSION_COMPANY(); -- Организация сеанса SUTILIZER PKG_STD.TSTRING := UTILIZER(); -- Пользователь сеанса - RO PKG_P8PANELS_VISUAL.TORDERS; -- Сортировки - RDG PKG_P8PANELS_VISUAL.TDATA_GRID; -- Описание таблицы - RDG_ROW PKG_P8PANELS_VISUAL.TROW; -- Строка таблицы + RO PKG_P8PANELS_VISUAL.TDG_ORDERS; -- Сортировки + RDG PKG_P8PANELS_VISUAL.TDG; -- Описание таблицы + RDG_ROW PKG_P8PANELS_VISUAL.TDG_ROW; -- Строка таблицы NROW_FROM PKG_STD.TREF; -- Номер строки с NROW_TO PKG_STD.TREF; -- Номер строки по CSQL clob; -- Буфер для запроса @@ -5440,16 +5527,16 @@ create or replace package body PKG_P8PANELS_MECHREC as /* Инициализация дней месяца */ procedure DAYS_INIT ( - RDG in out nocopy PKG_P8PANELS_VISUAL.TDATA_GRID, -- Описание таблицы - TJOB_DAYS in out nocopy TJOB_DAYS, -- Коллекция дней месяца - DDATE_FROM in date, -- Дата начала месяца - DDATE_TO in date -- Дата окончания месяца + RDG in out nocopy PKG_P8PANELS_VISUAL.TDG, -- Описание таблицы + TJOB_DAYS in out nocopy TJOB_DAYS, -- Коллекция дней месяца + DDATE_FROM in date, -- Дата начала месяца + DDATE_TO in date -- Дата окончания месяца ) is - DDATE PKG_STD.TLDATE; -- Сформированная дата дня - NMONTH PKG_STD.TNUMBER; -- Текущий месяц - NYEAR PKG_STD.TNUMBER; -- Текущий год - SDATE_NAME PKG_STD.TSTRING; -- Строковое представление даты для наименования колонки + DDATE PKG_STD.TLDATE; -- Сформированная дата дня + NMONTH PKG_STD.TNUMBER; -- Текущий месяц + NYEAR PKG_STD.TNUMBER; -- Текущий год + SDATE_NAME PKG_STD.TSTRING; -- Строковое представление даты для наименования колонки begin /* Считываем месяц и год текущей даты */ NMONTH := D_MONTH(DDATE => DDATE_FROM); @@ -5462,18 +5549,18 @@ create or replace package body PKG_P8PANELS_MECHREC as /* Строковое представление даты для наименования колонки */ SDATE_NAME := TO_CHAR(DDATE, SCOL_PATTERN_DATE); /* Описываем родительскую колонку таблицы данных */ - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'N_' || SDATE_NAME || '_VALUE', - SCAPTION => LPAD(D_DAY(DDATE), 2, '0'), - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, - SPARENT => 'NVALUE_BY_DAYS'); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'N_' || SDATE_NAME || '_VALUE', + SCAPTION => LPAD(D_DAY(DDATE), 2, '0'), + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, + SPARENT => 'NVALUE_BY_DAYS'); /* Описываем родительскую колонку таблицы данных */ - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'N_' || SDATE_NAME || '_TYPE', - SCAPTION => LPAD(D_DAY(DDATE), 2, '0'), - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, - BVISIBLE => false, - SPARENT => 'NVALUE_BY_DAYS'); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'N_' || SDATE_NAME || '_TYPE', + SCAPTION => LPAD(D_DAY(DDATE), 2, '0'), + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, + BVISIBLE => false, + SPARENT => 'NVALUE_BY_DAYS'); /* Добавляем день в коллекцию */ TJOB_DAYS_ADD(TDAYS => TJOB_DAYS, DDATE => DDATE, NVALUE => null, NTYPE => 0); end loop; @@ -5570,50 +5657,50 @@ create or replace package body PKG_P8PANELS_MECHREC as end DAYS_FILL; begin /* Читем сортировки */ - RO := PKG_P8PANELS_VISUAL.TORDERS_FROM_XML(CORDERS => CORDERS); + RO := PKG_P8PANELS_VISUAL.TDG_ORDERS_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(BFIXED_HEADER => true, NFIXED_COLUMNS => 4); + RDG := PKG_P8PANELS_VISUAL.TDG_MAKE(BFIXED_HEADER => true, NFIXED_COLUMNS => 4); /* Описываем колонки таблицы данных */ - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'NRN', - SCAPTION => 'Рег. номер', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, - BVISIBLE => false); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'SSUBDIV', - SCAPTION => 'Участок', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, - BORDER => true, - NWIDTH => 120); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'SNAME', - SCAPTION => 'Станок', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, - NWIDTH => 240); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'NLOAD', - SCAPTION => 'Загрузка (н/ч)', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, - NWIDTH => 80); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'NPROCENT_LOAD', - SCAPTION => 'Загрузка (%)', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, - NWIDTH => 80); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'NVALUE_BY_DAYS', - SCAPTION => 'Загрузка в н/ч по дням месяца', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, - SHINT => 'Отображает сумму трудоемкости по дням месяца.

' || - 'Цвет значения отражает трудоемкость план/факт.
' || - 'Если дата месяца больше или равна текущей, то отображается трудоемкость "План", иначе "Факт":
' || - 'Черный - сумма трудоемкости "План";
' || - 'Голубой - сумма трудоемкости "Факт";
'); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'NRN', + SCAPTION => 'Рег. номер', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, + BVISIBLE => false); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'SSUBDIV', + SCAPTION => 'Участок', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, + BORDER => true, + NWIDTH => 120); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'SNAME', + SCAPTION => 'Станок', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, + NWIDTH => 240); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'NLOAD', + SCAPTION => 'Загрузка (н/ч)', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, + NWIDTH => 80); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'NPROCENT_LOAD', + SCAPTION => 'Загрузка (%)', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, + NWIDTH => 80); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'NVALUE_BY_DAYS', + SCAPTION => 'Загрузка в н/ч по дням месяца', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, + SHINT => 'Отображает сумму трудоемкости по дням месяца.

' || + 'Цвет значения отражает трудоемкость план/факт.
' || + 'Если дата месяца больше или равна текущей, то отображается трудоемкость "План", иначе "Факт":
' || + 'Черный - сумма трудоемкости "План";
' || + 'Голубой - сумма трудоемкости "Факт";
'); /* Считываем первый и последний день месяца */ P_FIRST_LAST_DAY(DCALCDATE => TO_DATE(SMONTH_YEAR, 'mm.yyyy'), DBGNDATE => DDATE_FROM, DENDDATE => DDATE_TO); /* Считываем единицу измерения нормочасов */ @@ -5686,7 +5773,10 @@ create or replace package body PKG_P8PANELS_MECHREC as PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' ) D) F'); PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' 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.TDG_ORDERS_SET_QUERY(RDATA_GRID => RDG, + RORDERS => RO, + SPATTERN => '%ORDER_BY%', + CSQL => CSQL); /* Разбираем его */ ICURSOR := PKG_SQL_DML.OPEN_CURSOR(SWHAT => 'SELECT'); PKG_SQL_DML.PARSE(ICURSOR => ICURSOR, SQUERY => CSQL); @@ -5716,12 +5806,15 @@ create or replace package body PKG_P8PANELS_MECHREC as /* Считываем рег. номер станка */ PKG_SQL_DML.COLUMN_VALUE_NUM(ICURSOR => ICURSOR, IPOSITION => 1, NVALUE => NEQCONFIG); /* Добавляем колонки с данными */ - PKG_P8PANELS_VISUAL.TROW_ADD_COL(RROW => RDG_ROW, SNAME => 'NRN', NVALUE => NEQCONFIG, BCLEAR => true); - PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLS(RROW => RDG_ROW, SNAME => 'SNAME', ICURSOR => ICURSOR, NPOSITION => 2); - PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLS(RROW => RDG_ROW, - SNAME => 'SSUBDIV', - ICURSOR => ICURSOR, - NPOSITION => 3); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_COL(RROW => RDG_ROW, SNAME => 'NRN', NVALUE => NEQCONFIG, BCLEAR => true); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLS(RROW => RDG_ROW, + SNAME => 'SNAME', + ICURSOR => ICURSOR, + NPOSITION => 2); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLS(RROW => RDG_ROW, + SNAME => 'SSUBDIV', + ICURSOR => ICURSOR, + NPOSITION => 3); /* Считываем загрузку в нормочасах */ PKG_SQL_DML.COLUMN_VALUE_NUM(ICURSOR => ICURSOR, IPOSITION => 4, NVALUE => NLOAD); /* Округляем загрузку */ @@ -5735,8 +5828,8 @@ create or replace package body PKG_P8PANELS_MECHREC as NPROCENT_LOAD := 0; end if; /* Устанавливаем загрузку */ - PKG_P8PANELS_VISUAL.TROW_ADD_COL(RROW => RDG_ROW, SNAME => 'NLOAD', NVALUE => NLOAD); - PKG_P8PANELS_VISUAL.TROW_ADD_COL(RROW => RDG_ROW, SNAME => 'NPROCENT_LOAD', NVALUE => NPROCENT_LOAD); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_COL(RROW => RDG_ROW, SNAME => 'NLOAD', NVALUE => NLOAD); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_COL(RROW => RDG_ROW, SNAME => 'NPROCENT_LOAD', NVALUE => NPROCENT_LOAD); /* Если у оборудования есть загрузка */ if (NLOAD <> 0) then /* Обходим загруженность по дням */ @@ -5781,17 +5874,19 @@ create or replace package body PKG_P8PANELS_MECHREC as for I in TDAYS.FIRST .. TDAYS.LAST loop /* Отмечаем значение дня */ - PKG_P8PANELS_VISUAL.TROW_ADD_COL(RROW => RDG_ROW, - SNAME => 'N_' || TO_CHAR(TDAYS(I).DDATE, SCOL_PATTERN_DATE) || '_VALUE', - NVALUE => ROUND(TDAYS(I).NVALUE, 1)); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_COL(RROW => RDG_ROW, + SNAME => 'N_' || TO_CHAR(TDAYS(I).DDATE, SCOL_PATTERN_DATE) || + '_VALUE', + NVALUE => ROUND(TDAYS(I).NVALUE, 1)); /* Если рабочий календарь считан */ if (NENPERIOD is not null) then /* Отмечаем тип дня */ - PKG_P8PANELS_VISUAL.TROW_ADD_COL(RROW => RDG_ROW, - SNAME => 'N_' || TO_CHAR(TDAYS(I).DDATE, SCOL_PATTERN_DATE) || '_TYPE', - NVALUE => DAY_TYPE_GET(NENPERIOD => NENPERIOD, - DDATE => TDAYS(I).DDATE, - DCURRENT_DAY => DCURRENT_DAY)); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_COL(RROW => RDG_ROW, + SNAME => 'N_' || TO_CHAR(TDAYS(I).DDATE, SCOL_PATTERN_DATE) || + '_TYPE', + NVALUE => DAY_TYPE_GET(NENPERIOD => NENPERIOD, + DDATE => TDAYS(I).DDATE, + DCURRENT_DAY => DCURRENT_DAY)); end if; /* Обнуляем значение */ TDAYS(I).NVALUE := null; @@ -5801,22 +5896,24 @@ create or replace package body PKG_P8PANELS_MECHREC as for I in TDAYS.FIRST .. TDAYS.LAST loop /* Отмечаем значение дня */ - PKG_P8PANELS_VISUAL.TROW_ADD_COL(RROW => RDG_ROW, - SNAME => 'N_' || TO_CHAR(TDAYS(I).DDATE, SCOL_PATTERN_DATE) || '_VALUE', - NVALUE => null); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_COL(RROW => RDG_ROW, + SNAME => 'N_' || TO_CHAR(TDAYS(I).DDATE, SCOL_PATTERN_DATE) || + '_VALUE', + NVALUE => null); /* Если рабочий календарь считан */ if (NENPERIOD is not null) then /* Отмечаем тип дня */ - PKG_P8PANELS_VISUAL.TROW_ADD_COL(RROW => RDG_ROW, - SNAME => 'N_' || TO_CHAR(TDAYS(I).DDATE, SCOL_PATTERN_DATE) || '_TYPE', - NVALUE => DAY_TYPE_GET(NENPERIOD => NENPERIOD, - DDATE => TDAYS(I).DDATE, - DCURRENT_DAY => DCURRENT_DAY)); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_COL(RROW => RDG_ROW, + SNAME => 'N_' || TO_CHAR(TDAYS(I).DDATE, SCOL_PATTERN_DATE) || + '_TYPE', + NVALUE => DAY_TYPE_GET(NENPERIOD => NENPERIOD, + DDATE => TDAYS(I).DDATE, + DCURRENT_DAY => DCURRENT_DAY)); end if; end loop; end if; /* Добавляем строку в таблицу */ - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_ROW(RDATA_GRID => RDG, RROW => RDG_ROW); + PKG_P8PANELS_VISUAL.TDG_ADD_ROW(RDATA_GRID => RDG, RROW => RDG_ROW); end loop; exception when others then @@ -5825,7 +5922,7 @@ create or replace package body PKG_P8PANELS_MECHREC as end; end if; /* Сериализуем описание */ - COUT := PKG_P8PANELS_VISUAL.TDATA_GRID_TO_XML(RDATA_GRID => RDG, NINCLUDE_DEF => NINCLUDE_DEF); + COUT := PKG_P8PANELS_VISUAL.TDG_TO_XML(RDATA_GRID => RDG, NINCLUDE_DEF => NINCLUDE_DEF); end FCJOBS_DEP_LOAD_DG_GET; /* @@ -5844,9 +5941,9 @@ create or replace package body PKG_P8PANELS_MECHREC as ) is NCOMPANY PKG_STD.TREF := GET_SESSION_COMPANY(); -- Организация сеанса - RO PKG_P8PANELS_VISUAL.TORDERS; -- Сортировки - RDG PKG_P8PANELS_VISUAL.TDATA_GRID; -- Описание таблицы - RDG_ROW PKG_P8PANELS_VISUAL.TROW; -- Строка таблицы + RO PKG_P8PANELS_VISUAL.TDG_ORDERS; -- Сортировки + RDG PKG_P8PANELS_VISUAL.TDG; -- Описание таблицы + RDG_ROW PKG_P8PANELS_VISUAL.TDG_ROW; -- Строка таблицы NROW_FROM PKG_STD.TREF; -- Номер строки с NROW_TO PKG_STD.TREF; -- Номер строки по CSQL clob; -- Буфер для запроса @@ -5855,40 +5952,40 @@ create or replace package body PKG_P8PANELS_MECHREC as NDICMUNTS_WD PKG_STD.TREF; -- Рег. номер ед. измерения нормочасов begin /* Читем сортировки */ - RO := PKG_P8PANELS_VISUAL.TORDERS_FROM_XML(CORDERS => CORDERS); + RO := PKG_P8PANELS_VISUAL.TDG_ORDERS_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(); + RDG := PKG_P8PANELS_VISUAL.TDG_MAKE(); /* Описываем колонки таблицы данных */ - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'NRN', - SCAPTION => 'Рег. номер', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, - BVISIBLE => false); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'SNUMB', - SCAPTION => '% п/п', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, - BVISIBLE => true); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'SOPERATION', - SCAPTION => 'Содержание работ', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, - BVISIBLE => true); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'SEXECUTOR', - SCAPTION => 'Исполнитель', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, - BVISIBLE => true); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'NREMN_LABOUR', - SCAPTION => 'Остаточная трудоемкость, в н/ч', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, - BVISIBLE => true); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'NRN', + SCAPTION => 'Рег. номер', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, + BVISIBLE => false); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'SNUMB', + SCAPTION => '% п/п', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, + BVISIBLE => true); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'SOPERATION', + SCAPTION => 'Содержание работ', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, + BVISIBLE => true); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'SEXECUTOR', + SCAPTION => 'Исполнитель', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, + BVISIBLE => true); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'NREMN_LABOUR', + SCAPTION => 'Остаточная трудоемкость, в н/ч', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, + BVISIBLE => true); /* Если спецификация считалась */ if (NFCPRODPLANSP is not null) then /* Инициализируем список маршрутных листов */ @@ -5928,7 +6025,10 @@ create or replace package body PKG_P8PANELS_MECHREC as PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' %ORDER_BY%) D) F'); PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' 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.TDG_ORDERS_SET_QUERY(RDATA_GRID => RDG, + RORDERS => RO, + SPATTERN => '%ORDER_BY%', + CSQL => CSQL); /* Разбираем его */ ICURSOR := PKG_SQL_DML.OPEN_CURSOR(SWHAT => 'SELECT'); PKG_SQL_DML.PARSE(ICURSOR => ICURSOR, SQUERY => CSQL); @@ -5953,29 +6053,29 @@ create or replace package body PKG_P8PANELS_MECHREC as while (PKG_SQL_DML.FETCH_ROWS(ICURSOR => ICURSOR) > 0) loop /* Добавляем колонки с данными */ - PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLN(RROW => RDG_ROW, - SNAME => 'NRN', - ICURSOR => ICURSOR, - NPOSITION => 1, - BCLEAR => true); - PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLS(RROW => RDG_ROW, - SNAME => 'SNUMB', - ICURSOR => ICURSOR, - NPOSITION => 2); - PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLS(RROW => RDG_ROW, - SNAME => 'SOPERATION', - ICURSOR => ICURSOR, - NPOSITION => 3); - PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLS(RROW => RDG_ROW, - SNAME => 'SEXECUTOR', - ICURSOR => ICURSOR, - NPOSITION => 4); - PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLN(RROW => RDG_ROW, - SNAME => 'NREMN_LABOUR', - ICURSOR => ICURSOR, - NPOSITION => 5); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLN(RROW => RDG_ROW, + SNAME => 'NRN', + ICURSOR => ICURSOR, + NPOSITION => 1, + BCLEAR => true); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLS(RROW => RDG_ROW, + SNAME => 'SNUMB', + ICURSOR => ICURSOR, + NPOSITION => 2); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLS(RROW => RDG_ROW, + SNAME => 'SOPERATION', + ICURSOR => ICURSOR, + NPOSITION => 3); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLS(RROW => RDG_ROW, + SNAME => 'SEXECUTOR', + ICURSOR => ICURSOR, + NPOSITION => 4); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLN(RROW => RDG_ROW, + SNAME => 'NREMN_LABOUR', + ICURSOR => ICURSOR, + NPOSITION => 5); /* Добавляем строку в таблицу */ - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_ROW(RDATA_GRID => RDG, RROW => RDG_ROW); + PKG_P8PANELS_VISUAL.TDG_ADD_ROW(RDATA_GRID => RDG, RROW => RDG_ROW); end loop; exception when others then @@ -5986,7 +6086,7 @@ create or replace package body PKG_P8PANELS_MECHREC as /* Очищаем отмеченные маршрутные листы */ P_SELECTLIST_CLEAR(NIDENT => NFCROUTLST_IDENT); /* Сериализуем описание */ - COUT := PKG_P8PANELS_VISUAL.TDATA_GRID_TO_XML(RDATA_GRID => RDG, NINCLUDE_DEF => NINCLUDE_DEF); + COUT := PKG_P8PANELS_VISUAL.TDG_TO_XML(RDATA_GRID => RDG, NINCLUDE_DEF => NINCLUDE_DEF); exception when others then /* Очищаем отмеченные маршрутные листы */ @@ -6006,49 +6106,49 @@ create or replace package body PKG_P8PANELS_MECHREC as ) is NCOMPANY PKG_STD.TREF := GET_SESSION_COMPANY(); -- Организация сеанса - RO PKG_P8PANELS_VISUAL.TORDERS; -- Сортировки - RDG PKG_P8PANELS_VISUAL.TDATA_GRID; -- Описание таблицы - RDG_ROW PKG_P8PANELS_VISUAL.TROW; -- Строка таблицы + RO PKG_P8PANELS_VISUAL.TDG_ORDERS; -- Сортировки + RDG PKG_P8PANELS_VISUAL.TDG; -- Описание таблицы + RDG_ROW PKG_P8PANELS_VISUAL.TDG_ROW; -- Строка таблицы NROW_FROM PKG_STD.TREF; -- Номер строки с NROW_TO PKG_STD.TREF; -- Номер строки по CSQL clob; -- Буфер для запроса ICURSOR integer; -- Курсор для исполнения запроса begin /* Читем сортировки */ - RO := PKG_P8PANELS_VISUAL.TORDERS_FROM_XML(CORDERS => CORDERS); + RO := PKG_P8PANELS_VISUAL.TDG_ORDERS_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(); + RDG := PKG_P8PANELS_VISUAL.TDG_MAKE(); /* Описываем колонки таблицы данных */ - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'NRN', - SCAPTION => 'Рег. номер', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, - BVISIBLE => false); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'SNOMEN', - SCAPTION => 'Номенклатура', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, - BVISIBLE => true); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'NQUANT_PLAN', - SCAPTION => 'Применяемость', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, - BVISIBLE => true); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'SPROVIDER', - SCAPTION => 'Поставщик', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, - BVISIBLE => true); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'NDEFICIT', - SCAPTION => 'Дефицит', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, - BVISIBLE => true); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'NRN', + SCAPTION => 'Рег. номер', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, + BVISIBLE => false); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'SNOMEN', + SCAPTION => 'Номенклатура', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, + BVISIBLE => true); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'NQUANT_PLAN', + SCAPTION => 'Применяемость', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, + BVISIBLE => true); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'SPROVIDER', + SCAPTION => 'Поставщик', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, + BVISIBLE => true); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'NDEFICIT', + SCAPTION => 'Дефицит', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, + BVISIBLE => true); /* Если спецификация считалась */ if (NFCPRODPLANSP is not null) then begin @@ -6078,7 +6178,10 @@ create or replace package body PKG_P8PANELS_MECHREC as PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' %ORDER_BY%) D) F'); PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' 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.TDG_ORDERS_SET_QUERY(RDATA_GRID => RDG, + RORDERS => RO, + SPATTERN => '%ORDER_BY%', + CSQL => CSQL); /* Разбираем его */ ICURSOR := PKG_SQL_DML.OPEN_CURSOR(SWHAT => 'SELECT'); PKG_SQL_DML.PARSE(ICURSOR => ICURSOR, SQUERY => CSQL); @@ -6102,29 +6205,29 @@ create or replace package body PKG_P8PANELS_MECHREC as while (PKG_SQL_DML.FETCH_ROWS(ICURSOR => ICURSOR) > 0) loop /* Добавляем колонки с данными */ - PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLN(RROW => RDG_ROW, - SNAME => 'NRN', - ICURSOR => ICURSOR, - NPOSITION => 1, - BCLEAR => true); - PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLS(RROW => RDG_ROW, - SNAME => 'SNOMEN', - ICURSOR => ICURSOR, - NPOSITION => 2); - PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLN(RROW => RDG_ROW, - SNAME => 'NQUANT_PLAN', - ICURSOR => ICURSOR, - NPOSITION => 3); - PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLS(RROW => RDG_ROW, - SNAME => 'SPROVIDER', - ICURSOR => ICURSOR, - NPOSITION => 4); - PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLN(RROW => RDG_ROW, - SNAME => 'NDEFICIT', - ICURSOR => ICURSOR, - NPOSITION => 5); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLN(RROW => RDG_ROW, + SNAME => 'NRN', + ICURSOR => ICURSOR, + NPOSITION => 1, + BCLEAR => true); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLS(RROW => RDG_ROW, + SNAME => 'SNOMEN', + ICURSOR => ICURSOR, + NPOSITION => 2); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLN(RROW => RDG_ROW, + SNAME => 'NQUANT_PLAN', + ICURSOR => ICURSOR, + NPOSITION => 3); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLS(RROW => RDG_ROW, + SNAME => 'SPROVIDER', + ICURSOR => ICURSOR, + NPOSITION => 4); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLN(RROW => RDG_ROW, + SNAME => 'NDEFICIT', + ICURSOR => ICURSOR, + NPOSITION => 5); /* Добавляем строку в таблицу */ - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_ROW(RDATA_GRID => RDG, RROW => RDG_ROW); + PKG_P8PANELS_VISUAL.TDG_ADD_ROW(RDATA_GRID => RDG, RROW => RDG_ROW); end loop; exception when others then @@ -6133,7 +6236,7 @@ create or replace package body PKG_P8PANELS_MECHREC as end; end if; /* Сериализуем описание */ - COUT := PKG_P8PANELS_VISUAL.TDATA_GRID_TO_XML(RDATA_GRID => RDG, NINCLUDE_DEF => NINCLUDE_DEF); + COUT := PKG_P8PANELS_VISUAL.TDG_TO_XML(RDATA_GRID => RDG, NINCLUDE_DEF => NINCLUDE_DEF); end FCDELIVSH_DG_BY_LINKED_GET; /* Получение изображения для записи "Планы и отчеты производства изделий" по мат. ресурсу */ diff --git a/db/PKG_P8PANELS_PROJECTS.pck b/db/PKG_P8PANELS_PROJECTS.pck index 960779a..9d5d5c9 100644 --- a/db/PKG_P8PANELS_PROJECTS.pck +++ b/db/PKG_P8PANELS_PROJECTS.pck @@ -1026,11 +1026,11 @@ create or replace package body PKG_P8PANELS_PROJECTS as 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; -- Предопределённые значения столбцов + RF PKG_P8PANELS_VISUAL.TDG_FILTERS; -- Фильтры + RO PKG_P8PANELS_VISUAL.TDG_ORDERS; -- Сортировки + RDG PKG_P8PANELS_VISUAL.TDG; -- Описание таблицы + RDG_ROW PKG_P8PANELS_VISUAL.TDG_ROW; -- Строка таблицы + RCOL_VALS PKG_P8PANELS_VISUAL.TDG_COL_VALS; -- Предопределённые значения столбцов NROW_FROM PKG_STD.TREF; -- Номер строки с NROW_TO PKG_STD.TREF; -- Номер строки по CSQL clob; -- Буфер для запроса @@ -1038,250 +1038,250 @@ create or replace package body PKG_P8PANELS_PROJECTS as NECON_RESP_DP PKG_STD.TREF; -- Рег. номер ДС "Ответственный экономист" begin /* Читаем фильтры */ - RF := PKG_P8PANELS_VISUAL.TFILTERS_FROM_XML(CFILTERS => CFILTERS); + RF := PKG_P8PANELS_VISUAL.TDG_FILTERS_FROM_XML(CFILTERS => CFILTERS); /* Читаем сортировки */ - RO := PKG_P8PANELS_VISUAL.TORDERS_FROM_XML(CORDERS => CORDERS); + RO := PKG_P8PANELS_VISUAL.TDG_ORDERS_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(); + RDG := PKG_P8PANELS_VISUAL.TDG_MAKE(); /* Добавляем в таблицу описание колонок */ - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'NRN', - SCAPTION => 'Рег. номер', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, - BVISIBLE => false); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'SCODE', - SCAPTION => 'Код', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, - SCOND_FROM => 'EDMNEMO', - BORDER => true, - BFILTER => true); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'SNAME', - SCAPTION => 'Наименование', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, - SCOND_FROM => 'EDNAME', - BVISIBLE => false); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'SNAME_USL', - SCAPTION => 'Условное наименование', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, - SCOND_FROM => 'EDNAME_USL', - BORDER => true, - BFILTER => true); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'SEXPECTED_RES', - SCAPTION => 'Ожидаемые результаты', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, - BVISIBLE => false); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'SPRJTYPE', - SCAPTION => 'Тип', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, - SCOND_FROM => 'EDPROJECTTYPE', - BVISIBLE => false); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'SEXT_CUST', - SCAPTION => 'Заказчик', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, - SCOND_FROM => 'EDEXT_CUST', - BORDER => true, - BFILTER => true); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'SGOVCNTRID', - SCAPTION => 'ИГК', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, - BVISIBLE => false); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'SDOC_OSN', - SCAPTION => 'Документ-основание', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, - BVISIBLE => false); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'SLNK_UNIT_SDOC_OSN', - SCAPTION => 'Документ-основание (код раздела ссылки)', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, - BVISIBLE => false); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'NLNK_DOCUMENT_SDOC_OSN', - SCAPTION => 'Документ-основание (документ ссылки)', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, - BVISIBLE => false); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'SSUBDIV_RESP', - SCAPTION => 'Подразделение-исполнитель', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, - BVISIBLE => false); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'SRESPONSIBLE', - SCAPTION => 'Ответственный исполнитель', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, - BVISIBLE => false); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'SECON_RESP', - SCAPTION => 'Ответственный экономист', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, - BVISIBLE => false); - 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.TCOL_VALS_ADD(RCOL_VALS => RCOL_VALS, NVALUE => 2); - PKG_P8PANELS_VISUAL.TCOL_VALS_ADD(RCOL_VALS => RCOL_VALS, NVALUE => 3); - PKG_P8PANELS_VISUAL.TCOL_VALS_ADD(RCOL_VALS => RCOL_VALS, NVALUE => 4); - PKG_P8PANELS_VISUAL.TCOL_VALS_ADD(RCOL_VALS => RCOL_VALS, NVALUE => 5); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'NSTATE', - SCAPTION => 'Состояние', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, - SCOND_FROM => 'CGSTATE', - BORDER => true, - BFILTER => true, - RCOL_VALS => RCOL_VALS); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'DBEGPLAN', - SCAPTION => 'Дата начала', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_DATE, - SCOND_FROM => 'EDPLANBEGFrom', - SCOND_TO => 'EDPLANBEGTo', - BORDER => true, - BFILTER => true); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'DENDPLAN', - SCAPTION => 'Дата окончания', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_DATE, - SCOND_FROM => 'EDPLANENDFrom', - SCOND_TO => 'EDPLANENDTo', - BORDER => true, - BFILTER => true); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'NCOST_SUM', - SCAPTION => 'Стоимость', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, - BVISIBLE => false); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'SCURNAMES', - SCAPTION => 'Валюта', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, - BVISIBLE => false); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'NFIN_IN', - SCAPTION => 'Входящее финансирование', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, - BVISIBLE => false); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'SLNK_UNIT_NFIN_IN', - SCAPTION => 'Входящее финансирование (код раздела ссылки)', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, - BVISIBLE => false); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'NLNK_DOCUMENT_NFIN_IN', - SCAPTION => 'Входящее финансирование (документ ссылки)', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, - BVISIBLE => false); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'NFIN_OUT', - SCAPTION => 'Исходящее финансирование', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, - BVISIBLE => false); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'SLNK_UNIT_NFIN_OUT', - SCAPTION => 'Исходящее финансирование (код раздела ссылки)', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, - BVISIBLE => false); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'NLNK_DOCUMENT_NFIN_OUT', - SCAPTION => 'Исходящее финансирование (документ ссылки)', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, - BVISIBLE => false); - 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 => 'NCTRL_FIN', - SCAPTION => 'Фин-е (исх.)', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, - SCOND_FROM => 'EDCTRL_FIN', - BORDER => true, - BFILTER => true, - RCOL_VALS => RCOL_VALS, - SHINT => 'Финансирование (исходящее) - контроль оплаты счетов, выставленных соисполнителями в рамках проекта.
' || - 'Требует внимания - в проекте есть этапы, для которых не все выставленные соисполнителями счета оплачены.
' || - 'В норме - нет этапов с отклонениями, описанными выше.
' || - 'Пусто - в Системе не хватает данных для рассчёта. Убедитесь, что для этапов задана привязка к договорам с соисполнителями.'); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'NCTRL_CONTR', - SCAPTION => 'Контр-я', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, - SCOND_FROM => 'EDCTRL_CONTR', - BORDER => true, - BFILTER => true, - RCOL_VALS => RCOL_VALS, - SHINT => 'Контрактация - контроль суммы договоров, заключеных с соисполнителями в рамках проекта.
' || - 'Требует внимания - в проекте есть этапы, для которых сумма договоров с соисполнителями превышает заложенные в калькуляцию плановые показатели.
' || - 'В норме - нет этапов с отклонениями, описанными выше.
' || - 'Пусто - в Системе не хватает данных для рассчёта. Убедитесь, что для всех этапов заданы плановые калькуляции.'); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'NCTRL_COEXEC', - SCAPTION => 'Соисп-е', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, - SCOND_FROM => 'EDCTRL_COEXEC', - BORDER => true, - BFILTER => true, - RCOL_VALS => RCOL_VALS, - SHINT => 'Соисполнение - контроль исполнения обязательств по договорам, заключеным с соисполнителями в рамках проекта.
' || - 'Требует внимания - в проекте есть этапы, до окончания которых осталось менее ' || - TO_CHAR(NDAYS_LEFT_LIMIT) || - ' дней, при этом зафиксирован положительный остаток к поставке/актированию по договорам соисполнителей данного этапа.
' || - 'В норме - нет этапов с отклонениями, описанными выше.
' || - 'Пусто - в Системе не хватает данных для рассчёта. Убедитесь, что для этапов задана привязка к договорам с соисполнителями и плановые сроки окончания.'); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'NCTRL_PERIOD', - SCAPTION => 'Сроки', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, - SCOND_FROM => 'EDCTRL_PERIOD', - BORDER => true, - BFILTER => true, - RCOL_VALS => RCOL_VALS, - SHINT => 'Сроки - контроль сроков исполнения работ по проекту.
' || - 'Требует внимания - в проекте есть этапы, до окончания которых осталось менее ' || - TO_CHAR(NDAYS_LEFT_LIMIT) || ' дней.
' || - 'В норме - нет этапов с отклонениями, описанными выше.
' || - 'Пусто - в Системе не хватает данных для рассчёта. Убедитесь, что для этапов заданы плановые сроки окончания.'); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'NCTRL_COST', - SCAPTION => 'Затраты', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, - SCOND_FROM => 'EDCTRL_COST', - BORDER => true, - BFILTER => true, - RCOL_VALS => RCOL_VALS, - SHINT => 'Затраты - контроль затрат, понесённых в ходе выполнения работ по проекту.
' || - 'Требует внимания - в проекте есть этапы, для которых сумма фактических затрат по статьям калькуляции превысила плановую.
' || - 'В норме - нет этапов с отклонениями, описанными выше.
' || - 'Пусто - в Системе не хватает данных для рассчёта. Убедитесь, что для этапов задана действующая калькуляция с указанием плановых значений по статьям, подлежащим контролю.'); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'NCTRL_ACT', - SCAPTION => 'Актир-е', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, - SCOND_FROM => 'EDCTRL_ACT', - BORDER => true, - BFILTER => true, - RCOL_VALS => RCOL_VALS, - SHINT => 'Актирование - контроль актирования работ, выполненных по проекту, со стороны заказчика.
' || - 'Требует внимания - в проекте есть этапы, в состоянии "Закрыт", но при этом в Системе отсутствует утверждённая "Расходная накладная на отпуск потребителю" для данного этапа.
' || - 'В норме - нет этапов с отклонениями, описанными выше.
' || - 'Пусто - в Системе не хватает данных для рассчёта. Убедитесь, что этапы, по которым завершены работы, переведены в состояние "Закрыт".'); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'NCOST_READY', - SCAPTION => 'Готов (%, затраты)', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, - SCOND_FROM => 'EDCOST_READYFrom', - SCOND_TO => 'EDCOST_READYTo', - BORDER => true, - BFILTER => true); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'NRN', + SCAPTION => 'Рег. номер', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, + BVISIBLE => false); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'SCODE', + SCAPTION => 'Код', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, + SCOND_FROM => 'EDMNEMO', + BORDER => true, + BFILTER => true); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'SNAME', + SCAPTION => 'Наименование', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, + SCOND_FROM => 'EDNAME', + BVISIBLE => false); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'SNAME_USL', + SCAPTION => 'Условное наименование', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, + SCOND_FROM => 'EDNAME_USL', + BORDER => true, + BFILTER => true); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'SEXPECTED_RES', + SCAPTION => 'Ожидаемые результаты', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, + BVISIBLE => false); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'SPRJTYPE', + SCAPTION => 'Тип', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, + SCOND_FROM => 'EDPROJECTTYPE', + BVISIBLE => false); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'SEXT_CUST', + SCAPTION => 'Заказчик', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, + SCOND_FROM => 'EDEXT_CUST', + BORDER => true, + BFILTER => true); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'SGOVCNTRID', + SCAPTION => 'ИГК', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, + BVISIBLE => false); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'SDOC_OSN', + SCAPTION => 'Документ-основание', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, + BVISIBLE => false); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'SLNK_UNIT_SDOC_OSN', + SCAPTION => 'Документ-основание (код раздела ссылки)', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, + BVISIBLE => false); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'NLNK_DOCUMENT_SDOC_OSN', + SCAPTION => 'Документ-основание (документ ссылки)', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, + BVISIBLE => false); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'SSUBDIV_RESP', + SCAPTION => 'Подразделение-исполнитель', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, + BVISIBLE => false); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'SRESPONSIBLE', + SCAPTION => 'Ответственный исполнитель', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, + BVISIBLE => false); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'SECON_RESP', + SCAPTION => 'Ответственный экономист', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, + BVISIBLE => false); + PKG_P8PANELS_VISUAL.TDG_COL_VALS_ADD(RCOL_VALS => RCOL_VALS, NVALUE => 0, BCLEAR => true); + PKG_P8PANELS_VISUAL.TDG_COL_VALS_ADD(RCOL_VALS => RCOL_VALS, NVALUE => 1); + PKG_P8PANELS_VISUAL.TDG_COL_VALS_ADD(RCOL_VALS => RCOL_VALS, NVALUE => 2); + PKG_P8PANELS_VISUAL.TDG_COL_VALS_ADD(RCOL_VALS => RCOL_VALS, NVALUE => 3); + PKG_P8PANELS_VISUAL.TDG_COL_VALS_ADD(RCOL_VALS => RCOL_VALS, NVALUE => 4); + PKG_P8PANELS_VISUAL.TDG_COL_VALS_ADD(RCOL_VALS => RCOL_VALS, NVALUE => 5); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'NSTATE', + SCAPTION => 'Состояние', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, + SCOND_FROM => 'CGSTATE', + BORDER => true, + BFILTER => true, + RCOL_VALS => RCOL_VALS); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'DBEGPLAN', + SCAPTION => 'Дата начала', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_DATE, + SCOND_FROM => 'EDPLANBEGFrom', + SCOND_TO => 'EDPLANBEGTo', + BORDER => true, + BFILTER => true); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'DENDPLAN', + SCAPTION => 'Дата окончания', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_DATE, + SCOND_FROM => 'EDPLANENDFrom', + SCOND_TO => 'EDPLANENDTo', + BORDER => true, + BFILTER => true); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'NCOST_SUM', + SCAPTION => 'Стоимость', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, + BVISIBLE => false); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'SCURNAMES', + SCAPTION => 'Валюта', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, + BVISIBLE => false); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'NFIN_IN', + SCAPTION => 'Входящее финансирование', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, + BVISIBLE => false); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'SLNK_UNIT_NFIN_IN', + SCAPTION => 'Входящее финансирование (код раздела ссылки)', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, + BVISIBLE => false); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'NLNK_DOCUMENT_NFIN_IN', + SCAPTION => 'Входящее финансирование (документ ссылки)', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, + BVISIBLE => false); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'NFIN_OUT', + SCAPTION => 'Исходящее финансирование', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, + BVISIBLE => false); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'SLNK_UNIT_NFIN_OUT', + SCAPTION => 'Исходящее финансирование (код раздела ссылки)', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, + BVISIBLE => false); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'NLNK_DOCUMENT_NFIN_OUT', + SCAPTION => 'Исходящее финансирование (документ ссылки)', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, + BVISIBLE => false); + PKG_P8PANELS_VISUAL.TDG_COL_VALS_ADD(RCOL_VALS => RCOL_VALS, NVALUE => 0, BCLEAR => true); + PKG_P8PANELS_VISUAL.TDG_COL_VALS_ADD(RCOL_VALS => RCOL_VALS, NVALUE => 1); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'NCTRL_FIN', + SCAPTION => 'Фин-е (исх.)', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, + SCOND_FROM => 'EDCTRL_FIN', + BORDER => true, + BFILTER => true, + RCOL_VALS => RCOL_VALS, + SHINT => 'Финансирование (исходящее) - контроль оплаты счетов, выставленных соисполнителями в рамках проекта.
' || + 'Требует внимания - в проекте есть этапы, для которых не все выставленные соисполнителями счета оплачены.
' || + 'В норме - нет этапов с отклонениями, описанными выше.
' || + 'Пусто - в Системе не хватает данных для рассчёта. Убедитесь, что для этапов задана привязка к договорам с соисполнителями.'); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'NCTRL_CONTR', + SCAPTION => 'Контр-я', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, + SCOND_FROM => 'EDCTRL_CONTR', + BORDER => true, + BFILTER => true, + RCOL_VALS => RCOL_VALS, + SHINT => 'Контрактация - контроль суммы договоров, заключеных с соисполнителями в рамках проекта.
' || + 'Требует внимания - в проекте есть этапы, для которых сумма договоров с соисполнителями превышает заложенные в калькуляцию плановые показатели.
' || + 'В норме - нет этапов с отклонениями, описанными выше.
' || + 'Пусто - в Системе не хватает данных для рассчёта. Убедитесь, что для всех этапов заданы плановые калькуляции.'); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'NCTRL_COEXEC', + SCAPTION => 'Соисп-е', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, + SCOND_FROM => 'EDCTRL_COEXEC', + BORDER => true, + BFILTER => true, + RCOL_VALS => RCOL_VALS, + SHINT => 'Соисполнение - контроль исполнения обязательств по договорам, заключеным с соисполнителями в рамках проекта.
' || + 'Требует внимания - в проекте есть этапы, до окончания которых осталось менее ' || + TO_CHAR(NDAYS_LEFT_LIMIT) || + ' дней, при этом зафиксирован положительный остаток к поставке/актированию по договорам соисполнителей данного этапа.
' || + 'В норме - нет этапов с отклонениями, описанными выше.
' || + 'Пусто - в Системе не хватает данных для рассчёта. Убедитесь, что для этапов задана привязка к договорам с соисполнителями и плановые сроки окончания.'); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'NCTRL_PERIOD', + SCAPTION => 'Сроки', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, + SCOND_FROM => 'EDCTRL_PERIOD', + BORDER => true, + BFILTER => true, + RCOL_VALS => RCOL_VALS, + SHINT => 'Сроки - контроль сроков исполнения работ по проекту.
' || + 'Требует внимания - в проекте есть этапы, до окончания которых осталось менее ' || + TO_CHAR(NDAYS_LEFT_LIMIT) || ' дней.
' || + 'В норме - нет этапов с отклонениями, описанными выше.
' || + 'Пусто - в Системе не хватает данных для рассчёта. Убедитесь, что для этапов заданы плановые сроки окончания.'); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'NCTRL_COST', + SCAPTION => 'Затраты', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, + SCOND_FROM => 'EDCTRL_COST', + BORDER => true, + BFILTER => true, + RCOL_VALS => RCOL_VALS, + SHINT => 'Затраты - контроль затрат, понесённых в ходе выполнения работ по проекту.
' || + 'Требует внимания - в проекте есть этапы, для которых сумма фактических затрат по статьям калькуляции превысила плановую.
' || + 'В норме - нет этапов с отклонениями, описанными выше.
' || + 'Пусто - в Системе не хватает данных для рассчёта. Убедитесь, что для этапов задана действующая калькуляция с указанием плановых значений по статьям, подлежащим контролю.'); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'NCTRL_ACT', + SCAPTION => 'Актир-е', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, + SCOND_FROM => 'EDCTRL_ACT', + BORDER => true, + BFILTER => true, + RCOL_VALS => RCOL_VALS, + SHINT => 'Актирование - контроль актирования работ, выполненных по проекту, со стороны заказчика.
' || + 'Требует внимания - в проекте есть этапы, в состоянии "Закрыт", но при этом в Системе отсутствует утверждённая "Расходная накладная на отпуск потребителю" для данного этапа.
' || + 'В норме - нет этапов с отклонениями, описанными выше.
' || + 'Пусто - в Системе не хватает данных для рассчёта. Убедитесь, что этапы, по которым завершены работы, переведены в состояние "Закрыт".'); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'NCOST_READY', + SCAPTION => 'Готов (%, затраты)', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, + SCOND_FROM => 'EDCOST_READYFrom', + SCOND_TO => 'EDCOST_READYTo', + BORDER => true, + BFILTER => true); /* Определим дополнительные свойства - ответственный экономист */ FIND_DOCS_PROPS_CODE(NFLAG_SMART => 1, NCOMPANY => NCOMPANY, SCODE => SDP_SECON_RESP, NRN => NECON_RESP_DP); /* Обходим данные */ @@ -1338,14 +1338,17 @@ create or replace package body PKG_P8PANELS_PROJECTS as PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' and P.RN in (select ID from COND_BROKER_IDSMART where IDENT = :NIDENT) %ORDER_BY%) D) F'); PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' 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.TDG_ORDERS_SET_QUERY(RDATA_GRID => RDG, + RORDERS => RO, + SPATTERN => '%ORDER_BY%', + CSQL => CSQL); /* Учтём фильтры */ - PKG_P8PANELS_VISUAL.TFILTERS_SET_QUERY(NIDENT => NIDENT, - NCOMPANY => NCOMPANY, - SUNIT => 'Projects', - SPROCEDURE => PKG_SQL_BUILD.PKG_NAME(SNAME => 'PKG_P8PANELS_PROJECTS.COND'), - RDATA_GRID => RDG, - RFILTERS => RF); + PKG_P8PANELS_VISUAL.TDG_FILTERS_SET_QUERY(NIDENT => NIDENT, + NCOMPANY => NCOMPANY, + SUNIT => 'Projects', + SPROCEDURE => PKG_SQL_BUILD.PKG_NAME(SNAME => 'PKG_P8PANELS_PROJECTS.COND'), + RDATA_GRID => RDG, + RFILTERS => RF); /* Разбираем его */ ICURSOR := PKG_SQL_DML.OPEN_CURSOR(SWHAT => 'SELECT'); PKG_SQL_DML.PARSE(ICURSOR => ICURSOR, SQUERY => CSQL); @@ -1396,119 +1399,131 @@ create or replace package body PKG_P8PANELS_PROJECTS as while (PKG_SQL_DML.FETCH_ROWS(ICURSOR => ICURSOR) > 0) loop /* Добавляем колонки с данными */ - PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLN(RROW => RDG_ROW, - SNAME => 'NRN', - ICURSOR => ICURSOR, - NPOSITION => 1, - BCLEAR => true); - PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLS(RROW => RDG_ROW, SNAME => 'SCODE', ICURSOR => ICURSOR, NPOSITION => 2); - PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLS(RROW => RDG_ROW, SNAME => 'SNAME', ICURSOR => ICURSOR, NPOSITION => 3); - PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLS(RROW => RDG_ROW, - SNAME => 'SNAME_USL', - ICURSOR => ICURSOR, - NPOSITION => 4); - PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLS(RROW => RDG_ROW, - SNAME => 'SEXPECTED_RES', - ICURSOR => ICURSOR, - NPOSITION => 5); - PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLS(RROW => RDG_ROW, SNAME => 'SPRJTYPE', ICURSOR => ICURSOR, NPOSITION => 6); - PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLS(RROW => RDG_ROW, - SNAME => 'SEXT_CUST', - ICURSOR => ICURSOR, - NPOSITION => 7); - PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLS(RROW => RDG_ROW, - SNAME => 'SGOVCNTRID', - ICURSOR => ICURSOR, - NPOSITION => 8); - PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLS(RROW => RDG_ROW, SNAME => 'SDOC_OSN', ICURSOR => ICURSOR, NPOSITION => 9); - PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLS(RROW => RDG_ROW, - SNAME => 'SLNK_UNIT_SDOC_OSN', - ICURSOR => ICURSOR, - NPOSITION => 10); - PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLN(RROW => RDG_ROW, - SNAME => 'NLNK_DOCUMENT_SDOC_OSN', - ICURSOR => ICURSOR, - NPOSITION => 11); - PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLS(RROW => RDG_ROW, - SNAME => 'SSUBDIV_RESP', - ICURSOR => ICURSOR, - NPOSITION => 12); - PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLS(RROW => RDG_ROW, - SNAME => 'SRESPONSIBLE', - ICURSOR => ICURSOR, - NPOSITION => 13); - PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLS(RROW => RDG_ROW, - SNAME => 'SECON_RESP', - ICURSOR => ICURSOR, - NPOSITION => 14); - PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLN(RROW => RDG_ROW, SNAME => 'NSTATE', ICURSOR => ICURSOR, NPOSITION => 15); - PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLD(RROW => RDG_ROW, - SNAME => 'DBEGPLAN', - ICURSOR => ICURSOR, - NPOSITION => 16); - PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLD(RROW => RDG_ROW, - SNAME => 'DENDPLAN', - ICURSOR => ICURSOR, - NPOSITION => 17); - PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLN(RROW => RDG_ROW, - SNAME => 'NCOST_SUM', - ICURSOR => ICURSOR, - NPOSITION => 18); - PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLS(RROW => RDG_ROW, - SNAME => 'SCURNAMES', - ICURSOR => ICURSOR, - NPOSITION => 19); - PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLN(RROW => RDG_ROW, SNAME => 'NFIN_IN', ICURSOR => ICURSOR, NPOSITION => 20); - PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLS(RROW => RDG_ROW, - SNAME => 'SLNK_UNIT_NFIN_IN', - ICURSOR => ICURSOR, - NPOSITION => 21); - PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLN(RROW => RDG_ROW, - SNAME => 'NLNK_DOCUMENT_NFIN_IN', - ICURSOR => ICURSOR, - NPOSITION => 22); - PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLN(RROW => RDG_ROW, - SNAME => 'NFIN_OUT', - ICURSOR => ICURSOR, - NPOSITION => 23); - PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLS(RROW => RDG_ROW, - SNAME => 'SLNK_UNIT_NFIN_OUT', - ICURSOR => ICURSOR, - NPOSITION => 24); - PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLN(RROW => RDG_ROW, - SNAME => 'NLNK_DOCUMENT_NFIN_OUT', - ICURSOR => ICURSOR, - NPOSITION => 25); - PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLN(RROW => RDG_ROW, - SNAME => 'NCTRL_FIN', - ICURSOR => ICURSOR, - NPOSITION => 26); - PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLN(RROW => RDG_ROW, - SNAME => 'NCTRL_CONTR', - ICURSOR => ICURSOR, - NPOSITION => 27); - PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLN(RROW => RDG_ROW, - SNAME => 'NCTRL_COEXEC', - ICURSOR => ICURSOR, - NPOSITION => 28); - PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLN(RROW => RDG_ROW, - SNAME => 'NCTRL_PERIOD', - ICURSOR => ICURSOR, - NPOSITION => 29); - PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLN(RROW => RDG_ROW, - SNAME => 'NCTRL_COST', - ICURSOR => ICURSOR, - NPOSITION => 30); - PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLN(RROW => RDG_ROW, - SNAME => 'NCTRL_ACT', - ICURSOR => ICURSOR, - NPOSITION => 31); - PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLN(RROW => RDG_ROW, - SNAME => 'NCOST_READY', - ICURSOR => ICURSOR, - NPOSITION => 32); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLN(RROW => RDG_ROW, + SNAME => 'NRN', + ICURSOR => ICURSOR, + NPOSITION => 1, + BCLEAR => true); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLS(RROW => RDG_ROW, SNAME => 'SCODE', ICURSOR => ICURSOR, NPOSITION => 2); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLS(RROW => RDG_ROW, SNAME => 'SNAME', ICURSOR => ICURSOR, NPOSITION => 3); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLS(RROW => RDG_ROW, + SNAME => 'SNAME_USL', + ICURSOR => ICURSOR, + NPOSITION => 4); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLS(RROW => RDG_ROW, + SNAME => 'SEXPECTED_RES', + ICURSOR => ICURSOR, + NPOSITION => 5); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLS(RROW => RDG_ROW, + SNAME => 'SPRJTYPE', + ICURSOR => ICURSOR, + NPOSITION => 6); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLS(RROW => RDG_ROW, + SNAME => 'SEXT_CUST', + ICURSOR => ICURSOR, + NPOSITION => 7); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLS(RROW => RDG_ROW, + SNAME => 'SGOVCNTRID', + ICURSOR => ICURSOR, + NPOSITION => 8); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLS(RROW => RDG_ROW, + SNAME => 'SDOC_OSN', + ICURSOR => ICURSOR, + NPOSITION => 9); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLS(RROW => RDG_ROW, + SNAME => 'SLNK_UNIT_SDOC_OSN', + ICURSOR => ICURSOR, + NPOSITION => 10); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLN(RROW => RDG_ROW, + SNAME => 'NLNK_DOCUMENT_SDOC_OSN', + ICURSOR => ICURSOR, + NPOSITION => 11); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLS(RROW => RDG_ROW, + SNAME => 'SSUBDIV_RESP', + ICURSOR => ICURSOR, + NPOSITION => 12); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLS(RROW => RDG_ROW, + SNAME => 'SRESPONSIBLE', + ICURSOR => ICURSOR, + NPOSITION => 13); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLS(RROW => RDG_ROW, + SNAME => 'SECON_RESP', + ICURSOR => ICURSOR, + NPOSITION => 14); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLN(RROW => RDG_ROW, + SNAME => 'NSTATE', + ICURSOR => ICURSOR, + NPOSITION => 15); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLD(RROW => RDG_ROW, + SNAME => 'DBEGPLAN', + ICURSOR => ICURSOR, + NPOSITION => 16); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLD(RROW => RDG_ROW, + SNAME => 'DENDPLAN', + ICURSOR => ICURSOR, + NPOSITION => 17); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLN(RROW => RDG_ROW, + SNAME => 'NCOST_SUM', + ICURSOR => ICURSOR, + NPOSITION => 18); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLS(RROW => RDG_ROW, + SNAME => 'SCURNAMES', + ICURSOR => ICURSOR, + NPOSITION => 19); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLN(RROW => RDG_ROW, + SNAME => 'NFIN_IN', + ICURSOR => ICURSOR, + NPOSITION => 20); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLS(RROW => RDG_ROW, + SNAME => 'SLNK_UNIT_NFIN_IN', + ICURSOR => ICURSOR, + NPOSITION => 21); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLN(RROW => RDG_ROW, + SNAME => 'NLNK_DOCUMENT_NFIN_IN', + ICURSOR => ICURSOR, + NPOSITION => 22); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLN(RROW => RDG_ROW, + SNAME => 'NFIN_OUT', + ICURSOR => ICURSOR, + NPOSITION => 23); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLS(RROW => RDG_ROW, + SNAME => 'SLNK_UNIT_NFIN_OUT', + ICURSOR => ICURSOR, + NPOSITION => 24); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLN(RROW => RDG_ROW, + SNAME => 'NLNK_DOCUMENT_NFIN_OUT', + ICURSOR => ICURSOR, + NPOSITION => 25); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLN(RROW => RDG_ROW, + SNAME => 'NCTRL_FIN', + ICURSOR => ICURSOR, + NPOSITION => 26); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLN(RROW => RDG_ROW, + SNAME => 'NCTRL_CONTR', + ICURSOR => ICURSOR, + NPOSITION => 27); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLN(RROW => RDG_ROW, + SNAME => 'NCTRL_COEXEC', + ICURSOR => ICURSOR, + NPOSITION => 28); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLN(RROW => RDG_ROW, + SNAME => 'NCTRL_PERIOD', + ICURSOR => ICURSOR, + NPOSITION => 29); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLN(RROW => RDG_ROW, + SNAME => 'NCTRL_COST', + ICURSOR => ICURSOR, + NPOSITION => 30); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLN(RROW => RDG_ROW, + SNAME => 'NCTRL_ACT', + ICURSOR => ICURSOR, + NPOSITION => 31); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLN(RROW => RDG_ROW, + SNAME => 'NCOST_READY', + ICURSOR => ICURSOR, + NPOSITION => 32); /* Добавляем строку в таблицу */ - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_ROW(RDATA_GRID => RDG, RROW => RDG_ROW); + PKG_P8PANELS_VISUAL.TDG_ADD_ROW(RDATA_GRID => RDG, RROW => RDG_ROW); end loop; /* Освобождаем курсор */ PKG_SQL_DML.CLOSE_CURSOR(ICURSOR => ICURSOR); @@ -1518,7 +1533,7 @@ create or replace package body PKG_P8PANELS_PROJECTS as raise; end; /* Сериализуем описание */ - COUT := PKG_P8PANELS_VISUAL.TDATA_GRID_TO_XML(RDATA_GRID => RDG, NINCLUDE_DEF => NINCLUDE_DEF); + COUT := PKG_P8PANELS_VISUAL.TDG_TO_XML(RDATA_GRID => RDG, NINCLUDE_DEF => NINCLUDE_DEF); end LIST; /* Сфодный график проектов */ @@ -1535,8 +1550,8 @@ create or replace package body PKG_P8PANELS_PROJECTS as SYEAR_COL_NAME PKG_STD.TSTRING; -- Наименование колонки для года SPRJ_GROUP_NAME PKG_STD.TSTRING; -- Наименование группы для проекта BEXPANDED boolean; -- Флаг раскрытости уровня - RDG PKG_P8PANELS_VISUAL.TDATA_GRID; -- Описание таблицы - RDG_ROW PKG_P8PANELS_VISUAL.TROW; -- Строка таблицы + RDG PKG_P8PANELS_VISUAL.TDG; -- Описание таблицы + RDG_ROW PKG_P8PANELS_VISUAL.TDG_ROW; -- Строка таблицы begin /* Определим даты начала и окончания проектов */ select TRUNC(min(DBEGPLAN), 'mm'), @@ -1563,40 +1578,40 @@ create or replace package body PKG_P8PANELS_PROJECTS as and PS.ENDPLAN is not null and PS.HRN is null); /* Инициализируем таблицу данных */ - RDG := PKG_P8PANELS_VISUAL.TDATA_GRID_MAKE(BFIXED_HEADER => true, NFIXED_COLUMNS => 1); + RDG := PKG_P8PANELS_VISUAL.TDG_MAKE(BFIXED_HEADER => true, NFIXED_COLUMNS => 1); /* Если есть данные о начале и окончании проектов в портфеле */ if ((DFROM is not null) and (DTO is not null)) then /* Формируем структуру заголовка */ - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'NRN', - SCAPTION => 'Рег. номер', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, - BVISIBLE => false); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'SJOB', - SCAPTION => 'Работы', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, - NWIDTH => 300); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'SRESP', - SCAPTION => 'Ответственный', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, - BVISIBLE => false); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'NSTATE', - SCAPTION => 'Состояние', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, - BVISIBLE => false); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'DFROM', - SCAPTION => 'Начало работы', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_DATE, - BVISIBLE => false); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'DTO', - SCAPTION => 'Окончание работы', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_DATE, - BVISIBLE => false); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'NRN', + SCAPTION => 'Рег. номер', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, + BVISIBLE => false); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'SJOB', + SCAPTION => 'Работы', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, + NWIDTH => 300); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'SRESP', + SCAPTION => 'Ответственный', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, + BVISIBLE => false); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'NSTATE', + SCAPTION => 'Состояние', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, + BVISIBLE => false); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'DFROM', + SCAPTION => 'Начало работы', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_DATE, + BVISIBLE => false); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'DTO', + SCAPTION => 'Окончание работы', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_DATE, + BVISIBLE => false); for Y in EXTRACT(year from DFROM) .. EXTRACT(year from DTO) loop SYEAR_COL_NAME := TO_CHAR(Y); @@ -1605,22 +1620,22 @@ create or replace package body PKG_P8PANELS_PROJECTS as else BEXPANDED := false; end if; - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => SYEAR_COL_NAME, - SCAPTION => TO_CHAR(Y), - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, - BEXPANDABLE => true, - BEXPANDED => BEXPANDED); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => SYEAR_COL_NAME, + SCAPTION => TO_CHAR(Y), + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, + BEXPANDABLE => true, + BEXPANDED => BEXPANDED); for M in 1 .. 12 loop DFROM_CUR := TO_DATE('01.' || LPAD(TO_CHAR(M), 2, '0') || '.' || TO_CHAR(Y), 'dd.mm.yyyy'); DTO_CUR := LAST_DAY(DFROM_CUR); if ((DFROM_CUR >= DFROM) and (DTO_CUR <= DTO)) then - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => SYEAR_COL_NAME || '_' || TO_CHAR(M), - SCAPTION => LPAD(TO_CHAR(M), 2, '0'), - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, - SPARENT => SYEAR_COL_NAME); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => SYEAR_COL_NAME || '_' || TO_CHAR(M), + SCAPTION => LPAD(TO_CHAR(M), 2, '0'), + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, + SPARENT => SYEAR_COL_NAME); end if; end loop; end loop; @@ -1635,11 +1650,11 @@ create or replace package body PKG_P8PANELS_PROJECTS as loop /* Добвим группу для проекта */ SPRJ_GROUP_NAME := PR.RN; - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_GROUP(RDATA_GRID => RDG, - SNAME => SPRJ_GROUP_NAME, - SCAPTION => PR.CODE || ' - ' || PR.NAME, - BEXPANDABLE => true, - BEXPANDED => true); + PKG_P8PANELS_VISUAL.TDG_ADD_GROUP(RDATA_GRID => RDG, + SNAME => SPRJ_GROUP_NAME, + SCAPTION => PR.CODE || ' - ' || PR.NAME, + BEXPANDABLE => true, + BEXPANDED => true); /* Обходим этапы проекта */ for ST in (select PS.RN NRN, trim(PS.NUMB) || ' - ' || PS.NAME SJOB, @@ -1660,21 +1675,21 @@ create or replace package body PKG_P8PANELS_PROJECTS as order by PS.NUMB) loop /* Инициализируем строку */ - RDG_ROW := PKG_P8PANELS_VISUAL.TROW_MAKE(SGROUP => SPRJ_GROUP_NAME); + RDG_ROW := PKG_P8PANELS_VISUAL.TDG_ROW_MAKE(SGROUP => SPRJ_GROUP_NAME); /* Добавляем колонки с данными */ - PKG_P8PANELS_VISUAL.TROW_ADD_COL(RROW => RDG_ROW, SNAME => 'NRN', NVALUE => ST.NRN); - PKG_P8PANELS_VISUAL.TROW_ADD_COL(RROW => RDG_ROW, SNAME => 'SJOB', SVALUE => ST.SJOB); - PKG_P8PANELS_VISUAL.TROW_ADD_COL(RROW => RDG_ROW, SNAME => 'SRESP', SVALUE => ST.SRESP); - PKG_P8PANELS_VISUAL.TROW_ADD_COL(RROW => RDG_ROW, SNAME => 'NSTATE', NVALUE => ST.NSTATE); - PKG_P8PANELS_VISUAL.TROW_ADD_COL(RROW => RDG_ROW, SNAME => 'DFROM', DVALUE => ST.DFROM); - PKG_P8PANELS_VISUAL.TROW_ADD_COL(RROW => RDG_ROW, SNAME => 'DTO', DVALUE => ST.DTO); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_COL(RROW => RDG_ROW, SNAME => 'NRN', NVALUE => ST.NRN); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_COL(RROW => RDG_ROW, SNAME => 'SJOB', SVALUE => ST.SJOB); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_COL(RROW => RDG_ROW, SNAME => 'SRESP', SVALUE => ST.SRESP); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_COL(RROW => RDG_ROW, SNAME => 'NSTATE', NVALUE => ST.NSTATE); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_COL(RROW => RDG_ROW, SNAME => 'DFROM', DVALUE => ST.DFROM); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_COL(RROW => RDG_ROW, SNAME => 'DTO', DVALUE => ST.DTO); /* Добавим строку для этапа */ - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_ROW(RDATA_GRID => RDG, RROW => RDG_ROW); + PKG_P8PANELS_VISUAL.TDG_ADD_ROW(RDATA_GRID => RDG, RROW => RDG_ROW); end loop; end loop; end if; /* Сериализуем описание */ - COUT := PKG_P8PANELS_VISUAL.TDATA_GRID_TO_XML(RDATA_GRID => RDG, NINCLUDE_DEF => 1); + COUT := PKG_P8PANELS_VISUAL.TDG_TO_XML(RDATA_GRID => RDG, NINCLUDE_DEF => 1); end GRAPH; /* График по данным проектов - "Топ проблем" */ @@ -2550,11 +2565,11 @@ create or replace package body PKG_P8PANELS_PROJECTS as 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; -- Предопределённые значения столбцов + RF PKG_P8PANELS_VISUAL.TDG_FILTERS; -- Фильтры + RO PKG_P8PANELS_VISUAL.TDG_ORDERS; -- Сортировки + RDG PKG_P8PANELS_VISUAL.TDG; -- Описание таблицы + RDG_ROW PKG_P8PANELS_VISUAL.TDG_ROW; -- Строка таблицы + RCOL_VALS PKG_P8PANELS_VISUAL.TDG_COL_VALS; -- Предопределённые значения столбцов NROW_FROM PKG_STD.TREF; -- Номер строки с NROW_TO PKG_STD.TREF; -- Номер строки по NFPDARTCL_REALIZ PKG_STD.TREF; -- Рег. номер статьи калькуляции для реализации @@ -2568,246 +2583,246 @@ create or replace package body PKG_P8PANELS_PROJECTS as /* Определим рег. номер статьи калькуляции для учёта реализации */ FIND_FPDARTCL_CODE(NFLAG_SMART => 1, NCOMPANY => NCOMPANY, SCODE => SFPDARTCL_REALIZ, NRN => NFPDARTCL_REALIZ); /* Читаем фильтры */ - RF := PKG_P8PANELS_VISUAL.TFILTERS_FROM_XML(CFILTERS => CFILTERS); + RF := PKG_P8PANELS_VISUAL.TDG_FILTERS_FROM_XML(CFILTERS => CFILTERS); /* Читаем сортировки */ - RO := PKG_P8PANELS_VISUAL.TORDERS_FROM_XML(CORDERS => CORDERS); + RO := PKG_P8PANELS_VISUAL.TDG_ORDERS_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(); + RDG := PKG_P8PANELS_VISUAL.TDG_MAKE(); /* Добавляем в таблицу описание колонок */ - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'NRN', - SCAPTION => 'Рег. номер', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, - BVISIBLE => false); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'SNUMB', - SCAPTION => 'Номер', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, - SCOND_FROM => 'EDNUMB', - BORDER => true, - BFILTER => true); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'SNAME', - SCAPTION => 'Наименование', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, - SCOND_FROM => 'EDNAME', - BORDER => true, - BFILTER => true); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'SEXPECTED_RES', - SCAPTION => 'Ожидаемые результаты', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, - BVISIBLE => false); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'SFACEACC', - SCAPTION => 'Шифр затрат', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, - BVISIBLE => false); - 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.TCOL_VALS_ADD(RCOL_VALS => RCOL_VALS, NVALUE => 2); - PKG_P8PANELS_VISUAL.TCOL_VALS_ADD(RCOL_VALS => RCOL_VALS, NVALUE => 3); - PKG_P8PANELS_VISUAL.TCOL_VALS_ADD(RCOL_VALS => RCOL_VALS, NVALUE => 4); - PKG_P8PANELS_VISUAL.TCOL_VALS_ADD(RCOL_VALS => RCOL_VALS, NVALUE => 5); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'NSTATE', - SCAPTION => 'Состояние', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, - SCOND_FROM => 'CGSTATE', - BORDER => true, - BFILTER => true, - RCOL_VALS => RCOL_VALS); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'DBEGPLAN', - SCAPTION => 'Дата начала', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_DATE, - SCOND_FROM => 'EDPLANBEGFrom', - SCOND_TO => 'EDPLANBEGTo', - BORDER => true, - BFILTER => true); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'DENDPLAN', - SCAPTION => 'Дата окончания', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_DATE, - SCOND_FROM => 'EDPLANENDFrom', - SCOND_TO => 'EDPLANENDTo', - BORDER => true, - BFILTER => true); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'NCOST_SUM', - SCAPTION => 'Стоимость', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, - BVISIBLE => false); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'SCURNAMES', - SCAPTION => 'Валюта', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, - BVISIBLE => false); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'NFIN_IN', - SCAPTION => 'Входящее финансирование', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, - BVISIBLE => false); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'SLNK_UNIT_NFIN_IN', - SCAPTION => 'Входящее финансирование (код раздела ссылки)', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, - BVISIBLE => false); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'NLNK_DOCUMENT_NFIN_IN', - SCAPTION => 'Входящее финансирование (документ ссылки)', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, - BVISIBLE => false); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'NFIN_OUT', - SCAPTION => 'Исходящее финансирование', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, - BVISIBLE => false); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'SLNK_UNIT_NFIN_OUT', - SCAPTION => 'Исходящее финансирование (код раздела ссылки)', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, - BVISIBLE => false); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'NLNK_DOCUMENT_NFIN_OUT', - SCAPTION => 'Исходящее финансирование (документ ссылки)', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, - BVISIBLE => false); - 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 => 'NCTRL_FIN', - SCAPTION => 'Фин-е (исх.)', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, - SCOND_FROM => 'EDCTRL_FIN', - BORDER => true, - BFILTER => true, - RCOL_VALS => RCOL_VALS, - SHINT => 'Финансирование (исходящее) - контроль оплаты счетов, выставленных соисполнителями по этапу.
' || - 'Требует внимания - к этапу привязаны договоры соисполнителей, для которых не все выставленные соисполнителями счета оплачены.
' || - 'В норме - нет договоров соисполнения с отклонениями, описанными выше.
' || - 'Пусто - в Системе не хватает данных для рассчёта. Убедитесь, что для этапов задана привязка к договорам с соисполнителями.'); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'NCTRL_CONTR', - SCAPTION => 'Контр-я', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, - SCOND_FROM => 'EDCTRL_CONTR', - BORDER => true, - BFILTER => true, - RCOL_VALS => RCOL_VALS, - SHINT => 'Контрактация - контроль суммы договоров, заключеных с соисполнителями в рамках этапа.
' || - 'Требует внимания - сумма договоров с соисполнителями, привязанных к этапу, превышает заложенные в калькуляцию плановые показатели по сответствующим статьям.
' || - 'В норме - нет описанных выше отклонений.
' || - 'Пусто - в Системе не хватает данных для рассчёта. Убедитесь, что для этапа задана калькуляция и для контрагентских статей указаны плановые показатели.'); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'NCTRL_COEXEC', - SCAPTION => 'Соисп-е', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, - SCOND_FROM => 'EDCTRL_COEXEC', - BORDER => true, - BFILTER => true, - RCOL_VALS => RCOL_VALS, - SHINT => 'Соисполнение - контроль исполнения обязательств по договорам, заключеным с соисполнителями в рамках этапа.
' || - 'Требует внимания - до окончания этапа осталось менее ' || - TO_CHAR(NDAYS_LEFT_LIMIT) || - ' дней, при этом зафиксирован положительный остаток к поставке/актированию по привязанным к нему договорам соисполнителей.
' || - 'В норме - нет описанных выше отклонений.
' || - 'Пусто - в Системе не хватает данных для рассчёта. Убедитесь, что для этапа задана привязка к договорам с соисполнителями и плановый срок окончания.'); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'NDAYS_LEFT', - SCAPTION => 'Дней до окончания', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, - BVISIBLE => false); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'NCTRL_PERIOD', - SCAPTION => 'Сроки', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, - SCOND_FROM => 'EDCTRL_PERIOD', - BORDER => true, - BFILTER => true, - RCOL_VALS => RCOL_VALS, - SHINT => 'Сроки - контроль сроков исполнения работ по этапу.
' || - 'Требует внимания - до окончания этапа осталось менее ' || - TO_CHAR(NDAYS_LEFT_LIMIT) || ' дней.
' || - 'В норме - нет описанных выше отклонений.
' || - 'Пусто - в Системе не хватает данных для рассчёта. Убедитесь, что для этапа задан плановый срок окончания.'); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'NCOST_FACT', - SCAPTION => 'Сумма фактических затрат', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, - BVISIBLE => false); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'SLNK_UNIT_NCOST_FACT', - SCAPTION => 'Сумма фактических затрат (код раздела ссылки)', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, - BVISIBLE => false); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'NLNK_DOCUMENT_NCOST_FACT', - SCAPTION => 'Сумма фактических затрат (документ ссылки)', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, - BVISIBLE => false); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'NSUMM_REALIZ', - SCAPTION => 'Сумма реализации', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, - BVISIBLE => false); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'SLNK_UNIT_NSUMM_REALIZ', - SCAPTION => 'Сумма реализации (код раздела ссылки)', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, - BVISIBLE => false); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'NLNK_DOCUMENT_NSUMM_REALIZ', - SCAPTION => 'Сумма реализации (документ ссылки)', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, - BVISIBLE => false); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'NSUMM_INCOME', - SCAPTION => 'Сумма прибыли', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, - BVISIBLE => false); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'NINCOME_PRC', - SCAPTION => 'Процент прибыли', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, - BVISIBLE => false); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'NCTRL_COST', - SCAPTION => 'Затраты', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, - SCOND_FROM => 'EDCTRL_COST', - BORDER => true, - BFILTER => true, - RCOL_VALS => RCOL_VALS, - SHINT => 'Затраты - контроль затрат, понесённых в ходе выполнения работ по этапу.
' || - 'Требует внимания - сумма фактических затрат этапа по некоторым статьям калькуляции превысила плановую.
' || - 'В норме - нет описанных выше отклонений.
' || - 'Пусто - в Системе не хватает данных для рассчёта. Убедитесь, что для этапа задана действующая калькуляция с указанием плановых значений по статьям, подлежащим контролю.'); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'NCTRL_ACT', - SCAPTION => 'Актир-е', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, - SCOND_FROM => 'EDCTRL_ACT', - BORDER => true, - BFILTER => true, - RCOL_VALS => RCOL_VALS, - SHINT => 'Актирование - контроль актирования работ, выполненных по этапу, со стороны заказчика.
' || - 'Требует внимания - этап в состоянии "Закрыт", но при этом в Системе отсутствует утверждённая "Расходная накладная на отпуск потребителю" для данного этапа.
' || - 'В норме - нет описанных выше отклонений.
' || - 'Пусто - в Системе не хватает данных для рассчёта. Убедитесь, что этап, если работы по нему завершены, переведен в состояние "Закрыт".'); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'NCOST_READY', - SCAPTION => 'Готов (%, затраты)', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, - SCOND_FROM => 'EDCOST_READYFrom', - SCOND_TO => 'EDCOST_READYTo', - BORDER => true, - BFILTER => true); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'NRN', + SCAPTION => 'Рег. номер', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, + BVISIBLE => false); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'SNUMB', + SCAPTION => 'Номер', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, + SCOND_FROM => 'EDNUMB', + BORDER => true, + BFILTER => true); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'SNAME', + SCAPTION => 'Наименование', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, + SCOND_FROM => 'EDNAME', + BORDER => true, + BFILTER => true); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'SEXPECTED_RES', + SCAPTION => 'Ожидаемые результаты', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, + BVISIBLE => false); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'SFACEACC', + SCAPTION => 'Шифр затрат', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, + BVISIBLE => false); + PKG_P8PANELS_VISUAL.TDG_COL_VALS_ADD(RCOL_VALS => RCOL_VALS, NVALUE => 0, BCLEAR => true); + PKG_P8PANELS_VISUAL.TDG_COL_VALS_ADD(RCOL_VALS => RCOL_VALS, NVALUE => 1); + PKG_P8PANELS_VISUAL.TDG_COL_VALS_ADD(RCOL_VALS => RCOL_VALS, NVALUE => 2); + PKG_P8PANELS_VISUAL.TDG_COL_VALS_ADD(RCOL_VALS => RCOL_VALS, NVALUE => 3); + PKG_P8PANELS_VISUAL.TDG_COL_VALS_ADD(RCOL_VALS => RCOL_VALS, NVALUE => 4); + PKG_P8PANELS_VISUAL.TDG_COL_VALS_ADD(RCOL_VALS => RCOL_VALS, NVALUE => 5); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'NSTATE', + SCAPTION => 'Состояние', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, + SCOND_FROM => 'CGSTATE', + BORDER => true, + BFILTER => true, + RCOL_VALS => RCOL_VALS); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'DBEGPLAN', + SCAPTION => 'Дата начала', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_DATE, + SCOND_FROM => 'EDPLANBEGFrom', + SCOND_TO => 'EDPLANBEGTo', + BORDER => true, + BFILTER => true); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'DENDPLAN', + SCAPTION => 'Дата окончания', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_DATE, + SCOND_FROM => 'EDPLANENDFrom', + SCOND_TO => 'EDPLANENDTo', + BORDER => true, + BFILTER => true); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'NCOST_SUM', + SCAPTION => 'Стоимость', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, + BVISIBLE => false); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'SCURNAMES', + SCAPTION => 'Валюта', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, + BVISIBLE => false); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'NFIN_IN', + SCAPTION => 'Входящее финансирование', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, + BVISIBLE => false); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'SLNK_UNIT_NFIN_IN', + SCAPTION => 'Входящее финансирование (код раздела ссылки)', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, + BVISIBLE => false); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'NLNK_DOCUMENT_NFIN_IN', + SCAPTION => 'Входящее финансирование (документ ссылки)', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, + BVISIBLE => false); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'NFIN_OUT', + SCAPTION => 'Исходящее финансирование', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, + BVISIBLE => false); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'SLNK_UNIT_NFIN_OUT', + SCAPTION => 'Исходящее финансирование (код раздела ссылки)', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, + BVISIBLE => false); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'NLNK_DOCUMENT_NFIN_OUT', + SCAPTION => 'Исходящее финансирование (документ ссылки)', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, + BVISIBLE => false); + PKG_P8PANELS_VISUAL.TDG_COL_VALS_ADD(RCOL_VALS => RCOL_VALS, NVALUE => 0, BCLEAR => true); + PKG_P8PANELS_VISUAL.TDG_COL_VALS_ADD(RCOL_VALS => RCOL_VALS, NVALUE => 1); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'NCTRL_FIN', + SCAPTION => 'Фин-е (исх.)', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, + SCOND_FROM => 'EDCTRL_FIN', + BORDER => true, + BFILTER => true, + RCOL_VALS => RCOL_VALS, + SHINT => 'Финансирование (исходящее) - контроль оплаты счетов, выставленных соисполнителями по этапу.
' || + 'Требует внимания - к этапу привязаны договоры соисполнителей, для которых не все выставленные соисполнителями счета оплачены.
' || + 'В норме - нет договоров соисполнения с отклонениями, описанными выше.
' || + 'Пусто - в Системе не хватает данных для рассчёта. Убедитесь, что для этапов задана привязка к договорам с соисполнителями.'); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'NCTRL_CONTR', + SCAPTION => 'Контр-я', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, + SCOND_FROM => 'EDCTRL_CONTR', + BORDER => true, + BFILTER => true, + RCOL_VALS => RCOL_VALS, + SHINT => 'Контрактация - контроль суммы договоров, заключеных с соисполнителями в рамках этапа.
' || + 'Требует внимания - сумма договоров с соисполнителями, привязанных к этапу, превышает заложенные в калькуляцию плановые показатели по сответствующим статьям.
' || + 'В норме - нет описанных выше отклонений.
' || + 'Пусто - в Системе не хватает данных для рассчёта. Убедитесь, что для этапа задана калькуляция и для контрагентских статей указаны плановые показатели.'); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'NCTRL_COEXEC', + SCAPTION => 'Соисп-е', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, + SCOND_FROM => 'EDCTRL_COEXEC', + BORDER => true, + BFILTER => true, + RCOL_VALS => RCOL_VALS, + SHINT => 'Соисполнение - контроль исполнения обязательств по договорам, заключеным с соисполнителями в рамках этапа.
' || + 'Требует внимания - до окончания этапа осталось менее ' || + TO_CHAR(NDAYS_LEFT_LIMIT) || + ' дней, при этом зафиксирован положительный остаток к поставке/актированию по привязанным к нему договорам соисполнителей.
' || + 'В норме - нет описанных выше отклонений.
' || + 'Пусто - в Системе не хватает данных для рассчёта. Убедитесь, что для этапа задана привязка к договорам с соисполнителями и плановый срок окончания.'); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'NDAYS_LEFT', + SCAPTION => 'Дней до окончания', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, + BVISIBLE => false); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'NCTRL_PERIOD', + SCAPTION => 'Сроки', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, + SCOND_FROM => 'EDCTRL_PERIOD', + BORDER => true, + BFILTER => true, + RCOL_VALS => RCOL_VALS, + SHINT => 'Сроки - контроль сроков исполнения работ по этапу.
' || + 'Требует внимания - до окончания этапа осталось менее ' || + TO_CHAR(NDAYS_LEFT_LIMIT) || ' дней.
' || + 'В норме - нет описанных выше отклонений.
' || + 'Пусто - в Системе не хватает данных для рассчёта. Убедитесь, что для этапа задан плановый срок окончания.'); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'NCOST_FACT', + SCAPTION => 'Сумма фактических затрат', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, + BVISIBLE => false); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'SLNK_UNIT_NCOST_FACT', + SCAPTION => 'Сумма фактических затрат (код раздела ссылки)', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, + BVISIBLE => false); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'NLNK_DOCUMENT_NCOST_FACT', + SCAPTION => 'Сумма фактических затрат (документ ссылки)', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, + BVISIBLE => false); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'NSUMM_REALIZ', + SCAPTION => 'Сумма реализации', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, + BVISIBLE => false); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'SLNK_UNIT_NSUMM_REALIZ', + SCAPTION => 'Сумма реализации (код раздела ссылки)', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, + BVISIBLE => false); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'NLNK_DOCUMENT_NSUMM_REALIZ', + SCAPTION => 'Сумма реализации (документ ссылки)', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, + BVISIBLE => false); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'NSUMM_INCOME', + SCAPTION => 'Сумма прибыли', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, + BVISIBLE => false); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'NINCOME_PRC', + SCAPTION => 'Процент прибыли', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, + BVISIBLE => false); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'NCTRL_COST', + SCAPTION => 'Затраты', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, + SCOND_FROM => 'EDCTRL_COST', + BORDER => true, + BFILTER => true, + RCOL_VALS => RCOL_VALS, + SHINT => 'Затраты - контроль затрат, понесённых в ходе выполнения работ по этапу.
' || + 'Требует внимания - сумма фактических затрат этапа по некоторым статьям калькуляции превысила плановую.
' || + 'В норме - нет описанных выше отклонений.
' || + 'Пусто - в Системе не хватает данных для рассчёта. Убедитесь, что для этапа задана действующая калькуляция с указанием плановых значений по статьям, подлежащим контролю.'); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'NCTRL_ACT', + SCAPTION => 'Актир-е', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, + SCOND_FROM => 'EDCTRL_ACT', + BORDER => true, + BFILTER => true, + RCOL_VALS => RCOL_VALS, + SHINT => 'Актирование - контроль актирования работ, выполненных по этапу, со стороны заказчика.
' || + 'Требует внимания - этап в состоянии "Закрыт", но при этом в Системе отсутствует утверждённая "Расходная накладная на отпуск потребителю" для данного этапа.
' || + 'В норме - нет описанных выше отклонений.
' || + 'Пусто - в Системе не хватает данных для рассчёта. Убедитесь, что этап, если работы по нему завершены, переведен в состояние "Закрыт".'); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'NCOST_READY', + SCAPTION => 'Готов (%, затраты)', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, + SCOND_FROM => 'EDCOST_READYFrom', + SCOND_TO => 'EDCOST_READYTo', + BORDER => true, + BFILTER => true); /* Обходим данные */ begin /* Добавляем подсказку совместимости */ @@ -2857,15 +2872,18 @@ create or replace package body PKG_P8PANELS_PROJECTS as PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' and PS.RN in (select ID from COND_BROKER_IDSMART where IDENT = :NIDENT) %ORDER_BY%) D) F'); PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' 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.TDG_ORDERS_SET_QUERY(RDATA_GRID => RDG, + RORDERS => RO, + SPATTERN => '%ORDER_BY%', + CSQL => CSQL); /* Учтём фильтры */ - PKG_P8PANELS_VISUAL.TFILTERS_SET_QUERY(NIDENT => NIDENT, - NCOMPANY => NCOMPANY, - NPARENT => NPRN, - SUNIT => 'ProjectsStages', - SPROCEDURE => PKG_SQL_BUILD.PKG_NAME(SNAME => 'PKG_P8PANELS_PROJECTS.STAGES_COND'), - RDATA_GRID => RDG, - RFILTERS => RF); + PKG_P8PANELS_VISUAL.TDG_FILTERS_SET_QUERY(NIDENT => NIDENT, + NCOMPANY => NCOMPANY, + NPARENT => NPRN, + SUNIT => 'ProjectsStages', + SPROCEDURE => PKG_SQL_BUILD.PKG_NAME(SNAME => 'PKG_P8PANELS_PROJECTS.STAGES_COND'), + RDATA_GRID => RDG, + RFILTERS => RF); /* Разбираем его */ ICURSOR := PKG_SQL_DML.OPEN_CURSOR(SWHAT => 'SELECT'); PKG_SQL_DML.PARSE(ICURSOR => ICURSOR, SQUERY => CSQL); @@ -2914,80 +2932,95 @@ create or replace package body PKG_P8PANELS_PROJECTS as while (PKG_SQL_DML.FETCH_ROWS(ICURSOR => ICURSOR) > 0) loop /* Добавляем колонки с данными */ - PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLN(RROW => RDG_ROW, - SNAME => 'NRN', - ICURSOR => ICURSOR, - NPOSITION => 1, - BCLEAR => true); - PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLS(RROW => RDG_ROW, SNAME => 'SNUMB', ICURSOR => ICURSOR, NPOSITION => 2); - PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLS(RROW => RDG_ROW, SNAME => 'SNAME', ICURSOR => ICURSOR, NPOSITION => 3); - PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLS(RROW => RDG_ROW, - SNAME => 'SEXPECTED_RES', - ICURSOR => ICURSOR, - NPOSITION => 4); - PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLS(RROW => RDG_ROW, SNAME => 'SFACEACC', ICURSOR => ICURSOR, NPOSITION => 5); - PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLN(RROW => RDG_ROW, SNAME => 'NSTATE', ICURSOR => ICURSOR, NPOSITION => 6); - PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLD(RROW => RDG_ROW, SNAME => 'DBEGPLAN', ICURSOR => ICURSOR, NPOSITION => 7); - PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLD(RROW => RDG_ROW, SNAME => 'DENDPLAN', ICURSOR => ICURSOR, NPOSITION => 8); - PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLN(RROW => RDG_ROW, - SNAME => 'NCOST_SUM', - ICURSOR => ICURSOR, - NPOSITION => 9); - PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLS(RROW => RDG_ROW, - SNAME => 'SCURNAMES', - ICURSOR => ICURSOR, - NPOSITION => 10); - PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLN(RROW => RDG_ROW, SNAME => 'NFIN_IN', ICURSOR => ICURSOR, NPOSITION => 11); - PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLS(RROW => RDG_ROW, - SNAME => 'SLNK_UNIT_NFIN_IN', - ICURSOR => ICURSOR, - NPOSITION => 12); - PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLN(RROW => RDG_ROW, - SNAME => 'NLNK_DOCUMENT_NFIN_IN', - ICURSOR => ICURSOR, - NPOSITION => 13); - PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLN(RROW => RDG_ROW, - SNAME => 'NFIN_OUT', - ICURSOR => ICURSOR, - NPOSITION => 14); - PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLS(RROW => RDG_ROW, - SNAME => 'SLNK_UNIT_NFIN_OUT', - ICURSOR => ICURSOR, - NPOSITION => 15); - PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLN(RROW => RDG_ROW, - SNAME => 'NLNK_DOCUMENT_NFIN_OUT', - ICURSOR => ICURSOR, - NPOSITION => 16); - PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLN(RROW => RDG_ROW, - SNAME => 'NCTRL_FIN', - ICURSOR => ICURSOR, - NPOSITION => 17); - PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLN(RROW => RDG_ROW, - SNAME => 'NCTRL_CONTR', - ICURSOR => ICURSOR, - NPOSITION => 18); - PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLN(RROW => RDG_ROW, - SNAME => 'NCTRL_COEXEC', - ICURSOR => ICURSOR, - NPOSITION => 19); - PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLN(RROW => RDG_ROW, - SNAME => 'NDAYS_LEFT', - ICURSOR => ICURSOR, - NPOSITION => 20); - PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLN(RROW => RDG_ROW, - SNAME => 'NCTRL_PERIOD', - ICURSOR => ICURSOR, - NPOSITION => 21); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLN(RROW => RDG_ROW, + SNAME => 'NRN', + ICURSOR => ICURSOR, + NPOSITION => 1, + BCLEAR => true); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLS(RROW => RDG_ROW, SNAME => 'SNUMB', ICURSOR => ICURSOR, NPOSITION => 2); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLS(RROW => RDG_ROW, SNAME => 'SNAME', ICURSOR => ICURSOR, NPOSITION => 3); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLS(RROW => RDG_ROW, + SNAME => 'SEXPECTED_RES', + ICURSOR => ICURSOR, + NPOSITION => 4); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLS(RROW => RDG_ROW, + SNAME => 'SFACEACC', + ICURSOR => ICURSOR, + NPOSITION => 5); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLN(RROW => RDG_ROW, + SNAME => 'NSTATE', + ICURSOR => ICURSOR, + NPOSITION => 6); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLD(RROW => RDG_ROW, + SNAME => 'DBEGPLAN', + ICURSOR => ICURSOR, + NPOSITION => 7); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLD(RROW => RDG_ROW, + SNAME => 'DENDPLAN', + ICURSOR => ICURSOR, + NPOSITION => 8); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLN(RROW => RDG_ROW, + SNAME => 'NCOST_SUM', + ICURSOR => ICURSOR, + NPOSITION => 9); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLS(RROW => RDG_ROW, + SNAME => 'SCURNAMES', + ICURSOR => ICURSOR, + NPOSITION => 10); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLN(RROW => RDG_ROW, + SNAME => 'NFIN_IN', + ICURSOR => ICURSOR, + NPOSITION => 11); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLS(RROW => RDG_ROW, + SNAME => 'SLNK_UNIT_NFIN_IN', + ICURSOR => ICURSOR, + NPOSITION => 12); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLN(RROW => RDG_ROW, + SNAME => 'NLNK_DOCUMENT_NFIN_IN', + ICURSOR => ICURSOR, + NPOSITION => 13); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLN(RROW => RDG_ROW, + SNAME => 'NFIN_OUT', + ICURSOR => ICURSOR, + NPOSITION => 14); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLS(RROW => RDG_ROW, + SNAME => 'SLNK_UNIT_NFIN_OUT', + ICURSOR => ICURSOR, + NPOSITION => 15); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLN(RROW => RDG_ROW, + SNAME => 'NLNK_DOCUMENT_NFIN_OUT', + ICURSOR => ICURSOR, + NPOSITION => 16); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLN(RROW => RDG_ROW, + SNAME => 'NCTRL_FIN', + ICURSOR => ICURSOR, + NPOSITION => 17); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLN(RROW => RDG_ROW, + SNAME => 'NCTRL_CONTR', + ICURSOR => ICURSOR, + NPOSITION => 18); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLN(RROW => RDG_ROW, + SNAME => 'NCTRL_COEXEC', + ICURSOR => ICURSOR, + NPOSITION => 19); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLN(RROW => RDG_ROW, + SNAME => 'NDAYS_LEFT', + ICURSOR => ICURSOR, + NPOSITION => 20); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLN(RROW => RDG_ROW, + SNAME => 'NCTRL_PERIOD', + ICURSOR => ICURSOR, + NPOSITION => 21); PKG_SQL_DML.COLUMN_VALUE_NUM(ICURSOR => ICURSOR, IPOSITION => 22, NVALUE => NCOST_FACT); - PKG_P8PANELS_VISUAL.TROW_ADD_COL(RROW => RDG_ROW, SNAME => 'NCOST_FACT', NVALUE => NCOST_FACT); - PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLS(RROW => RDG_ROW, - SNAME => 'SLNK_UNIT_NCOST_FACT', - ICURSOR => ICURSOR, - NPOSITION => 23); - PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLN(RROW => RDG_ROW, - SNAME => 'NLNK_DOCUMENT_NCOST_FACT', - ICURSOR => ICURSOR, - NPOSITION => 24); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_COL(RROW => RDG_ROW, SNAME => 'NCOST_FACT', NVALUE => NCOST_FACT); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLS(RROW => RDG_ROW, + SNAME => 'SLNK_UNIT_NCOST_FACT', + ICURSOR => ICURSOR, + NPOSITION => 23); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLN(RROW => RDG_ROW, + SNAME => 'NLNK_DOCUMENT_NCOST_FACT', + ICURSOR => ICURSOR, + NPOSITION => 24); PKG_SQL_DML.COLUMN_VALUE_NUM(ICURSOR => ICURSOR, IPOSITION => 25, NVALUE => NSUMM_REALIZ); if (NSUMM_REALIZ = 0) then NSUMM_INCOME := 0; @@ -2996,31 +3029,31 @@ create or replace package body PKG_P8PANELS_PROJECTS as NSUMM_INCOME := NSUMM_REALIZ - NCOST_FACT; NINCOME_PRC := NSUMM_INCOME / NCOST_FACT * 100; end if; - PKG_P8PANELS_VISUAL.TROW_ADD_COL(RROW => RDG_ROW, SNAME => 'NSUMM_REALIZ', NVALUE => NSUMM_REALIZ); - PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLS(RROW => RDG_ROW, - SNAME => 'SLNK_UNIT_NSUMM_REALIZ', - ICURSOR => ICURSOR, - NPOSITION => 26); - PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLN(RROW => RDG_ROW, - SNAME => 'NLNK_DOCUMENT_NSUMM_REALIZ', - ICURSOR => ICURSOR, - NPOSITION => 27); - PKG_P8PANELS_VISUAL.TROW_ADD_COL(RROW => RDG_ROW, SNAME => 'NSUMM_INCOME', NVALUE => NSUMM_INCOME); - PKG_P8PANELS_VISUAL.TROW_ADD_COL(RROW => RDG_ROW, SNAME => 'NINCOME_PRC', NVALUE => NINCOME_PRC); - PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLN(RROW => RDG_ROW, - SNAME => 'NCTRL_COST', - ICURSOR => ICURSOR, - NPOSITION => 28); - PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLN(RROW => RDG_ROW, - SNAME => 'NCTRL_ACT', - ICURSOR => ICURSOR, - NPOSITION => 29); - PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLN(RROW => RDG_ROW, - SNAME => 'NCOST_READY', - ICURSOR => ICURSOR, - NPOSITION => 30); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_COL(RROW => RDG_ROW, SNAME => 'NSUMM_REALIZ', NVALUE => NSUMM_REALIZ); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLS(RROW => RDG_ROW, + SNAME => 'SLNK_UNIT_NSUMM_REALIZ', + ICURSOR => ICURSOR, + NPOSITION => 26); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLN(RROW => RDG_ROW, + SNAME => 'NLNK_DOCUMENT_NSUMM_REALIZ', + ICURSOR => ICURSOR, + NPOSITION => 27); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_COL(RROW => RDG_ROW, SNAME => 'NSUMM_INCOME', NVALUE => NSUMM_INCOME); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_COL(RROW => RDG_ROW, SNAME => 'NINCOME_PRC', NVALUE => NINCOME_PRC); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLN(RROW => RDG_ROW, + SNAME => 'NCTRL_COST', + ICURSOR => ICURSOR, + NPOSITION => 28); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLN(RROW => RDG_ROW, + SNAME => 'NCTRL_ACT', + ICURSOR => ICURSOR, + NPOSITION => 29); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLN(RROW => RDG_ROW, + SNAME => 'NCOST_READY', + ICURSOR => ICURSOR, + NPOSITION => 30); /* Добавляем строку в таблицу */ - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_ROW(RDATA_GRID => RDG, RROW => RDG_ROW); + PKG_P8PANELS_VISUAL.TDG_ADD_ROW(RDATA_GRID => RDG, RROW => RDG_ROW); end loop; /* Освобождаем курсор */ PKG_SQL_DML.CLOSE_CURSOR(ICURSOR => ICURSOR); @@ -3030,7 +3063,7 @@ create or replace package body PKG_P8PANELS_PROJECTS as raise; end; /* Сериализуем описание */ - COUT := PKG_P8PANELS_VISUAL.TDATA_GRID_TO_XML(RDATA_GRID => RDG, NINCLUDE_DEF => NINCLUDE_DEF); + COUT := PKG_P8PANELS_VISUAL.TDG_TO_XML(RDATA_GRID => RDG, NINCLUDE_DEF => NINCLUDE_DEF); end STAGES_LIST; /* Подбор записей журнала затрат по статье калькуляции этапа проекта */ @@ -3303,84 +3336,86 @@ create or replace package body PKG_P8PANELS_PROJECTS as /* Список статей калькуляции этапа проекта */ procedure STAGE_ARTS_LIST ( - NSTAGE in number, -- Рег. номер этапа проекта - CFILTERS in clob, -- Фильтры - NINCLUDE_DEF in number, -- Признак включения описания колонок таблицы в ответ - COUT out clob -- Сериализованная таблица данных + NSTAGE in number, -- Рег. номер этапа проекта + CFILTERS in clob, -- Фильтры + NINCLUDE_DEF in number, -- Признак включения описания колонок таблицы в ответ + COUT out clob -- Сериализованная таблица данных ) is - RF PKG_P8PANELS_VISUAL.TFILTERS; -- Фильтры - RF_CTRL_COST PKG_P8PANELS_VISUAL.TFILTER; -- Фильтр по колонке "Контроль (затраты)" - NCTRL_COST_FROM PKG_STD.TNUMBER; -- Нижняя граница диапазона фильтра по колонке "Контроль (затраты)" - NCTRL_COST_TO PKG_STD.TNUMBER; -- Верхняя граница диапазона фильтра по колонке "Контроль (затраты)" - RF_CTRL_CONTR PKG_P8PANELS_VISUAL.TFILTER; -- Фильтр по колонке "Контроль (контрактация)" - NCTRL_CONTR_FROM PKG_STD.TNUMBER; -- Нижняя граница диапазона фильтра по колонке "Контроль (контрактация)" - NCTRL_CONTR_TO PKG_STD.TNUMBER; -- Верхняя граница диапазона фильтра по колонке "Контроль (контрактация)" - RDG PKG_P8PANELS_VISUAL.TDATA_GRID; -- Описание таблицы - RDG_ROW PKG_P8PANELS_VISUAL.TROW; -- Строка таблицы - RCOL_VALS PKG_P8PANELS_VISUAL.TCOL_VALS; -- Предопределённые значения столбцов - RSTAGE_ARTS TSTAGE_ARTS; -- Список статей этапа проекта + RF PKG_P8PANELS_VISUAL.TDG_FILTERS; -- Фильтры + RF_CTRL_COST PKG_P8PANELS_VISUAL.TDG_FILTER; -- Фильтр по колонке "Контроль (затраты)" + NCTRL_COST_FROM PKG_STD.TNUMBER; -- Нижняя граница диапазона фильтра по колонке "Контроль (затраты)" + NCTRL_COST_TO PKG_STD.TNUMBER; -- Верхняя граница диапазона фильтра по колонке "Контроль (затраты)" + RF_CTRL_CONTR PKG_P8PANELS_VISUAL.TDG_FILTER; -- Фильтр по колонке "Контроль (контрактация)" + NCTRL_CONTR_FROM PKG_STD.TNUMBER; -- Нижняя граница диапазона фильтра по колонке "Контроль (контрактация)" + NCTRL_CONTR_TO PKG_STD.TNUMBER; -- Верхняя граница диапазона фильтра по колонке "Контроль (контрактация)" + RDG PKG_P8PANELS_VISUAL.TDG; -- Описание таблицы + RDG_ROW PKG_P8PANELS_VISUAL.TDG_ROW; -- Строка таблицы + RCOL_VALS PKG_P8PANELS_VISUAL.TDG_COL_VALS; -- Предопределённые значения столбцов + RSTAGE_ARTS TSTAGE_ARTS; -- Список статей этапа проекта begin /* Читаем фильтры */ - RF := PKG_P8PANELS_VISUAL.TFILTERS_FROM_XML(CFILTERS => CFILTERS); + RF := PKG_P8PANELS_VISUAL.TDG_FILTERS_FROM_XML(CFILTERS => CFILTERS); /* Найдем фильтр по контролю затрат */ - RF_CTRL_COST := PKG_P8PANELS_VISUAL.TFILTERS_FIND(RFILTERS => RF, SNAME => 'NCTRL_COST'); - PKG_P8PANELS_VISUAL.TFILTER_TO_NUMBER(RFILTER => RF_CTRL_COST, NFROM => NCTRL_COST_FROM, NTO => NCTRL_COST_TO); + RF_CTRL_COST := PKG_P8PANELS_VISUAL.TDG_FILTERS_FIND(RFILTERS => RF, SNAME => 'NCTRL_COST'); + PKG_P8PANELS_VISUAL.TDG_FILTER_TO_NUMBER(RFILTER => RF_CTRL_COST, NFROM => NCTRL_COST_FROM, NTO => NCTRL_COST_TO); /* Найдем фильтр по контролю контрактации */ - RF_CTRL_CONTR := PKG_P8PANELS_VISUAL.TFILTERS_FIND(RFILTERS => RF, SNAME => 'NCTRL_CONTR'); - PKG_P8PANELS_VISUAL.TFILTER_TO_NUMBER(RFILTER => RF_CTRL_CONTR, NFROM => NCTRL_CONTR_FROM, NTO => NCTRL_CONTR_TO); + RF_CTRL_CONTR := PKG_P8PANELS_VISUAL.TDG_FILTERS_FIND(RFILTERS => RF, SNAME => 'NCTRL_CONTR'); + PKG_P8PANELS_VISUAL.TDG_FILTER_TO_NUMBER(RFILTER => RF_CTRL_CONTR, + NFROM => NCTRL_CONTR_FROM, + NTO => NCTRL_CONTR_TO); /* Инициализируем таблицу данных */ - RDG := PKG_P8PANELS_VISUAL.TDATA_GRID_MAKE(); + RDG := PKG_P8PANELS_VISUAL.TDG_MAKE(); /* Добавляем в таблицу описание колонок */ - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'NRN', - SCAPTION => 'Рег. номер', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, - BVISIBLE => false); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'SNUMB', - SCAPTION => 'Номер', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'SNAME', - SCAPTION => 'Наименование статьи', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'NPLAN', - SCAPTION => 'План', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'NCOST_FACT', - SCAPTION => 'Фактические затраты', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'NCOST_DIFF', - SCAPTION => 'Отклонение по затратам', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, - BVISIBLE => false); - 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 => 'NCTRL_COST', - SCAPTION => 'Контроль (затраты)', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, - BFILTER => true, - RCOL_VALS => RCOL_VALS); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'NCONTR', - SCAPTION => 'Законтрактовано', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'NCONTR_LEFT', - SCAPTION => 'Осталось законтрактовать', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, - BVISIBLE => false); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'NCTRL_CONTR', - SCAPTION => 'Контроль (контрактация)', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, - BFILTER => true, - RCOL_VALS => RCOL_VALS); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'NRN', + SCAPTION => 'Рег. номер', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, + BVISIBLE => false); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'SNUMB', + SCAPTION => 'Номер', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'SNAME', + SCAPTION => 'Наименование статьи', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'NPLAN', + SCAPTION => 'План', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'NCOST_FACT', + SCAPTION => 'Фактические затраты', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'NCOST_DIFF', + SCAPTION => 'Отклонение по затратам', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, + BVISIBLE => false); + PKG_P8PANELS_VISUAL.TDG_COL_VALS_ADD(RCOL_VALS => RCOL_VALS, NVALUE => 0, BCLEAR => true); + PKG_P8PANELS_VISUAL.TDG_COL_VALS_ADD(RCOL_VALS => RCOL_VALS, NVALUE => 1); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'NCTRL_COST', + SCAPTION => 'Контроль (затраты)', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, + BFILTER => true, + RCOL_VALS => RCOL_VALS); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'NCONTR', + SCAPTION => 'Законтрактовано', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'NCONTR_LEFT', + SCAPTION => 'Осталось законтрактовать', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, + BVISIBLE => false); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'NCTRL_CONTR', + SCAPTION => 'Контроль (контрактация)', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, + BFILTER => true, + RCOL_VALS => RCOL_VALS); /* Сформируем сведения по статям этапа проекта */ STAGE_ARTS_GET(NSTAGE => NSTAGE, NINC_COST => 1, NINC_CONTR => 1, RSTAGE_ARTS => RSTAGE_ARTS); /* Обходим собранные статьи */ @@ -3393,30 +3428,36 @@ create or replace package body PKG_P8PANELS_PROJECTS as ((NCTRL_CONTR_FROM is null) or ((NCTRL_CONTR_FROM is not null) and (NCTRL_CONTR_FROM = RSTAGE_ARTS(I).NCTRL_CONTR)))) then /* Добавляем колонки с данными */ - PKG_P8PANELS_VISUAL.TROW_ADD_COL(RROW => RDG_ROW, - SNAME => 'NRN', - NVALUE => RSTAGE_ARTS(I).NRN, - BCLEAR => true); - PKG_P8PANELS_VISUAL.TROW_ADD_COL(RROW => RDG_ROW, SNAME => 'SNUMB', SVALUE => RSTAGE_ARTS(I).SCODE); - PKG_P8PANELS_VISUAL.TROW_ADD_COL(RROW => RDG_ROW, SNAME => 'SNAME', SVALUE => RSTAGE_ARTS(I).SNAME); - PKG_P8PANELS_VISUAL.TROW_ADD_COL(RROW => RDG_ROW, SNAME => 'NPLAN', NVALUE => RSTAGE_ARTS(I).NPLAN); - PKG_P8PANELS_VISUAL.TROW_ADD_COL(RROW => RDG_ROW, SNAME => 'NCOST_FACT', NVALUE => RSTAGE_ARTS(I).NCOST_FACT); - PKG_P8PANELS_VISUAL.TROW_ADD_COL(RROW => RDG_ROW, SNAME => 'NCOST_DIFF', NVALUE => RSTAGE_ARTS(I).NCOST_DIFF); - PKG_P8PANELS_VISUAL.TROW_ADD_COL(RROW => RDG_ROW, SNAME => 'NCTRL_COST', NVALUE => RSTAGE_ARTS(I).NCTRL_COST); - PKG_P8PANELS_VISUAL.TROW_ADD_COL(RROW => RDG_ROW, SNAME => 'NCONTR', NVALUE => RSTAGE_ARTS(I).NCONTR); - PKG_P8PANELS_VISUAL.TROW_ADD_COL(RROW => RDG_ROW, - SNAME => 'NCONTR_LEFT', - NVALUE => RSTAGE_ARTS(I).NCONTR_LEFT); - PKG_P8PANELS_VISUAL.TROW_ADD_COL(RROW => RDG_ROW, - SNAME => 'NCTRL_CONTR', - NVALUE => RSTAGE_ARTS(I).NCTRL_CONTR); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_COL(RROW => RDG_ROW, + SNAME => 'NRN', + NVALUE => RSTAGE_ARTS(I).NRN, + BCLEAR => true); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_COL(RROW => RDG_ROW, SNAME => 'SNUMB', SVALUE => RSTAGE_ARTS(I).SCODE); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_COL(RROW => RDG_ROW, SNAME => 'SNAME', SVALUE => RSTAGE_ARTS(I).SNAME); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_COL(RROW => RDG_ROW, SNAME => 'NPLAN', NVALUE => RSTAGE_ARTS(I).NPLAN); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_COL(RROW => RDG_ROW, + SNAME => 'NCOST_FACT', + NVALUE => RSTAGE_ARTS(I).NCOST_FACT); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_COL(RROW => RDG_ROW, + SNAME => 'NCOST_DIFF', + NVALUE => RSTAGE_ARTS(I).NCOST_DIFF); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_COL(RROW => RDG_ROW, + SNAME => 'NCTRL_COST', + NVALUE => RSTAGE_ARTS(I).NCTRL_COST); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_COL(RROW => RDG_ROW, SNAME => 'NCONTR', NVALUE => RSTAGE_ARTS(I).NCONTR); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_COL(RROW => RDG_ROW, + SNAME => 'NCONTR_LEFT', + NVALUE => RSTAGE_ARTS(I).NCONTR_LEFT); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_COL(RROW => RDG_ROW, + SNAME => 'NCTRL_CONTR', + NVALUE => RSTAGE_ARTS(I).NCTRL_CONTR); /* Добавляем строку в таблицу */ - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_ROW(RDATA_GRID => RDG, RROW => RDG_ROW); + PKG_P8PANELS_VISUAL.TDG_ADD_ROW(RDATA_GRID => RDG, RROW => RDG_ROW); end if; end loop; end if; /* Сериализуем описание */ - COUT := PKG_P8PANELS_VISUAL.TDATA_GRID_TO_XML(RDATA_GRID => RDG, NINCLUDE_DEF => NINCLUDE_DEF); + COUT := PKG_P8PANELS_VISUAL.TDG_TO_XML(RDATA_GRID => RDG, NINCLUDE_DEF => NINCLUDE_DEF); end STAGE_ARTS_LIST; /* Считывание записи соисполнителя этапа проекта */ @@ -3858,11 +3899,11 @@ create or replace package body PKG_P8PANELS_PROJECTS as 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; -- Предопределённые значения столбцов + RF PKG_P8PANELS_VISUAL.TDG_FILTERS; -- Фильтры + RO PKG_P8PANELS_VISUAL.TDG_ORDERS; -- Сортировки + RDG PKG_P8PANELS_VISUAL.TDG; -- Описание таблицы + RDG_ROW PKG_P8PANELS_VISUAL.TDG_ROW; -- Строка таблицы + RCOL_VALS PKG_P8PANELS_VISUAL.TDG_COL_VALS; -- Предопределённые значения столбцов NROW_FROM PKG_STD.TREF; -- Номер строки с NROW_TO PKG_STD.TREF; -- Номер строки по CSQL clob; -- Буфер для запроса @@ -3878,195 +3919,195 @@ create or replace package body PKG_P8PANELS_PROJECTS as NCTRL_COEXEC PKG_STD.TNUMBER; -- Сведения о соисполнении - состояние (null - не определено, 0 - без отклонений, 1 - есть отклонения) begin /* Читаем фильтры */ - RF := PKG_P8PANELS_VISUAL.TFILTERS_FROM_XML(CFILTERS => CFILTERS); + RF := PKG_P8PANELS_VISUAL.TDG_FILTERS_FROM_XML(CFILTERS => CFILTERS); /* Читаем сортировки */ - RO := PKG_P8PANELS_VISUAL.TORDERS_FROM_XML(CORDERS => CORDERS); + RO := PKG_P8PANELS_VISUAL.TDG_ORDERS_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(); + RDG := PKG_P8PANELS_VISUAL.TDG_MAKE(); /* Добавляем в таблицу описание колонок */ - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'NRN', - SCAPTION => 'Рег. номер', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, - BVISIBLE => false); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'SDOC_PREF', - SCAPTION => 'Префикс', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, - SCOND_FROM => 'EDDOC_PREF', - BORDER => true, - BFILTER => true); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'SLNK_UNIT_SDOC_PREF', - SCAPTION => 'Префикс (код раздела ссылки)', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, - BVISIBLE => false); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'NLNK_DOCUMENT_SDOC_PREF', - SCAPTION => 'Префикс (документ ссылки)', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, - BVISIBLE => false); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'SDOC_NUMB', - SCAPTION => 'Номер', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, - SCOND_FROM => 'EDDOC_NUMB', - BORDER => true, - BFILTER => true); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'SLNK_UNIT_SDOC_NUMB', - SCAPTION => 'Номер (код раздела ссылки)', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, - BVISIBLE => false); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'NLNK_DOCUMENT_SDOC_NUMB', - SCAPTION => 'Номер (документ ссылки)', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, - BVISIBLE => false); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'DDOC_DATE', - SCAPTION => 'Дата', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_DATE, - SCOND_FROM => 'EDDOC_DATEFrom', - SCOND_TO => 'EDDOC_DATETo', - BORDER => true, - BFILTER => true); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'SEXT_NUMBER', - SCAPTION => 'Внешний номер', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, - BVISIBLE => false); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'SAGENT', - SCAPTION => 'Соисполнитель', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, - SCOND_FROM => 'EDAGENT', - BORDER => true, - BFILTER => true); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'SAGENT_INN', - SCAPTION => 'ИНН соисполнителя', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, - BVISIBLE => false); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'SAGENT_KPP', - SCAPTION => 'КПП соисполнителя', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, - BVISIBLE => false); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'SGOVCNTRID', - SCAPTION => 'ИГК', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, - BVISIBLE => false); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'SCSTAGE', - SCAPTION => 'Этап', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, - SCOND_FROM => 'EDSTAGE', - BORDER => true, - BFILTER => true); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'SCSTAGE_DESCRIPTION', - SCAPTION => 'Описание этапа', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, - BVISIBLE => false); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'DCSTAGE_BEGIN_DATE', - SCAPTION => 'Дата начала', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_DATE, - SCOND_FROM => 'EDCSTAGE_BEGIN_DATEFrom', - SCOND_TO => 'EDCSTAGE_BEGIN_DATETo', - BORDER => true, - BFILTER => true); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'DCSTAGE_END_DATE', - SCAPTION => 'Дата окончания', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_DATE, - SCOND_FROM => 'EDCSTAGE_END_DATEFrom', - SCOND_TO => 'EDCSTAGE_END_DATETo', - BORDER => true, - BFILTER => true); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'NSUMM', - SCAPTION => 'Сумма', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, - BVISIBLE => false); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'SCURR', - SCAPTION => 'Валюта', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, - BVISIBLE => false); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'SCOST_ART', - SCAPTION => 'Статья затрат', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, - SCOND_FROM => 'EDSCOST_ART', - BORDER => true, - BFILTER => true); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'NPAY_IN', - SCAPTION => 'Акцептовано счетов на оплату', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, - BVISIBLE => false); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'NFIN_OUT', - SCAPTION => 'Оплачено счетов', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, - BVISIBLE => false); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'NPAY_IN_REST', - SCAPTION => 'Осталось оплатить счетов', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, - BVISIBLE => false); - 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 => 'NCTRL_FIN', - SCAPTION => 'Фин-е (исх.)', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, - SCOND_FROM => 'EDCTRL_FIN', - BORDER => false, - BFILTER => true, - RCOL_VALS => RCOL_VALS, - SHINT => 'Финансирование (исходящее) - контроль оплаты счетов, выставленных соисполнителем в рамках договора.
' || - 'Требует внимания - не все выставленные соисполнителем акцептованные счета оплачены.
' || - 'В норме - нет описанных выше отклонений.
' || - 'Пусто - в Системе не хватает данных для рассчёта. Убедитесь, что для договора с соисполнителем аккуратно ведётся учёт первичных документов оперативного учёта (входящих счетов на оплату).'); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'NFIN_REST', - SCAPTION => 'Общий остаток к оплате по договору', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, - BVISIBLE => false); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'NCOEXEC_IN', - SCAPTION => 'Получено актов/накладных', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, - BVISIBLE => false); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'NCOEXEC_REST', - SCAPTION => 'Остаток к актированию/поставке', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, - BVISIBLE => false); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'NCTRL_COEXEC', - SCAPTION => 'Соисполнение', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, - SCOND_FROM => 'EDCTRL_COEXEC', - BORDER => false, - BFILTER => true, - RCOL_VALS => RCOL_VALS, - SHINT => 'Соисполнение - контроль исполнения обязательств по договору с соисполнителем.
' || - 'Требует внимания - до окончания этапа проекта, в рамках которого действует соисполнение, осталось менее ' || - TO_CHAR(NDAYS_LEFT_LIMIT) || - ' дней, при этом зафиксирован положительный остаток к поставке/актированию по договору.
' || - 'В норме - нет описанных выше отклонений.
' || - 'Пусто - в Системе не хватает данных для рассчёта. Убедитесь, что для связанного этапа проекта задана плановая дата окончания, ' || - 'а по договору с соисполнителем аккуратно ведётся учёт первичных документов оперативного учёта (приходных накладных).'); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'NRN', + SCAPTION => 'Рег. номер', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, + BVISIBLE => false); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'SDOC_PREF', + SCAPTION => 'Префикс', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, + SCOND_FROM => 'EDDOC_PREF', + BORDER => true, + BFILTER => true); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'SLNK_UNIT_SDOC_PREF', + SCAPTION => 'Префикс (код раздела ссылки)', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, + BVISIBLE => false); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'NLNK_DOCUMENT_SDOC_PREF', + SCAPTION => 'Префикс (документ ссылки)', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, + BVISIBLE => false); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'SDOC_NUMB', + SCAPTION => 'Номер', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, + SCOND_FROM => 'EDDOC_NUMB', + BORDER => true, + BFILTER => true); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'SLNK_UNIT_SDOC_NUMB', + SCAPTION => 'Номер (код раздела ссылки)', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, + BVISIBLE => false); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'NLNK_DOCUMENT_SDOC_NUMB', + SCAPTION => 'Номер (документ ссылки)', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, + BVISIBLE => false); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'DDOC_DATE', + SCAPTION => 'Дата', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_DATE, + SCOND_FROM => 'EDDOC_DATEFrom', + SCOND_TO => 'EDDOC_DATETo', + BORDER => true, + BFILTER => true); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'SEXT_NUMBER', + SCAPTION => 'Внешний номер', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, + BVISIBLE => false); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'SAGENT', + SCAPTION => 'Соисполнитель', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, + SCOND_FROM => 'EDAGENT', + BORDER => true, + BFILTER => true); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'SAGENT_INN', + SCAPTION => 'ИНН соисполнителя', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, + BVISIBLE => false); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'SAGENT_KPP', + SCAPTION => 'КПП соисполнителя', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, + BVISIBLE => false); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'SGOVCNTRID', + SCAPTION => 'ИГК', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, + BVISIBLE => false); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'SCSTAGE', + SCAPTION => 'Этап', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, + SCOND_FROM => 'EDSTAGE', + BORDER => true, + BFILTER => true); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'SCSTAGE_DESCRIPTION', + SCAPTION => 'Описание этапа', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, + BVISIBLE => false); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'DCSTAGE_BEGIN_DATE', + SCAPTION => 'Дата начала', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_DATE, + SCOND_FROM => 'EDCSTAGE_BEGIN_DATEFrom', + SCOND_TO => 'EDCSTAGE_BEGIN_DATETo', + BORDER => true, + BFILTER => true); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'DCSTAGE_END_DATE', + SCAPTION => 'Дата окончания', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_DATE, + SCOND_FROM => 'EDCSTAGE_END_DATEFrom', + SCOND_TO => 'EDCSTAGE_END_DATETo', + BORDER => true, + BFILTER => true); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'NSUMM', + SCAPTION => 'Сумма', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, + BVISIBLE => false); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'SCURR', + SCAPTION => 'Валюта', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, + BVISIBLE => false); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'SCOST_ART', + SCAPTION => 'Статья затрат', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, + SCOND_FROM => 'EDSCOST_ART', + BORDER => true, + BFILTER => true); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'NPAY_IN', + SCAPTION => 'Акцептовано счетов на оплату', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, + BVISIBLE => false); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'NFIN_OUT', + SCAPTION => 'Оплачено счетов', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, + BVISIBLE => false); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'NPAY_IN_REST', + SCAPTION => 'Осталось оплатить счетов', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, + BVISIBLE => false); + PKG_P8PANELS_VISUAL.TDG_COL_VALS_ADD(RCOL_VALS => RCOL_VALS, NVALUE => 0, BCLEAR => true); + PKG_P8PANELS_VISUAL.TDG_COL_VALS_ADD(RCOL_VALS => RCOL_VALS, NVALUE => 1); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'NCTRL_FIN', + SCAPTION => 'Фин-е (исх.)', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, + SCOND_FROM => 'EDCTRL_FIN', + BORDER => false, + BFILTER => true, + RCOL_VALS => RCOL_VALS, + SHINT => 'Финансирование (исходящее) - контроль оплаты счетов, выставленных соисполнителем в рамках договора.
' || + 'Требует внимания - не все выставленные соисполнителем акцептованные счета оплачены.
' || + 'В норме - нет описанных выше отклонений.
' || + 'Пусто - в Системе не хватает данных для рассчёта. Убедитесь, что для договора с соисполнителем аккуратно ведётся учёт первичных документов оперативного учёта (входящих счетов на оплату).'); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'NFIN_REST', + SCAPTION => 'Общий остаток к оплате по договору', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, + BVISIBLE => false); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'NCOEXEC_IN', + SCAPTION => 'Получено актов/накладных', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, + BVISIBLE => false); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'NCOEXEC_REST', + SCAPTION => 'Остаток к актированию/поставке', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, + BVISIBLE => false); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'NCTRL_COEXEC', + SCAPTION => 'Соисполнение', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, + SCOND_FROM => 'EDCTRL_COEXEC', + BORDER => false, + BFILTER => true, + RCOL_VALS => RCOL_VALS, + SHINT => 'Соисполнение - контроль исполнения обязательств по договору с соисполнителем.
' || + 'Требует внимания - до окончания этапа проекта, в рамках которого действует соисполнение, осталось менее ' || + TO_CHAR(NDAYS_LEFT_LIMIT) || + ' дней, при этом зафиксирован положительный остаток к поставке/актированию по договору.
' || + 'В норме - нет описанных выше отклонений.
' || + 'Пусто - в Системе не хватает данных для рассчёта. Убедитесь, что для связанного этапа проекта задана плановая дата окончания, ' || + 'а по договору с соисполнителем аккуратно ведётся учёт первичных документов оперативного учёта (приходных накладных).'); /* Обходим данные */ begin /* Добавляем подсказку совместимости */ @@ -4113,15 +4154,18 @@ create or replace package body PKG_P8PANELS_PROJECTS as PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' and PSPF.RN in (select ID from COND_BROKER_IDSMART where IDENT = :NIDENT) %ORDER_BY%) D) F'); PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' 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.TDG_ORDERS_SET_QUERY(RDATA_GRID => RDG, + RORDERS => RO, + SPATTERN => '%ORDER_BY%', + CSQL => CSQL); /* Учтём фильтры */ - PKG_P8PANELS_VISUAL.TFILTERS_SET_QUERY(NIDENT => NIDENT, - NCOMPANY => NCOMPANY, - NPARENT => NSTAGE, - SUNIT => 'ProjectsStagesPerformers', - SPROCEDURE => PKG_SQL_BUILD.PKG_NAME(SNAME => 'PKG_P8PANELS_PROJECTS.STAGE_CONTRACTS_COND'), - RDATA_GRID => RDG, - RFILTERS => RF); + PKG_P8PANELS_VISUAL.TDG_FILTERS_SET_QUERY(NIDENT => NIDENT, + NCOMPANY => NCOMPANY, + NPARENT => NSTAGE, + SUNIT => 'ProjectsStagesPerformers', + SPROCEDURE => PKG_SQL_BUILD.PKG_NAME(SNAME => 'PKG_P8PANELS_PROJECTS.STAGE_CONTRACTS_COND'), + RDATA_GRID => RDG, + RFILTERS => RF); /* Разбираем его */ ICURSOR := PKG_SQL_DML.OPEN_CURSOR(SWHAT => 'SELECT'); PKG_SQL_DML.PARSE(ICURSOR => ICURSOR, SQUERY => CSQL); @@ -4160,71 +4204,83 @@ create or replace package body PKG_P8PANELS_PROJECTS as loop /* Добавляем колонки с данными */ PKG_SQL_DML.COLUMN_VALUE_NUM(ICURSOR => ICURSOR, IPOSITION => 1, NVALUE => NPROJECTSTAGEPF); - PKG_P8PANELS_VISUAL.TROW_ADD_COL(RROW => RDG_ROW, SNAME => 'NRN', NVALUE => NPROJECTSTAGEPF, BCLEAR => true); - PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLS(RROW => RDG_ROW, - SNAME => 'SDOC_PREF', - ICURSOR => ICURSOR, - NPOSITION => 2); - PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLS(RROW => RDG_ROW, - SNAME => 'SLNK_UNIT_SDOC_PREF', - ICURSOR => ICURSOR, - NPOSITION => 3); - PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLN(RROW => RDG_ROW, - SNAME => 'NLNK_DOCUMENT_SDOC_PREF', - ICURSOR => ICURSOR, - NPOSITION => 4); - PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLS(RROW => RDG_ROW, - SNAME => 'SDOC_NUMB', - ICURSOR => ICURSOR, - NPOSITION => 5); - PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLS(RROW => RDG_ROW, - SNAME => 'SLNK_UNIT_SDOC_NUMB', - ICURSOR => ICURSOR, - NPOSITION => 6); - PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLN(RROW => RDG_ROW, - SNAME => 'NLNK_DOCUMENT_SDOC_NUMB', - ICURSOR => ICURSOR, - NPOSITION => 7); - PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLD(RROW => RDG_ROW, - SNAME => 'DDOC_DATE', - ICURSOR => ICURSOR, - NPOSITION => 8); - PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLS(RROW => RDG_ROW, - SNAME => 'SEXT_NUMBER', - ICURSOR => ICURSOR, - NPOSITION => 9); - PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLS(RROW => RDG_ROW, SNAME => 'SAGENT', ICURSOR => ICURSOR, NPOSITION => 10); - PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLS(RROW => RDG_ROW, - SNAME => 'SAGENT_INN', - ICURSOR => ICURSOR, - NPOSITION => 11); - PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLS(RROW => RDG_ROW, - SNAME => 'SAGENT_KPP', - ICURSOR => ICURSOR, - NPOSITION => 12); - PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLS(RROW => RDG_ROW, - SNAME => 'SGOVCNTRID', - ICURSOR => ICURSOR, - NPOSITION => 13); - PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLS(RROW => RDG_ROW, SNAME => 'SCSTAGE', ICURSOR => ICURSOR, NPOSITION => 14); - PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLS(RROW => RDG_ROW, - SNAME => 'SCSTAGE_DESCRIPTION', - ICURSOR => ICURSOR, - NPOSITION => 15); - PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLD(RROW => RDG_ROW, - SNAME => 'DCSTAGE_BEGIN_DATE', - ICURSOR => ICURSOR, - NPOSITION => 16); - PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLD(RROW => RDG_ROW, - SNAME => 'DCSTAGE_END_DATE', - ICURSOR => ICURSOR, - NPOSITION => 17); - PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLN(RROW => RDG_ROW, SNAME => 'NSUMM', ICURSOR => ICURSOR, NPOSITION => 18); - PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLS(RROW => RDG_ROW, SNAME => 'SCURR', ICURSOR => ICURSOR, NPOSITION => 19); - PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLS(RROW => RDG_ROW, - SNAME => 'SCOST_ART', - ICURSOR => ICURSOR, - NPOSITION => 20); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_COL(RROW => RDG_ROW, SNAME => 'NRN', NVALUE => NPROJECTSTAGEPF, BCLEAR => true); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLS(RROW => RDG_ROW, + SNAME => 'SDOC_PREF', + ICURSOR => ICURSOR, + NPOSITION => 2); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLS(RROW => RDG_ROW, + SNAME => 'SLNK_UNIT_SDOC_PREF', + ICURSOR => ICURSOR, + NPOSITION => 3); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLN(RROW => RDG_ROW, + SNAME => 'NLNK_DOCUMENT_SDOC_PREF', + ICURSOR => ICURSOR, + NPOSITION => 4); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLS(RROW => RDG_ROW, + SNAME => 'SDOC_NUMB', + ICURSOR => ICURSOR, + NPOSITION => 5); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLS(RROW => RDG_ROW, + SNAME => 'SLNK_UNIT_SDOC_NUMB', + ICURSOR => ICURSOR, + NPOSITION => 6); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLN(RROW => RDG_ROW, + SNAME => 'NLNK_DOCUMENT_SDOC_NUMB', + ICURSOR => ICURSOR, + NPOSITION => 7); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLD(RROW => RDG_ROW, + SNAME => 'DDOC_DATE', + ICURSOR => ICURSOR, + NPOSITION => 8); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLS(RROW => RDG_ROW, + SNAME => 'SEXT_NUMBER', + ICURSOR => ICURSOR, + NPOSITION => 9); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLS(RROW => RDG_ROW, + SNAME => 'SAGENT', + ICURSOR => ICURSOR, + NPOSITION => 10); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLS(RROW => RDG_ROW, + SNAME => 'SAGENT_INN', + ICURSOR => ICURSOR, + NPOSITION => 11); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLS(RROW => RDG_ROW, + SNAME => 'SAGENT_KPP', + ICURSOR => ICURSOR, + NPOSITION => 12); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLS(RROW => RDG_ROW, + SNAME => 'SGOVCNTRID', + ICURSOR => ICURSOR, + NPOSITION => 13); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLS(RROW => RDG_ROW, + SNAME => 'SCSTAGE', + ICURSOR => ICURSOR, + NPOSITION => 14); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLS(RROW => RDG_ROW, + SNAME => 'SCSTAGE_DESCRIPTION', + ICURSOR => ICURSOR, + NPOSITION => 15); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLD(RROW => RDG_ROW, + SNAME => 'DCSTAGE_BEGIN_DATE', + ICURSOR => ICURSOR, + NPOSITION => 16); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLD(RROW => RDG_ROW, + SNAME => 'DCSTAGE_END_DATE', + ICURSOR => ICURSOR, + NPOSITION => 17); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLN(RROW => RDG_ROW, + SNAME => 'NSUMM', + ICURSOR => ICURSOR, + NPOSITION => 18); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLS(RROW => RDG_ROW, + SNAME => 'SCURR', + ICURSOR => ICURSOR, + NPOSITION => 19); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLS(RROW => RDG_ROW, + SNAME => 'SCOST_ART', + ICURSOR => ICURSOR, + NPOSITION => 20); STAGE_CONTRACTS_GET(NPROJECTSTAGEPF => NPROJECTSTAGEPF, NINC_FIN => 1, NINC_COEXEC => 1, @@ -4236,16 +4292,16 @@ create or replace package body PKG_P8PANELS_PROJECTS as NCOEXEC_IN => NCOEXEC_IN, NCOEXEC_REST => NCOEXEC_REST, NCTRL_COEXEC => NCTRL_COEXEC); - PKG_P8PANELS_VISUAL.TROW_ADD_COL(RROW => RDG_ROW, SNAME => 'NPAY_IN', NVALUE => NPAY_IN); - PKG_P8PANELS_VISUAL.TROW_ADD_COL(RROW => RDG_ROW, SNAME => 'NFIN_OUT', NVALUE => NFIN_OUT); - PKG_P8PANELS_VISUAL.TROW_ADD_COL(RROW => RDG_ROW, SNAME => 'NPAY_IN_REST', NVALUE => NPAY_IN_REST); - PKG_P8PANELS_VISUAL.TROW_ADD_COL(RROW => RDG_ROW, SNAME => 'NCTRL_FIN', NVALUE => NCTRL_FIN); - PKG_P8PANELS_VISUAL.TROW_ADD_COL(RROW => RDG_ROW, SNAME => 'NFIN_REST', NVALUE => NFIN_REST); - PKG_P8PANELS_VISUAL.TROW_ADD_COL(RROW => RDG_ROW, SNAME => 'NCOEXEC_IN', NVALUE => NCOEXEC_IN); - PKG_P8PANELS_VISUAL.TROW_ADD_COL(RROW => RDG_ROW, SNAME => 'NCOEXEC_REST', NVALUE => NCOEXEC_REST); - PKG_P8PANELS_VISUAL.TROW_ADD_COL(RROW => RDG_ROW, SNAME => 'NCTRL_COEXEC', NVALUE => NCTRL_COEXEC); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_COL(RROW => RDG_ROW, SNAME => 'NPAY_IN', NVALUE => NPAY_IN); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_COL(RROW => RDG_ROW, SNAME => 'NFIN_OUT', NVALUE => NFIN_OUT); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_COL(RROW => RDG_ROW, SNAME => 'NPAY_IN_REST', NVALUE => NPAY_IN_REST); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_COL(RROW => RDG_ROW, SNAME => 'NCTRL_FIN', NVALUE => NCTRL_FIN); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_COL(RROW => RDG_ROW, SNAME => 'NFIN_REST', NVALUE => NFIN_REST); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_COL(RROW => RDG_ROW, SNAME => 'NCOEXEC_IN', NVALUE => NCOEXEC_IN); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_COL(RROW => RDG_ROW, SNAME => 'NCOEXEC_REST', NVALUE => NCOEXEC_REST); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_COL(RROW => RDG_ROW, SNAME => 'NCTRL_COEXEC', NVALUE => NCTRL_COEXEC); /* Добавляем строку в таблицу */ - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_ROW(RDATA_GRID => RDG, RROW => RDG_ROW); + PKG_P8PANELS_VISUAL.TDG_ADD_ROW(RDATA_GRID => RDG, RROW => RDG_ROW); end loop; /* Освобождаем курсор */ PKG_SQL_DML.CLOSE_CURSOR(ICURSOR => ICURSOR); @@ -4255,7 +4311,7 @@ create or replace package body PKG_P8PANELS_PROJECTS as raise; end; /* Сериализуем описание */ - COUT := PKG_P8PANELS_VISUAL.TDATA_GRID_TO_XML(RDATA_GRID => RDG, NINCLUDE_DEF => NINCLUDE_DEF); + COUT := PKG_P8PANELS_VISUAL.TDG_TO_XML(RDATA_GRID => RDG, NINCLUDE_DEF => NINCLUDE_DEF); end STAGE_CONTRACTS_LIST; /* Считывание записи работы проекта */ @@ -5010,9 +5066,9 @@ create or replace package body PKG_P8PANELS_PROJECTS as NCOMPANY PKG_STD.TREF := GET_SESSION_COMPANY(); -- Организация сеанса RPRD P8PNL_JB_PERIODS%rowtype; -- Запись детализируемого периода RJB_PRMS P8PNL_JB_PRMS%rowtype; -- Параметры балансировки - RO PKG_P8PANELS_VISUAL.TORDERS; -- Сортировки - RDG PKG_P8PANELS_VISUAL.TDATA_GRID; -- Описание таблицы - RDG_ROW PKG_P8PANELS_VISUAL.TROW; -- Строка таблицы + RO PKG_P8PANELS_VISUAL.TDG_ORDERS; -- Сортировки + RDG PKG_P8PANELS_VISUAL.TDG; -- Описание таблицы + RDG_ROW PKG_P8PANELS_VISUAL.TDG_ROW; -- Строка таблицы CSQL clob; -- Буфер для запроса ICURSOR integer; -- Курсор для исполнения запроса NROW_FROM PKG_STD.TREF; -- Номер строки с @@ -5040,30 +5096,30 @@ create or replace package body PKG_P8PANELS_PROJECTS as NROW_TO => NROW_TO); else /* Будем строить курсор по параметрам - читаем сортировки */ - RO := PKG_P8PANELS_VISUAL.TORDERS_FROM_XML(CORDERS => CORDERS); + RO := PKG_P8PANELS_VISUAL.TDG_ORDERS_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(); + RDG := PKG_P8PANELS_VISUAL.TDG_MAKE(); /* Добавляем в таблицу описание колонок */ - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'NRN', - SCAPTION => 'Рег. номер исполнения должности', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, - BVISIBLE => false); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'SPERSON', - SCAPTION => 'Сотрудник', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, - BORDER => true); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'NLAB_PLAN_FOT', - SCAPTION => 'Трудоёмкость (' || RJB_PRMS.LAB_MEAS_CODE || ')', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, - BORDER => true); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'NRN', + SCAPTION => 'Рег. номер исполнения должности', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, + BVISIBLE => false); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'SPERSON', + SCAPTION => 'Сотрудник', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, + BORDER => true); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'NLAB_PLAN_FOT', + SCAPTION => 'Трудоёмкость (' || RJB_PRMS.LAB_MEAS_CODE || ')', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, + BORDER => true); end if; /* Обходим данные */ begin @@ -5098,7 +5154,10 @@ create or replace package body PKG_P8PANELS_PROJECTS as PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' %ORDER_BY%) D) F'); PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' 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.TDG_ORDERS_SET_QUERY(RDATA_GRID => RDG, + RORDERS => RO, + SPATTERN => '%ORDER_BY%', + CSQL => CSQL); /* Разбираем его */ ICURSOR := PKG_SQL_DML.OPEN_CURSOR(SWHAT => 'SELECT'); PKG_SQL_DML.PARSE(ICURSOR => ICURSOR, SQUERY => CSQL); @@ -5134,18 +5193,18 @@ create or replace package body PKG_P8PANELS_PROJECTS as /* При формировании списка для клиента */ if (NMODE = 0) then /* Добавляем колонки с данными */ - PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLN(RROW => RDG_ROW, - SNAME => 'NRN', - ICURSOR => ICURSOR, - NPOSITION => 1, - BCLEAR => true); - PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLS(RROW => RDG_ROW, - SNAME => 'SPERSON', - ICURSOR => ICURSOR, - NPOSITION => 2); - PKG_P8PANELS_VISUAL.TROW_ADD_COL(RROW => RDG_ROW, SNAME => 'NLAB_PLAN_FOT', NVALUE => NPERS_LAB); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLN(RROW => RDG_ROW, + SNAME => 'NRN', + ICURSOR => ICURSOR, + NPOSITION => 1, + BCLEAR => true); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLS(RROW => RDG_ROW, + SNAME => 'SPERSON', + ICURSOR => ICURSOR, + NPOSITION => 2); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_COL(RROW => RDG_ROW, SNAME => 'NLAB_PLAN_FOT', NVALUE => NPERS_LAB); /* Добавляем строку в таблицу */ - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_ROW(RDATA_GRID => RDG, RROW => RDG_ROW); + PKG_P8PANELS_VISUAL.TDG_ADD_ROW(RDATA_GRID => RDG, RROW => RDG_ROW); end if; end loop; /* Освобождаем курсор */ @@ -5158,7 +5217,7 @@ create or replace package body PKG_P8PANELS_PROJECTS as /* При формировании списка для клиента */ if (NMODE = 0) then /* Сериализуем описание */ - COUT := PKG_P8PANELS_VISUAL.TDATA_GRID_TO_XML(RDATA_GRID => RDG, NINCLUDE_DEF => NINCLUDE_DEF); + COUT := PKG_P8PANELS_VISUAL.TDG_TO_XML(RDATA_GRID => RDG, NINCLUDE_DEF => NINCLUDE_DEF); end if; end JB_PERIODS_PLAN_FOT_BUILD; @@ -5217,9 +5276,9 @@ create or replace package body PKG_P8PANELS_PROJECTS as NCOMPANY PKG_STD.TREF := GET_SESSION_COMPANY(); -- Организация сеанса RPRD P8PNL_JB_PERIODS%rowtype; -- Запись детализируемого периода RJB_PRMS P8PNL_JB_PRMS%rowtype; -- Параметры балансировки - RO PKG_P8PANELS_VISUAL.TORDERS; -- Сортировки - RDG PKG_P8PANELS_VISUAL.TDATA_GRID; -- Описание таблицы - RDG_ROW PKG_P8PANELS_VISUAL.TROW; -- Строка таблицы + RO PKG_P8PANELS_VISUAL.TDG_ORDERS; -- Сортировки + RDG PKG_P8PANELS_VISUAL.TDG; -- Описание таблицы + RDG_ROW PKG_P8PANELS_VISUAL.TDG_ROW; -- Строка таблицы CSQL clob; -- Буфер для запроса ICURSOR integer; -- Курсор для исполнения запроса NROW_FROM PKG_STD.TREF; -- Номер строки с @@ -5245,69 +5304,69 @@ create or replace package body PKG_P8PANELS_PROJECTS as NROW_TO => NROW_TO); else /* Будем строить курсор по параметрам - читаем сортировки */ - RO := PKG_P8PANELS_VISUAL.TORDERS_FROM_XML(CORDERS => CORDERS); + RO := PKG_P8PANELS_VISUAL.TDG_ORDERS_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(); + RDG := PKG_P8PANELS_VISUAL.TDG_MAKE(); /* Добавляем в таблицу описание колонок */ - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'NRN', - SCAPTION => 'Рег. номер трудового ресурса отчета', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, - BVISIBLE => false); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'SPRJDEPLAN', - SCAPTION => 'Документ', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, - BORDER => true); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'SPRJ', - SCAPTION => 'Проект', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, - BORDER => true); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'SSTG_JOB', - SCAPTION => 'Этап-работа', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, - BORDER => true); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'SJOB_NAME', - SCAPTION => 'Наим. работы', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, - BORDER => true); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'NJOB_STATE', - SCAPTION => 'Сост. работы', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, - BORDER => true); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'DJOB_BEG', - SCAPTION => 'Начало работы', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_DATE, - BORDER => true); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'DJOB_END', - SCAPTION => 'Окончание работы', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_DATE, - BORDER => true); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'NJOB_DUR', - SCAPTION => 'Длительн. работы (' || RJB_PRMS.DURATION_MEAS_CODE || ')', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'SPERSON', - SCAPTION => 'Сотрудник', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, - BORDER => true); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'NLAB', - SCAPTION => 'Труд. (' || RJB_PRMS.LAB_MEAS_CODE || ')', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, - BORDER => true); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'NRN', + SCAPTION => 'Рег. номер трудового ресурса отчета', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, + BVISIBLE => false); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'SPRJDEPLAN', + SCAPTION => 'Документ', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, + BORDER => true); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'SPRJ', + SCAPTION => 'Проект', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, + BORDER => true); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'SSTG_JOB', + SCAPTION => 'Этап-работа', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, + BORDER => true); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'SJOB_NAME', + SCAPTION => 'Наим. работы', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, + BORDER => true); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'NJOB_STATE', + SCAPTION => 'Сост. работы', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, + BORDER => true); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'DJOB_BEG', + SCAPTION => 'Начало работы', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_DATE, + BORDER => true); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'DJOB_END', + SCAPTION => 'Окончание работы', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_DATE, + BORDER => true); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'NJOB_DUR', + SCAPTION => 'Длительн. работы (' || RJB_PRMS.DURATION_MEAS_CODE || ')', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'SPERSON', + SCAPTION => 'Сотрудник', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, + BORDER => true); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'NLAB', + SCAPTION => 'Труд. (' || RJB_PRMS.LAB_MEAS_CODE || ')', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, + BORDER => true); end if; /* Обходим данные */ begin @@ -5355,7 +5414,10 @@ create or replace package body PKG_P8PANELS_PROJECTS as PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' %ORDER_BY%) D) F'); PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' 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.TDG_ORDERS_SET_QUERY(RDATA_GRID => RDG, + RORDERS => RO, + SPATTERN => '%ORDER_BY%', + CSQL => CSQL); /* Разбираем его */ ICURSOR := PKG_SQL_DML.OPEN_CURSOR(SWHAT => 'SELECT'); PKG_SQL_DML.PARSE(ICURSOR => ICURSOR, SQUERY => CSQL); @@ -5408,38 +5470,41 @@ create or replace package body PKG_P8PANELS_PROJECTS as /* При формировании списка для клиента */ if (NMODE = 0) then /* Добавляем колонки с данными */ - PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLN(RROW => RDG_ROW, - SNAME => 'NRN', - ICURSOR => ICURSOR, - NPOSITION => 1, - BCLEAR => true); - PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLS(RROW => RDG_ROW, - SNAME => 'SPRJDEPLAN', - ICURSOR => ICURSOR, - NPOSITION => 2); - PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLS(RROW => RDG_ROW, SNAME => 'SPRJ', ICURSOR => ICURSOR, NPOSITION => 3); - PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLS(RROW => RDG_ROW, - SNAME => 'SSTG_JOB', - ICURSOR => ICURSOR, - NPOSITION => 4); - PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLS(RROW => RDG_ROW, - SNAME => 'SJOB_NAME', - ICURSOR => ICURSOR, - NPOSITION => 5); - PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLN(RROW => RDG_ROW, - SNAME => 'NJOB_STATE', - ICURSOR => ICURSOR, - NPOSITION => 6); - PKG_P8PANELS_VISUAL.TROW_ADD_COL(RROW => RDG_ROW, SNAME => 'DJOB_BEG', DVALUE => DJOB_BEG); - PKG_P8PANELS_VISUAL.TROW_ADD_COL(RROW => RDG_ROW, SNAME => 'DJOB_END', DVALUE => DJOB_END); - PKG_P8PANELS_VISUAL.TROW_ADD_COL(RROW => RDG_ROW, SNAME => 'NJOB_DUR', NVALUE => NJOB_DUR); - PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLS(RROW => RDG_ROW, - SNAME => 'SPERSON', - ICURSOR => ICURSOR, - NPOSITION => 9); - PKG_P8PANELS_VISUAL.TROW_ADD_COL(RROW => RDG_ROW, SNAME => 'NLAB', NVALUE => NJOB_LAB); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLN(RROW => RDG_ROW, + SNAME => 'NRN', + ICURSOR => ICURSOR, + NPOSITION => 1, + BCLEAR => true); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLS(RROW => RDG_ROW, + SNAME => 'SPRJDEPLAN', + ICURSOR => ICURSOR, + NPOSITION => 2); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLS(RROW => RDG_ROW, + SNAME => 'SPRJ', + ICURSOR => ICURSOR, + NPOSITION => 3); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLS(RROW => RDG_ROW, + SNAME => 'SSTG_JOB', + ICURSOR => ICURSOR, + NPOSITION => 4); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLS(RROW => RDG_ROW, + SNAME => 'SJOB_NAME', + ICURSOR => ICURSOR, + NPOSITION => 5); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLN(RROW => RDG_ROW, + SNAME => 'NJOB_STATE', + ICURSOR => ICURSOR, + NPOSITION => 6); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_COL(RROW => RDG_ROW, SNAME => 'DJOB_BEG', DVALUE => DJOB_BEG); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_COL(RROW => RDG_ROW, SNAME => 'DJOB_END', DVALUE => DJOB_END); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_COL(RROW => RDG_ROW, SNAME => 'NJOB_DUR', NVALUE => NJOB_DUR); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLS(RROW => RDG_ROW, + SNAME => 'SPERSON', + ICURSOR => ICURSOR, + NPOSITION => 9); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_COL(RROW => RDG_ROW, SNAME => 'NLAB', NVALUE => NJOB_LAB); /* Добавляем строку в таблицу */ - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_ROW(RDATA_GRID => RDG, RROW => RDG_ROW); + PKG_P8PANELS_VISUAL.TDG_ADD_ROW(RDATA_GRID => RDG, RROW => RDG_ROW); end if; end loop; /* Освобождаем курсор */ @@ -5452,7 +5517,7 @@ create or replace package body PKG_P8PANELS_PROJECTS as /* При формировании списка для клиента */ if (NMODE = 0) then /* Сериализуем описание */ - COUT := PKG_P8PANELS_VISUAL.TDATA_GRID_TO_XML(RDATA_GRID => RDG, NINCLUDE_DEF => NINCLUDE_DEF); + COUT := PKG_P8PANELS_VISUAL.TDG_TO_XML(RDATA_GRID => RDG, NINCLUDE_DEF => NINCLUDE_DEF); end if; end JB_PERIODS_FACT_RPT_BUILD; @@ -5511,9 +5576,9 @@ create or replace package body PKG_P8PANELS_PROJECTS as NCOMPANY PKG_STD.TREF := GET_SESSION_COMPANY(); -- Организация сеанса RPRD P8PNL_JB_PERIODS%rowtype; -- Запись детализируемого периода RJB_PRMS P8PNL_JB_PRMS%rowtype; -- Параметры балансировки - RO PKG_P8PANELS_VISUAL.TORDERS; -- Сортировки - RDG PKG_P8PANELS_VISUAL.TDATA_GRID; -- Описание таблицы - RDG_ROW PKG_P8PANELS_VISUAL.TROW; -- Строка таблицы + RO PKG_P8PANELS_VISUAL.TDG_ORDERS; -- Сортировки + RDG PKG_P8PANELS_VISUAL.TDG; -- Описание таблицы + RDG_ROW PKG_P8PANELS_VISUAL.TDG_ROW; -- Строка таблицы CSQL clob; -- Буфер для запроса ICURSOR integer; -- Курсор для исполнения запроса NROW_FROM PKG_STD.TREF; -- Номер строки с @@ -5543,76 +5608,76 @@ create or replace package body PKG_P8PANELS_PROJECTS as NROW_TO => NROW_TO); else /* Будем строить курсор по параметрам - читаем сортировки */ - RO := PKG_P8PANELS_VISUAL.TORDERS_FROM_XML(CORDERS => CORDERS); + RO := PKG_P8PANELS_VISUAL.TDG_ORDERS_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(); + RDG := PKG_P8PANELS_VISUAL.TDG_MAKE(); /* Добавляем в таблицу описание колонок */ - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'NRN', - SCAPTION => 'Рег. номер работы в буфере балансировки', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, - BVISIBLE => false); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'NPROJECT', - SCAPTION => 'Рег. номер проекта', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, - BVISIBLE => false); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'NJB_PRJCTS', - SCAPTION => 'Рег. номер буфера балансировки проекта', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, - BVISIBLE => false); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'SPRJ', - SCAPTION => 'Проект', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, - BORDER => true); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'SSTG_JOB', - SCAPTION => 'Этап-работа', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, - BORDER => true); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'SJOB_NAME', - SCAPTION => 'Наим. работы', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, - BORDER => true); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'NJOB_STATE', - SCAPTION => 'Сост. работы', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, - BORDER => true); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'DJOB_BEG', - SCAPTION => 'Начало работы', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_DATE, - BORDER => true); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'DJOB_END', - SCAPTION => 'Окончание работы', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_DATE, - BORDER => true); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'NJOB_DUR', - SCAPTION => 'Длительн. работы (' || RJB_PRMS.DURATION_MEAS_CODE || ')', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'NMP_LAB', - SCAPTION => 'Труд. (' || RJB_PRMS.LAB_MEAS_CODE || ')', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'NMP_LAB_ONE', - SCAPTION => 'Труд. (в ед. длит., ' || RJB_PRMS.LAB_MEAS_CODE || ')', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'NMP_LAB_PLAN', - SCAPTION => 'Труд. (план, график, ' || RJB_PRMS.LAB_MEAS_CODE || ')', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'NRN', + SCAPTION => 'Рег. номер работы в буфере балансировки', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, + BVISIBLE => false); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'NPROJECT', + SCAPTION => 'Рег. номер проекта', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, + BVISIBLE => false); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'NJB_PRJCTS', + SCAPTION => 'Рег. номер буфера балансировки проекта', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, + BVISIBLE => false); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'SPRJ', + SCAPTION => 'Проект', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, + BORDER => true); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'SSTG_JOB', + SCAPTION => 'Этап-работа', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, + BORDER => true); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'SJOB_NAME', + SCAPTION => 'Наим. работы', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, + BORDER => true); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'NJOB_STATE', + SCAPTION => 'Сост. работы', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, + BORDER => true); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'DJOB_BEG', + SCAPTION => 'Начало работы', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_DATE, + BORDER => true); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'DJOB_END', + SCAPTION => 'Окончание работы', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_DATE, + BORDER => true); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'NJOB_DUR', + SCAPTION => 'Длительн. работы (' || RJB_PRMS.DURATION_MEAS_CODE || ')', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'NMP_LAB', + SCAPTION => 'Труд. (' || RJB_PRMS.LAB_MEAS_CODE || ')', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'NMP_LAB_ONE', + SCAPTION => 'Труд. (в ед. длит., ' || RJB_PRMS.LAB_MEAS_CODE || ')', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'NMP_LAB_PLAN', + SCAPTION => 'Труд. (план, график, ' || RJB_PRMS.LAB_MEAS_CODE || ')', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB); end if; /* Обходим данные */ begin @@ -5655,7 +5720,10 @@ create or replace package body PKG_P8PANELS_PROJECTS as PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' %ORDER_BY%) D) F'); PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' 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.TDG_ORDERS_SET_QUERY(RDATA_GRID => RDG, + RORDERS => RO, + SPATTERN => '%ORDER_BY%', + CSQL => CSQL); /* Разбираем его */ ICURSOR := PKG_SQL_DML.OPEN_CURSOR(SWHAT => 'SELECT'); PKG_SQL_DML.PARSE(ICURSOR => ICURSOR, SQUERY => CSQL); @@ -5722,40 +5790,43 @@ create or replace package body PKG_P8PANELS_PROJECTS as /* При формировании списка для клиента */ if (NMODE = 0) then /* Добавляем колонки с данными */ - PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLN(RROW => RDG_ROW, - SNAME => 'NRN', - ICURSOR => ICURSOR, - NPOSITION => 1, - BCLEAR => true); - PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLN(RROW => RDG_ROW, - SNAME => 'NPROJECT', - ICURSOR => ICURSOR, - NPOSITION => 2); - PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLN(RROW => RDG_ROW, - SNAME => 'NJB_PRJCTS', - ICURSOR => ICURSOR, - NPOSITION => 3); - PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLS(RROW => RDG_ROW, SNAME => 'SPRJ', ICURSOR => ICURSOR, NPOSITION => 4); - PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLS(RROW => RDG_ROW, - SNAME => 'SSTG_JOB', - ICURSOR => ICURSOR, - NPOSITION => 5); - PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLS(RROW => RDG_ROW, - SNAME => 'SJOB_NAME', - ICURSOR => ICURSOR, - NPOSITION => 6); - PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLN(RROW => RDG_ROW, - SNAME => 'NJOB_STATE', - ICURSOR => ICURSOR, - NPOSITION => 7); - PKG_P8PANELS_VISUAL.TROW_ADD_COL(RROW => RDG_ROW, SNAME => 'DJOB_BEG', DVALUE => DJOB_BEG); - PKG_P8PANELS_VISUAL.TROW_ADD_COL(RROW => RDG_ROW, SNAME => 'DJOB_END', DVALUE => DJOB_END); - PKG_P8PANELS_VISUAL.TROW_ADD_COL(RROW => RDG_ROW, SNAME => 'NJOB_DUR', NVALUE => NJOB_DUR); - PKG_P8PANELS_VISUAL.TROW_ADD_COL(RROW => RDG_ROW, SNAME => 'NMP_LAB', NVALUE => NMP_LAB); - PKG_P8PANELS_VISUAL.TROW_ADD_COL(RROW => RDG_ROW, SNAME => 'NMP_LAB_ONE', NVALUE => NMP_LAB_ONE); - PKG_P8PANELS_VISUAL.TROW_ADD_COL(RROW => RDG_ROW, SNAME => 'NMP_LAB_PLAN', NVALUE => NMP_LAB_PLAN); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLN(RROW => RDG_ROW, + SNAME => 'NRN', + ICURSOR => ICURSOR, + NPOSITION => 1, + BCLEAR => true); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLN(RROW => RDG_ROW, + SNAME => 'NPROJECT', + ICURSOR => ICURSOR, + NPOSITION => 2); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLN(RROW => RDG_ROW, + SNAME => 'NJB_PRJCTS', + ICURSOR => ICURSOR, + NPOSITION => 3); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLS(RROW => RDG_ROW, + SNAME => 'SPRJ', + ICURSOR => ICURSOR, + NPOSITION => 4); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLS(RROW => RDG_ROW, + SNAME => 'SSTG_JOB', + ICURSOR => ICURSOR, + NPOSITION => 5); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLS(RROW => RDG_ROW, + SNAME => 'SJOB_NAME', + ICURSOR => ICURSOR, + NPOSITION => 6); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLN(RROW => RDG_ROW, + SNAME => 'NJOB_STATE', + ICURSOR => ICURSOR, + NPOSITION => 7); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_COL(RROW => RDG_ROW, SNAME => 'DJOB_BEG', DVALUE => DJOB_BEG); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_COL(RROW => RDG_ROW, SNAME => 'DJOB_END', DVALUE => DJOB_END); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_COL(RROW => RDG_ROW, SNAME => 'NJOB_DUR', NVALUE => NJOB_DUR); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_COL(RROW => RDG_ROW, SNAME => 'NMP_LAB', NVALUE => NMP_LAB); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_COL(RROW => RDG_ROW, SNAME => 'NMP_LAB_ONE', NVALUE => NMP_LAB_ONE); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_COL(RROW => RDG_ROW, SNAME => 'NMP_LAB_PLAN', NVALUE => NMP_LAB_PLAN); /* Добавляем строку в таблицу */ - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_ROW(RDATA_GRID => RDG, RROW => RDG_ROW); + PKG_P8PANELS_VISUAL.TDG_ADD_ROW(RDATA_GRID => RDG, RROW => RDG_ROW); end if; end loop; /* Освобождаем курсор */ @@ -5768,7 +5839,7 @@ create or replace package body PKG_P8PANELS_PROJECTS as /* При формировании списка для клиента */ if (NMODE = 0) then /* Сериализуем описание */ - COUT := PKG_P8PANELS_VISUAL.TDATA_GRID_TO_XML(RDATA_GRID => RDG, NINCLUDE_DEF => NINCLUDE_DEF); + COUT := PKG_P8PANELS_VISUAL.TDG_TO_XML(RDATA_GRID => RDG, NINCLUDE_DEF => NINCLUDE_DEF); end if; end JB_PERIODS_PLAN_JOBS_BUILD; @@ -6011,9 +6082,9 @@ create or replace package body PKG_P8PANELS_PROJECTS as ) is RJB_PRMS P8PNL_JB_PRMS%rowtype; -- Параметры балансировки - RO PKG_P8PANELS_VISUAL.TORDERS; -- Сортировки - RDG PKG_P8PANELS_VISUAL.TDATA_GRID; -- Описание таблицы - RDG_ROW PKG_P8PANELS_VISUAL.TROW; -- Строка таблицы + RO PKG_P8PANELS_VISUAL.TDG_ORDERS; -- Сортировки + RDG PKG_P8PANELS_VISUAL.TDG; -- Описание таблицы + RDG_ROW PKG_P8PANELS_VISUAL.TDG_ROW; -- Строка таблицы CSQL clob; -- Буфер для запроса ICURSOR integer; -- Курсор для исполнения запроса NROW_FROM PKG_STD.TREF; -- Номер строки с @@ -6022,70 +6093,70 @@ create or replace package body PKG_P8PANELS_PROJECTS as /* Считаем параметры балансировки */ RJB_PRMS := JB_PRMS_GET(NIDENT => NIDENT); /* Читаем сортировки */ - RO := PKG_P8PANELS_VISUAL.TORDERS_FROM_XML(CORDERS => CORDERS); + RO := PKG_P8PANELS_VISUAL.TDG_ORDERS_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(); + RDG := PKG_P8PANELS_VISUAL.TDG_MAKE(); /* Добавляем в таблицу описание колонок */ - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'NRN', - SCAPTION => 'Рег. номер', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, - BVISIBLE => false); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'SPERIOD', - SCAPTION => 'Период', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, - BORDER => true, - BFILTER => false); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'SINS_DEPARTMENT', - SCAPTION => 'Подразделение', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, - BORDER => true, - BFILTER => false); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'SFCMANPOWER', - SCAPTION => 'Ресурс', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, - BORDER => true, - BFILTER => false); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'NLAB_PLAN_FOT', - SCAPTION => 'Труд. (план, ФОТ, ' || RJB_PRMS.LAB_MEAS_CODE || ')', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, - BORDER => true, - BFILTER => false); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'NLAB_FACT_RPT', - SCAPTION => 'Труд. (факт, отчёт, ' || RJB_PRMS.LAB_MEAS_CODE || ')', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, - BVISIBLE => true, - BORDER => true, - BFILTER => false); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'NLAB_DIFF_RPT_FOT', - SCAPTION => 'Отклон. (факт-план, ' || RJB_PRMS.LAB_MEAS_CODE || ')', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, - BVISIBLE => true, - BORDER => true, - BFILTER => false); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'NLAB_PLAN_JOBS', - SCAPTION => 'Труд. (план, график, ' || RJB_PRMS.LAB_MEAS_CODE || ')', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, - BORDER => true, - BFILTER => false); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'NLAB_DIFF_JOBS_FOT', - SCAPTION => 'Отклон. (график-план, ' || RJB_PRMS.LAB_MEAS_CODE || ')', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, - BORDER => true, - BFILTER => false); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'NRN', + SCAPTION => 'Рег. номер', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, + BVISIBLE => false); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'SPERIOD', + SCAPTION => 'Период', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, + BORDER => true, + BFILTER => false); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'SINS_DEPARTMENT', + SCAPTION => 'Подразделение', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, + BORDER => true, + BFILTER => false); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'SFCMANPOWER', + SCAPTION => 'Ресурс', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, + BORDER => true, + BFILTER => false); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'NLAB_PLAN_FOT', + SCAPTION => 'Труд. (план, ФОТ, ' || RJB_PRMS.LAB_MEAS_CODE || ')', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, + BORDER => true, + BFILTER => false); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'NLAB_FACT_RPT', + SCAPTION => 'Труд. (факт, отчёт, ' || RJB_PRMS.LAB_MEAS_CODE || ')', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, + BVISIBLE => true, + BORDER => true, + BFILTER => false); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'NLAB_DIFF_RPT_FOT', + SCAPTION => 'Отклон. (факт-план, ' || RJB_PRMS.LAB_MEAS_CODE || ')', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, + BVISIBLE => true, + BORDER => true, + BFILTER => false); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'NLAB_PLAN_JOBS', + SCAPTION => 'Труд. (план, график, ' || RJB_PRMS.LAB_MEAS_CODE || ')', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, + BORDER => true, + BFILTER => false); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'NLAB_DIFF_JOBS_FOT', + SCAPTION => 'Отклон. (график-план, ' || RJB_PRMS.LAB_MEAS_CODE || ')', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, + BORDER => true, + BFILTER => false); /* Обходим данные */ begin /* Добавляем подсказку совместимости */ @@ -6113,7 +6184,10 @@ create or replace package body PKG_P8PANELS_PROJECTS as PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' %ORDER_BY%) D) F'); PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' 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.TDG_ORDERS_SET_QUERY(RDATA_GRID => RDG, + RORDERS => RO, + SPATTERN => '%ORDER_BY%', + CSQL => CSQL); /* Разбираем его */ ICURSOR := PKG_SQL_DML.OPEN_CURSOR(SWHAT => 'SELECT'); PKG_SQL_DML.PARSE(ICURSOR => ICURSOR, SQUERY => CSQL); @@ -6140,42 +6214,45 @@ create or replace package body PKG_P8PANELS_PROJECTS as while (PKG_SQL_DML.FETCH_ROWS(ICURSOR => ICURSOR) > 0) loop /* Добавляем колонки с данными */ - PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLN(RROW => RDG_ROW, - SNAME => 'NRN', - ICURSOR => ICURSOR, - NPOSITION => 1, - BCLEAR => true); - PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLS(RROW => RDG_ROW, SNAME => 'SPERIOD', ICURSOR => ICURSOR, NPOSITION => 2); - PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLS(RROW => RDG_ROW, - SNAME => 'SINS_DEPARTMENT', - ICURSOR => ICURSOR, - NPOSITION => 3); - PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLS(RROW => RDG_ROW, - SNAME => 'SFCMANPOWER', - ICURSOR => ICURSOR, - NPOSITION => 4); - PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLN(RROW => RDG_ROW, - SNAME => 'NLAB_PLAN_FOT', - ICURSOR => ICURSOR, - NPOSITION => 5); - PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLN(RROW => RDG_ROW, - SNAME => 'NLAB_FACT_RPT', - ICURSOR => ICURSOR, - NPOSITION => 6); - PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLN(RROW => RDG_ROW, - SNAME => 'NLAB_DIFF_RPT_FOT', - ICURSOR => ICURSOR, - NPOSITION => 7); - PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLN(RROW => RDG_ROW, - SNAME => 'NLAB_PLAN_JOBS', - ICURSOR => ICURSOR, - NPOSITION => 8); - PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLN(RROW => RDG_ROW, - SNAME => 'NLAB_DIFF_JOBS_FOT', - ICURSOR => ICURSOR, - NPOSITION => 9); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLN(RROW => RDG_ROW, + SNAME => 'NRN', + ICURSOR => ICURSOR, + NPOSITION => 1, + BCLEAR => true); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLS(RROW => RDG_ROW, + SNAME => 'SPERIOD', + ICURSOR => ICURSOR, + NPOSITION => 2); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLS(RROW => RDG_ROW, + SNAME => 'SINS_DEPARTMENT', + ICURSOR => ICURSOR, + NPOSITION => 3); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLS(RROW => RDG_ROW, + SNAME => 'SFCMANPOWER', + ICURSOR => ICURSOR, + NPOSITION => 4); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLN(RROW => RDG_ROW, + SNAME => 'NLAB_PLAN_FOT', + ICURSOR => ICURSOR, + NPOSITION => 5); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLN(RROW => RDG_ROW, + SNAME => 'NLAB_FACT_RPT', + ICURSOR => ICURSOR, + NPOSITION => 6); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLN(RROW => RDG_ROW, + SNAME => 'NLAB_DIFF_RPT_FOT', + ICURSOR => ICURSOR, + NPOSITION => 7); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLN(RROW => RDG_ROW, + SNAME => 'NLAB_PLAN_JOBS', + ICURSOR => ICURSOR, + NPOSITION => 8); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLN(RROW => RDG_ROW, + SNAME => 'NLAB_DIFF_JOBS_FOT', + ICURSOR => ICURSOR, + NPOSITION => 9); /* Добавляем строку в таблицу */ - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_ROW(RDATA_GRID => RDG, RROW => RDG_ROW); + PKG_P8PANELS_VISUAL.TDG_ADD_ROW(RDATA_GRID => RDG, RROW => RDG_ROW); end loop; /* Освобождаем курсор */ PKG_SQL_DML.CLOSE_CURSOR(ICURSOR => ICURSOR); @@ -6185,7 +6262,7 @@ create or replace package body PKG_P8PANELS_PROJECTS as raise; end; /* Сериализуем описание */ - COUT := PKG_P8PANELS_VISUAL.TDATA_GRID_TO_XML(RDATA_GRID => RDG, NINCLUDE_DEF => NINCLUDE_DEF); + COUT := PKG_P8PANELS_VISUAL.TDG_TO_XML(RDATA_GRID => RDG, NINCLUDE_DEF => NINCLUDE_DEF); end JB_PERIODS_LIST; /* Очистка данных балансировки */ diff --git a/db/PKG_P8PANELS_RRPCONFED.pck b/db/PKG_P8PANELS_RRPCONFED.pck index e531efb..494de72 100644 --- a/db/PKG_P8PANELS_RRPCONFED.pck +++ b/db/PKG_P8PANELS_RRPCONFED.pck @@ -784,8 +784,8 @@ create or replace package body PKG_P8PANELS_RRPCONFED as is NVERSION PKG_STD.TREF; -- Рег. номер версии словаря контрагентов NCOMPANY PKG_STD.TREF := GET_SESSION_COMPANY(); -- Организация сеанса - RDG PKG_P8PANELS_VISUAL.TDATA_GRID; -- Описание таблицы - RDG_ROW PKG_P8PANELS_VISUAL.TROW; -- Строка таблицы + RDG PKG_P8PANELS_VISUAL.TDG; -- Описание таблицы + RDG_ROW PKG_P8PANELS_VISUAL.TDG_ROW; -- Строка таблицы CDG clob; -- XML данных раздела CXML PKG_CONTVALLOC2NS.TCONTAINER; -- Контейнер для данных XML RRRPCONFSCTNMRK RRPCONFSCTNMRK%rowtype; -- Рег. номер показателя @@ -798,8 +798,8 @@ create or replace package body PKG_P8PANELS_RRPCONFED as /* Инициализация колонок граф показателей */ procedure MARKS_COLUMNS_INIT ( - RDG in out nocopy PKG_P8PANELS_VISUAL.TDATA_GRID, -- Описание таблицы - NRRPCONFSCTN in number -- Рег. номер раздела + RDG in out nocopy PKG_P8PANELS_VISUAL.TDG, -- Описание таблицы + NRRPCONFSCTN in number -- Рег. номер раздела ) is begin @@ -816,35 +816,35 @@ create or replace package body PKG_P8PANELS_RRPCONFED as order by C.CODE) loop /* Наименование графы */ - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'SCOL_' || REC.CODE, - SCAPTION => REC.NAME, - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, - NWIDTH => 200); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'SCOL_' || REC.CODE, + SCAPTION => REC.NAME, + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, + NWIDTH => 200); /* Рег. номер графы */ - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'NCOL_RN_' || REC.CODE, - SCAPTION => REC.NAME || ' рег. номер', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, - BVISIBLE => false); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'NCOL_RN_' || REC.CODE, + SCAPTION => REC.NAME || ' рег. номер', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, + BVISIBLE => false); /* Рег. номер показателя */ - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'NMARK_RN_' || REC.CODE, - SCAPTION => REC.NAME || ' рег. номер показателя', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, - BVISIBLE => false); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'NMARK_RN_' || REC.CODE, + SCAPTION => REC.NAME || ' рег. номер показателя', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, + BVISIBLE => false); /* Мнемокод показателя */ - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'SMARK_CODE_' || REC.CODE, - SCAPTION => REC.NAME || ' мнемокод показателя', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, - BVISIBLE => false); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'SMARK_CODE_' || REC.CODE, + SCAPTION => REC.NAME || ' мнемокод показателя', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, + BVISIBLE => false); /* Для составов показтелей */ - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'MARK_CNS_' || REC.CODE, - SCAPTION => REC.NAME || ' состав показателя', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, - BVISIBLE => false); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'MARK_CNS_' || REC.CODE, + SCAPTION => REC.NAME || ' состав показателя', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, + BVISIBLE => false); end loop; end MARKS_COLUMNS_INIT; @@ -897,25 +897,25 @@ create or replace package body PKG_P8PANELS_RRPCONFED as order by T.CODE) loop /* Инициализируем таблицу данных */ - RDG := PKG_P8PANELS_VISUAL.TDATA_GRID_MAKE(BFIXED_HEADER => true, NFIXED_COLUMNS => 1); + RDG := PKG_P8PANELS_VISUAL.TDG_MAKE(BFIXED_HEADER => true, NFIXED_COLUMNS => 1); /* Формируем структуру заголовка */ - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'SROW_NAME', - SCAPTION => '', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, - NWIDTH => 150); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'SROW_NAME', + SCAPTION => '', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, + NWIDTH => 150); /* Формируем структуру заголовка */ - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'SROW_CODE', - SCAPTION => 'Мнемокод строки', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, - BVISIBLE => false); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'SROW_CODE', + SCAPTION => 'Мнемокод строки', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, + BVISIBLE => false); /* Формируем структуру заголовка */ - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'NROW_RN', - SCAPTION => 'Рег. номер строки', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, - BVISIBLE => false); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'NROW_RN', + SCAPTION => 'Рег. номер строки', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, + BVISIBLE => false); /* Если раздел содержит показатели */ if (S.NMARKS_EXISTS = 1) then /* Инициализируем колонки граф */ @@ -938,11 +938,11 @@ create or replace package body PKG_P8PANELS_RRPCONFED as LPAD(R.CODE, 20, '0')) loop /* Заполняем наименование строки */ - PKG_P8PANELS_VISUAL.TROW_ADD_COL(RROW => RDG_ROW, SNAME => 'SROW_NAME', SVALUE => R.NAME, BCLEAR => true); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_COL(RROW => RDG_ROW, SNAME => 'SROW_NAME', SVALUE => R.NAME, BCLEAR => true); /* Заполняем мнемокод строки */ - PKG_P8PANELS_VISUAL.TROW_ADD_COL(RROW => RDG_ROW, SNAME => 'SROW_CODE', SVALUE => R.CODE); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_COL(RROW => RDG_ROW, SNAME => 'SROW_CODE', SVALUE => R.CODE); /* Заполняем рег. номер строки */ - PKG_P8PANELS_VISUAL.TROW_ADD_COL(RROW => RDG_ROW, SNAME => 'NROW_RN', NVALUE => R.RN); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_COL(RROW => RDG_ROW, SNAME => 'NROW_RN', NVALUE => R.RN); /* Обходим графы раздела */ for C in (select C.RN, C.CODE, @@ -963,29 +963,29 @@ create or replace package body PKG_P8PANELS_RRPCONFED as /* Считываем показатель по строке/графе */ RRRPCONFSCTNMRK := RRPCONFSCTNMRK_GET_ROWCOL(NRRPCONFSCTN => S.NRN, NRRPROW => R.RN, NRRPCOLUMN => C.RN); /* Заполняем рег. номер графы */ - PKG_P8PANELS_VISUAL.TROW_ADD_COL(RROW => RDG_ROW, SNAME => 'SCOL_' || C.CODE, SVALUE => C.NAME); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_COL(RROW => RDG_ROW, SNAME => 'SCOL_' || C.CODE, SVALUE => C.NAME); /* Заполняем рег. номер графы */ - PKG_P8PANELS_VISUAL.TROW_ADD_COL(RROW => RDG_ROW, SNAME => 'NCOL_RN_' || C.CODE, NVALUE => C.RN); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_COL(RROW => RDG_ROW, SNAME => 'NCOL_RN_' || C.CODE, NVALUE => C.RN); /* Заполняем рег. номер показателя */ - PKG_P8PANELS_VISUAL.TROW_ADD_COL(RROW => RDG_ROW, - SNAME => 'NMARK_RN_' || C.CODE, - NVALUE => RRRPCONFSCTNMRK.RN); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_COL(RROW => RDG_ROW, + SNAME => 'NMARK_RN_' || C.CODE, + NVALUE => RRRPCONFSCTNMRK.RN); /* Если ошибка считывания показателя */ if (RRRPCONFSCTNMRK.RN is not null) then /* Заполняем мнемокод показателя */ - PKG_P8PANELS_VISUAL.TROW_ADD_COL(RROW => RDG_ROW, - SNAME => 'SMARK_CODE_' || C.CODE, - SVALUE => RRRPCONFSCTNMRK.CODE); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_COL(RROW => RDG_ROW, + SNAME => 'SMARK_CODE_' || C.CODE, + SVALUE => RRRPCONFSCTNMRK.CODE); /* Добавляем атрибут состава показателей */ - PKG_P8PANELS_VISUAL.TROW_ADD_COL(RROW => RDG_ROW, SNAME => 'MARK_CNS_' || C.CODE, SVALUE => null); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_COL(RROW => RDG_ROW, SNAME => 'MARK_CNS_' || C.CODE, SVALUE => null); end if; end loop; /* Добавим строку для раздела */ - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_ROW(RDATA_GRID => RDG, RROW => RDG_ROW); + PKG_P8PANELS_VISUAL.TDG_ADD_ROW(RDATA_GRID => RDG, RROW => RDG_ROW); end loop; end if; /* Сериализуем описание */ - CDG := PKG_P8PANELS_VISUAL.TDATA_GRID_TO_XML(RDATA_GRID => RDG, NINCLUDE_DEF => 1); + CDG := PKG_P8PANELS_VISUAL.TDG_TO_XML(RDATA_GRID => RDG, NINCLUDE_DEF => 1); /* Заполняем контейнер данными о разделе */ PKG_CONTVALLOC2NS.PUTN(RCONTAINER => CXML, NTABID => S.RNUM, SROWID => 'RN', NVALUE => S.NRN); PKG_CONTVALLOC2NS.PUTS(RCONTAINER => CXML, NTABID => S.RNUM, SROWID => 'CODE', SVALUE => S.SCODE); diff --git a/db/PKG_P8PANELS_SAMPLES.pck b/db/PKG_P8PANELS_SAMPLES.pck index ee842fa..7aff8e6 100644 --- a/db/PKG_P8PANELS_SAMPLES.pck +++ b/db/PKG_P8PANELS_SAMPLES.pck @@ -257,11 +257,11 @@ create or replace package body PKG_P8PANELS_SAMPLES as 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; -- Описание таблицы - RAGN_TYPES PKG_P8PANELS_VISUAL.TCOL_VALS; -- Предопределенные значения "Типа контрагентов" - RDG_ROW PKG_P8PANELS_VISUAL.TROW; -- Строка таблицы + RF PKG_P8PANELS_VISUAL.TDG_FILTERS; -- Фильтры + RO PKG_P8PANELS_VISUAL.TDG_ORDERS; -- Сортировки + RDG PKG_P8PANELS_VISUAL.TDG; -- Описание таблицы + RAGN_TYPES PKG_P8PANELS_VISUAL.TDG_COL_VALS; -- Предопределенные значения "Типа контрагентов" + RDG_ROW PKG_P8PANELS_VISUAL.TDG_ROW; -- Строка таблицы NROW_FROM PKG_STD.TREF; -- Номер строки с NROW_TO PKG_STD.TREF; -- Номер строки по CSQL clob; -- Буфер для запроса @@ -272,71 +272,71 @@ create or replace package body PKG_P8PANELS_SAMPLES as NAGNTYPE PKG_STD.TREF; -- Буфер для "Типа" begin /* Читаем фильтры */ - RF := PKG_P8PANELS_VISUAL.TFILTERS_FROM_XML(CFILTERS => CFILTERS); + RF := PKG_P8PANELS_VISUAL.TDG_FILTERS_FROM_XML(CFILTERS => CFILTERS); /* Читем сортировки */ - RO := PKG_P8PANELS_VISUAL.TORDERS_FROM_XML(CORDERS => CORDERS); + RO := PKG_P8PANELS_VISUAL.TDG_ORDERS_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(BFIXED_HEADER => true, NFIXED_COLUMNS => 2); + RDG := PKG_P8PANELS_VISUAL.TDG_MAKE(BFIXED_HEADER => true, NFIXED_COLUMNS => 2); /* Описываем колонки таблицы данных */ - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'SAGNABBR', - SCAPTION => 'Мнемокод', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, - SCOND_FROM => 'AgentAbbr', - BVISIBLE => true, - BORDER => true, - BFILTER => true, - NWIDTH => 150); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'SAGNINFO', - SCAPTION => 'Сведения', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, - BVISIBLE => true, - BORDER => false, - BFILTER => false, - BEXPANDABLE => true, - NWIDTH => 300); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'SAGNNAME', - SCAPTION => 'Наименование', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, - SCOND_FROM => 'AgentName', - BVISIBLE => true, - BORDER => true, - BFILTER => true, - SPARENT => 'SAGNINFO', - NWIDTH => 200); - PKG_P8PANELS_VISUAL.TCOL_VALS_ADD(RCOL_VALS => RAGN_TYPES, NVALUE => 0); - PKG_P8PANELS_VISUAL.TCOL_VALS_ADD(RCOL_VALS => RAGN_TYPES, NVALUE => 1); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'NAGNTYPE', - SCAPTION => 'Тип', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, - SCOND_FROM => 'AgentType', - BVISIBLE => true, - BORDER => true, - BFILTER => true, - SPARENT => 'SAGNINFO', - NWIDTH => 100, - RCOL_VALS => RAGN_TYPES, - SHINT => 'В Системе бывают контрагенты двух типов:
' || - 'Юридическое лицо - организация, которая имеет в собственности, хозяйственном ведении ' || - 'или оперативном управлении обособленное имущество, отвечает по своим обязательствам этим имуществом, может от своего ' || - 'имени приобретать и осуществлять имущественные и личные неимущественные права, отвечать по своим обязанностям.
' || - 'Физическое лицо - субъект правовых отношений, представляющий собой одного человека.'); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'SFULLNAME', - SCAPTION => 'Полное наименование', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR); - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_COL_DEF(RDATA_GRID => RDG, - SNAME => 'SAGNIDNUMB', - SCAPTION => 'ИНН', - SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'SAGNABBR', + SCAPTION => 'Мнемокод', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, + SCOND_FROM => 'AgentAbbr', + BVISIBLE => true, + BORDER => true, + BFILTER => true, + NWIDTH => 150); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'SAGNINFO', + SCAPTION => 'Сведения', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, + BVISIBLE => true, + BORDER => false, + BFILTER => false, + BEXPANDABLE => true, + NWIDTH => 300); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'SAGNNAME', + SCAPTION => 'Наименование', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR, + SCOND_FROM => 'AgentName', + BVISIBLE => true, + BORDER => true, + BFILTER => true, + SPARENT => 'SAGNINFO', + NWIDTH => 200); + PKG_P8PANELS_VISUAL.TDG_COL_VALS_ADD(RCOL_VALS => RAGN_TYPES, NVALUE => 0); + PKG_P8PANELS_VISUAL.TDG_COL_VALS_ADD(RCOL_VALS => RAGN_TYPES, NVALUE => 1); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'NAGNTYPE', + SCAPTION => 'Тип', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB, + SCOND_FROM => 'AgentType', + BVISIBLE => true, + BORDER => true, + BFILTER => true, + SPARENT => 'SAGNINFO', + NWIDTH => 100, + RCOL_VALS => RAGN_TYPES, + SHINT => 'В Системе бывают контрагенты двух типов:
' || + 'Юридическое лицо - организация, которая имеет в собственности, хозяйственном ведении ' || + 'или оперативном управлении обособленное имущество, отвечает по своим обязательствам этим имуществом, может от своего ' || + 'имени приобретать и осуществлять имущественные и личные неимущественные права, отвечать по своим обязанностям.
' || + 'Физическое лицо - субъект правовых отношений, представляющий собой одного человека.'); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'SFULLNAME', + SCAPTION => 'Полное наименование', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR); + PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG, + SNAME => 'SAGNIDNUMB', + SCAPTION => 'ИНН', + SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR); /* Обходим данные */ begin /* Добавляем подсказку совместимости */ @@ -362,14 +362,17 @@ create or replace package body PKG_P8PANELS_SAMPLES as PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' and AG.RN in (select ID from COND_BROKER_IDSMART where IDENT = :NIDENT) %ORDER_BY%) D) F'); PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' 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.TDG_ORDERS_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); + PKG_P8PANELS_VISUAL.TDG_FILTERS_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); @@ -382,7 +385,7 @@ create or replace package body PKG_P8PANELS_SAMPLES as PKG_SQL_DML.DEFINE_COLUMN_STR(ICURSOR => ICURSOR, IPOSITION => 2); PKG_SQL_DML.DEFINE_COLUMN_NUM(ICURSOR => ICURSOR, IPOSITION => 3); PKG_SQL_DML.DEFINE_COLUMN_STR(ICURSOR => ICURSOR, IPOSITION => 4); - PKG_SQL_DML.DEFINE_COLUMN_STR(ICURSOR => ICURSOR, IPOSITION => 5); + PKG_SQL_DML.DEFINE_COLUMN_STR(ICURSOR => ICURSOR, IPOSITION => 5); PKG_SQL_DML.DEFINE_COLUMN_NUM(ICURSOR => ICURSOR, IPOSITION => 6); /* Делаем выборку */ if (PKG_SQL_DML.EXECUTE(ICURSOR => ICURSOR) = 0) then @@ -397,29 +400,38 @@ create or replace package body PKG_P8PANELS_SAMPLES as if (NAGNTYPE = 0) then SGROUP := 'JUR'; SAGNINFO := SAGNNAME || ', ЮЛ'; - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_GROUP(RDATA_GRID => RDG, - SNAME => SGROUP, - SCAPTION => 'Юридические лица', - BEXPANDABLE => true, - BEXPANDED => false); + PKG_P8PANELS_VISUAL.TDG_ADD_GROUP(RDATA_GRID => RDG, + SNAME => SGROUP, + SCAPTION => 'Юридические лица', + BEXPANDABLE => true, + BEXPANDED => false); else SGROUP := 'PERS'; SAGNINFO := SAGNNAME || ', ФЛ'; - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_GROUP(RDATA_GRID => RDG, - SNAME => SGROUP, - SCAPTION => 'Физические лица', - BEXPANDABLE => true, - BEXPANDED => false); + PKG_P8PANELS_VISUAL.TDG_ADD_GROUP(RDATA_GRID => RDG, + SNAME => SGROUP, + SCAPTION => 'Физические лица', + BEXPANDABLE => true, + BEXPANDED => false); end if; - RDG_ROW := PKG_P8PANELS_VISUAL.TROW_MAKE(SGROUP => SGROUP); - PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLS(RROW => RDG_ROW, SNAME => 'SAGNABBR', ICURSOR => ICURSOR, NPOSITION => 1); - PKG_P8PANELS_VISUAL.TROW_ADD_COL(RROW => RDG_ROW, SNAME => 'SAGNINFO', SVALUE => SAGNINFO); - PKG_P8PANELS_VISUAL.TROW_ADD_COL(RROW => RDG_ROW, SNAME => 'SAGNNAME', SVALUE => SAGNNAME); - PKG_P8PANELS_VISUAL.TROW_ADD_COL(RROW => RDG_ROW, SNAME => 'NAGNTYPE', NVALUE => NAGNTYPE); - PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLS(RROW => RDG_ROW, SNAME => 'SFULLNAME', ICURSOR => ICURSOR, NPOSITION => 4); - PKG_P8PANELS_VISUAL.TROW_ADD_CUR_COLS(RROW => RDG_ROW, SNAME => 'SAGNIDNUMB', ICURSOR => ICURSOR, NPOSITION => 5); + RDG_ROW := PKG_P8PANELS_VISUAL.TDG_ROW_MAKE(SGROUP => SGROUP); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLS(RROW => RDG_ROW, + SNAME => 'SAGNABBR', + ICURSOR => ICURSOR, + NPOSITION => 1); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_COL(RROW => RDG_ROW, SNAME => 'SAGNINFO', SVALUE => SAGNINFO); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_COL(RROW => RDG_ROW, SNAME => 'SAGNNAME', SVALUE => SAGNNAME); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_COL(RROW => RDG_ROW, SNAME => 'NAGNTYPE', NVALUE => NAGNTYPE); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLS(RROW => RDG_ROW, + SNAME => 'SFULLNAME', + ICURSOR => ICURSOR, + NPOSITION => 4); + PKG_P8PANELS_VISUAL.TDG_ROW_ADD_CUR_COLS(RROW => RDG_ROW, + SNAME => 'SAGNIDNUMB', + ICURSOR => ICURSOR, + NPOSITION => 5); /* Добавляем строку в таблицу */ - PKG_P8PANELS_VISUAL.TDATA_GRID_ADD_ROW(RDATA_GRID => RDG, RROW => RDG_ROW); + PKG_P8PANELS_VISUAL.TDG_ADD_ROW(RDATA_GRID => RDG, RROW => RDG_ROW); end loop; /* Освобождаем курсор */ PKG_SQL_DML.CLOSE_CURSOR(ICURSOR => ICURSOR); @@ -429,7 +441,7 @@ create or replace package body PKG_P8PANELS_SAMPLES as raise; end; /* Сериализуем описание */ - COUT := PKG_P8PANELS_VISUAL.TDATA_GRID_TO_XML(RDATA_GRID => RDG, NINCLUDE_DEF => NINCLUDE_DEF); + COUT := PKG_P8PANELS_VISUAL.TDG_TO_XML(RDATA_GRID => RDG, NINCLUDE_DEF => NINCLUDE_DEF); end DATA_GRID; /* График */ diff --git a/db/PKG_P8PANELS_VISUAL.pck b/db/PKG_P8PANELS_VISUAL.pck index 7b88ef2..0c86f8c 100644 --- a/db/PKG_P8PANELS_VISUAL.pck +++ b/db/PKG_P8PANELS_VISUAL.pck @@ -43,7 +43,7 @@ create or replace package PKG_P8PANELS_VISUAL as NCYCLOGRAM_LINE_HEIGHT constant PKG_STD.TNUMBER := 20; -- Высота строк циклограммы /* Типы данных - значение колонки таблицы данных */ - type TCOL_VAL is record + type TDG_COL_VAL is record ( SVALUE PKG_STD.TLSTRING, -- Значение (строка) NVALUE PKG_STD.TLNUMBER, -- Значение (число) @@ -51,10 +51,10 @@ create or replace package PKG_P8PANELS_VISUAL as ); /* Типы данных - коллекция значений колонки таблицы данных */ - type TCOL_VALS is table of TCOL_VAL; + type TDG_COL_VALS is table of TDG_COL_VAL; /* Типы данных - описатель колонки таблицы данных */ - type TCOL_DEF is record + type TDG_COL_DEF is record ( SNAME PKG_STD.TSTRING, -- Наименование SCAPTION PKG_STD.TSTRING, -- Заголовок @@ -64,7 +64,7 @@ create or replace package PKG_P8PANELS_VISUAL as BVISIBLE boolean, -- Разрешить отображение BORDER boolean, -- Разрешить сортировку BFILTER boolean, -- Разрешить отбор - RCOL_VALS TCOL_VALS, -- Предопределённые значения + RCOL_VALS TDG_COL_VALS, -- Предопределённые значения SHINT PKG_STD.TSTRING, -- Текст всплывающей подсказки SPARENT PKG_STD.TSTRING, -- Наименование родительской колонки BEXPANDABLE boolean, -- Разрешить сокрытие/отображение дочерних колонок @@ -73,30 +73,30 @@ create or replace package PKG_P8PANELS_VISUAL as ); /* Типы данных - коллекция описателей колонок таблицы данных */ - type TCOL_DEFS is table of TCOL_DEF; + type TDG_COL_DEFS is table of TDG_COL_DEF; /* Типы данных - колонка */ - type TCOL is record + type TDG_COL is record ( SNAME PKG_STD.TSTRING, -- Наименование - RCOL_VAL TCOL_VAL -- Значение + RCOL_VAL TDG_COL_VAL -- Значение ); /* Типы данных - коллекция колонок */ - type TCOLS is table of TCOL; + type TDG_COLS is table of TDG_COL; /* Типы данных - строка */ - type TROW is record + type TDG_ROW is record ( SGROUP PKG_STD.TSTRING, -- Наименование группы - RCOLS TCOLS -- Колонки + RCOLS TDG_COLS -- Колонки ); /* Типы данных - коллекция строк */ - type TROWS is table of TROW; + type TDG_ROWS is table of TDG_ROW; /* Типы данных - группа */ - type TGROUP is record + type TDG_GROUP is record ( SNAME PKG_STD.TSTRING, -- Наименование SCAPTION PKG_STD.TSTRING, -- Заголовок @@ -105,20 +105,20 @@ create or replace package PKG_P8PANELS_VISUAL as ); /* Типы данных - коллекция групп */ - type TGROUPS is table of TGROUP; + type TDG_GROUPS is table of TDG_GROUP; /* Типы данных - таблица данных */ - type TDATA_GRID is record + type TDG is record ( BFIXED_HEADER boolean, -- Зафиксировать заголовок NFIXED_COLUMNS PKG_STD.TNUMBER, -- Количество фиксированных колонок - RCOL_DEFS TCOL_DEFS, -- Описание колонок - RGROUPS TGROUPS, -- Описание групп - RROWS TROWS -- Данные строк + RCOL_DEFS TDG_COL_DEFS, -- Описание колонок + RGROUPS TDG_GROUPS, -- Описание групп + RROWS TDG_ROWS -- Данные строк ); /* Типы данных - фильтр */ - type TFILTER is record + type TDG_FILTER is record ( SNAME PKG_STD.TSTRING, -- Наименование SFROM PKG_STD.TSTRING, -- Значение "с" @@ -126,17 +126,17 @@ create or replace package PKG_P8PANELS_VISUAL as ); /* Типы данных - коллекция фильтров */ - type TFILTERS is table of TFILTER; + type TDG_FILTERS is table of TDG_FILTER; /* Типы данных - сортировка */ - type TORDER is record + type TDG_ORDER is record ( SNAME PKG_STD.TSTRING, -- Наименование SDIRECTION PKG_STD.TSTRING -- Направление (см. константы SORDER_DIRECTION_*) ); /* Типы данных - коллекция сортировок */ - type TORDERS is table of TORDER; + type TDG_ORDERS is table of TDG_ORDER; /* Типы данных - описание атрибута задачи для диаграммы Ганта */ type TGANTT_TASK_ATTR is record @@ -355,80 +355,80 @@ create or replace package PKG_P8PANELS_VISUAL as ) return varchar2; -- Результат /* Добавление значения в коллекцию */ - procedure TCOL_VALS_ADD + procedure TDG_COL_VALS_ADD ( - RCOL_VALS in out nocopy TCOL_VALS, -- Коллекция значений - SVALUE in varchar2 := null, -- Значение (строка) - NVALUE in number := null, -- Значение (число) - DVALUE in date := null, -- Значение (дата) - BCLEAR in boolean := false -- Флаг очистки коллекции (false - не очищать, true - очистить коллекцию перед добавлением) + RCOL_VALS in out nocopy TDG_COL_VALS, -- Коллекция значений + SVALUE in varchar2 := null, -- Значение (строка) + NVALUE in number := null, -- Значение (число) + DVALUE in date := null, -- Значение (дата) + BCLEAR in boolean := false -- Флаг очистки коллекции (false - не очищать, true - очистить коллекцию перед добавлением) ); /* Формирование строки */ - function TROW_MAKE + function TDG_ROW_MAKE ( SGROUP in varchar2 := null -- Наименование группы - ) return TROW; -- Результат работы + ) return TDG_ROW; -- Результат работы /* Добавление колонки к строке */ - procedure TROW_ADD_COL + procedure TDG_ROW_ADD_COL ( - RROW in out nocopy TROW, -- Строка - SNAME in varchar2, -- Наименование колонки - SVALUE in varchar2 := null, -- Значение (строка) - NVALUE in number := null, -- Значение (число) - DVALUE in date := null, -- Значение (дата) - BCLEAR in boolean := false -- Флаг очистки коллекции (false - не очищать, true - очистить коллекцию перед добавлением) + RROW in out nocopy TDG_ROW, -- Строка + SNAME in varchar2, -- Наименование колонки + SVALUE in varchar2 := null, -- Значение (строка) + NVALUE in number := null, -- Значение (число) + DVALUE in date := null, -- Значение (дата) + BCLEAR in boolean := false -- Флаг очистки коллекции (false - не очищать, true - очистить коллекцию перед добавлением) ); /* Добавление строковой колонки к строке из курсора динамического запроса */ - procedure TROW_ADD_CUR_COLS + procedure TDG_ROW_ADD_CUR_COLS ( - RROW in out nocopy TROW, -- Строка - SNAME in varchar2, -- Наименование колонки - ICURSOR in integer, -- Курсор - NPOSITION in number, -- Номер колонки в курсоре - BCLEAR in boolean := false -- Флаг очистки коллекции (false - не очищать, true - очистить коллекцию перед добавлением) + RROW in out nocopy TDG_ROW, -- Строка + SNAME in varchar2, -- Наименование колонки + ICURSOR in integer, -- Курсор + NPOSITION in number, -- Номер колонки в курсоре + BCLEAR in boolean := false -- Флаг очистки коллекции (false - не очищать, true - очистить коллекцию перед добавлением) ); /* Добавление числовой колонки к строке из курсора динамического запроса */ - procedure TROW_ADD_CUR_COLN + procedure TDG_ROW_ADD_CUR_COLN ( - RROW in out nocopy TROW, -- Строка - SNAME in varchar2, -- Наименование колонки - ICURSOR in integer, -- Курсор - NPOSITION in number, -- Номер колонки в курсоре - BCLEAR in boolean := false -- Флаг очистки коллекции (false - не очищать, true - очистить коллекцию перед добавлением) + RROW in out nocopy TDG_ROW, -- Строка + SNAME in varchar2, -- Наименование колонки + ICURSOR in integer, -- Курсор + NPOSITION in number, -- Номер колонки в курсоре + BCLEAR in boolean := false -- Флаг очистки коллекции (false - не очищать, true - очистить коллекцию перед добавлением) ); /* Добавление колонки типа "дата" к строке из курсора динамического запроса */ - procedure TROW_ADD_CUR_COLD + procedure TDG_ROW_ADD_CUR_COLD ( - RROW in out nocopy TROW, -- Строка - SNAME in varchar2, -- Наименование колонки - ICURSOR in integer, -- Курсор - NPOSITION in number, -- Номер колонки в курсоре - BCLEAR in boolean := false -- Флаг очистки коллекции (false - не очищать, true - очистить коллекцию перед добавлением) + RROW in out nocopy TDG_ROW, -- Строка + SNAME in varchar2, -- Наименование колонки + ICURSOR in integer, -- Курсор + NPOSITION in number, -- Номер колонки в курсоре + BCLEAR in boolean := false -- Флаг очистки коллекции (false - не очищать, true - очистить коллекцию перед добавлением) ); /* Формирование таблицы данных */ - function TDATA_GRID_MAKE + function TDG_MAKE ( BFIXED_HEADER in boolean := false, -- Зафиксировать заголовок NFIXED_COLUMNS in number := 0 -- Количество фиксированных колонок - ) return TDATA_GRID; -- Результат работы + ) return TDG; -- Результат работы /* Поиск описания колонки в таблице данных по наименованию */ - function TDATA_GRID_FIND_COL_DEF + function TDG_FIND_COL_DEF ( - RDATA_GRID in TDATA_GRID, -- Описание таблицы данных - SNAME in varchar2 -- Наименование колонки - ) return TCOL_DEF; -- Найденное описание (null - если не нашли) + RDATA_GRID in TDG, -- Описание таблицы данных + SNAME in varchar2 -- Наименование колонки + ) return TDG_COL_DEF; -- Найденное описание (null - если не нашли) /* Добавление описания колонки к таблице данных */ - procedure TDATA_GRID_ADD_COL_DEF + procedure TDG_ADD_COL_DEF ( - RDATA_GRID in out nocopy TDATA_GRID, -- Описание таблицы данных + RDATA_GRID in out nocopy TDG, -- Описание таблицы данных SNAME in varchar2, -- Наименование колонки SCAPTION in varchar2, -- Заголовок колонки SDATA_TYPE in varchar2 := SDATA_TYPE_STR, -- Тип данных колонки (см. константы SDATA_TYPE_*) @@ -437,7 +437,7 @@ create or replace package PKG_P8PANELS_VISUAL as BVISIBLE in boolean := true, -- Разрешить отображение BORDER in boolean := false, -- Разрешить сортировку по колонке BFILTER in boolean := false, -- Разрешить отбор по колонке - RCOL_VALS in TCOL_VALS := null, -- Предопределённые значения колонки + RCOL_VALS in TDG_COL_VALS := null, -- Предопределённые значения колонки SHINT in varchar2 := null, -- Текст всплывающей подсказки SPARENT in varchar2 := null, -- Наименование родительской колонки BEXPANDABLE in boolean := false, -- Разрешить сокрытие/отображение дочерних колонок @@ -447,84 +447,84 @@ create or replace package PKG_P8PANELS_VISUAL as ); /* Добавление описания группы к таблице данных */ - procedure TDATA_GRID_ADD_GROUP + procedure TDG_ADD_GROUP ( - RDATA_GRID in out nocopy TDATA_GRID, -- Описание таблицы данных - SNAME in varchar2, -- Наименование группы - SCAPTION in varchar2, -- Заголовок группы - BEXPANDABLE in boolean := false, -- Разрешить сокрытие/отображение дочерних - BEXPANDED in boolean := true, -- Отобразить/скрыть дочерние - BCLEAR in boolean := false -- Флаг очистки коллекции описаний групп таблицы данных (false - не очищать, true - очистить коллекцию перед добавлением) + RDATA_GRID in out nocopy TDG, -- Описание таблицы данных + SNAME in varchar2, -- Наименование группы + SCAPTION in varchar2, -- Заголовок группы + BEXPANDABLE in boolean := false, -- Разрешить сокрытие/отображение дочерних + BEXPANDED in boolean := true, -- Отобразить/скрыть дочерние + BCLEAR in boolean := false -- Флаг очистки коллекции описаний групп таблицы данных (false - не очищать, true - очистить коллекцию перед добавлением) ); /* Добавление описания колонки к таблице данных */ - procedure TDATA_GRID_ADD_ROW + procedure TDG_ADD_ROW ( - RDATA_GRID in out nocopy TDATA_GRID, -- Описание таблицы данных - RROW in TROW, -- Строка - BCLEAR in boolean := false -- Флаг очистки коллекции строк таблицы данных (false - не очищать, true - очистить коллекцию перед добавлением) + RDATA_GRID in out nocopy TDG, -- Описание таблицы данных + RROW in TDG_ROW, -- Строка + BCLEAR in boolean := false -- Флаг очистки коллекции строк таблицы данных (false - не очищать, true - очистить коллекцию перед добавлением) ); /* Сериализация таблицы данных */ - function TDATA_GRID_TO_XML + function TDG_TO_XML ( - RDATA_GRID in TDATA_GRID, -- Описание таблицы данных + RDATA_GRID in TDG, -- Описание таблицы данных NINCLUDE_DEF in number := 1 -- Включить описание колонок (0 - нет, 1 - да) ) return clob; -- XML-описание /* Конвертация значений фильтра в число */ - procedure TFILTER_TO_NUMBER + procedure TDG_FILTER_TO_NUMBER ( - RFILTER in TFILTER, -- Фильтр - NFROM out number, -- Значение нижней границы диапазона - NTO out number -- Значение верхней границы диапазона + RFILTER in TDG_FILTER, -- Фильтр + NFROM out number, -- Значение нижней границы диапазона + NTO out number -- Значение верхней границы диапазона ); /* Конвертация значений фильтра в дату */ - procedure TFILTER_TO_DATE + procedure TDG_FILTER_TO_DATE ( - RFILTER in TFILTER, -- Фильтр - DFROM out date, -- Значение нижней границы диапазона - DTO out date -- Значение верхней границы диапазона + RFILTER in TDG_FILTER, -- Фильтр + DFROM out date, -- Значение нижней границы диапазона + DTO out date -- Значение верхней границы диапазона ); /* Поиск фильтра в коллекции */ - function TFILTERS_FIND + function TDG_FILTERS_FIND ( - RFILTERS in TFILTERS, -- Коллекция фильтров - SNAME in varchar2 -- Наименование - ) return TFILTER; -- Найденный фильтр (null - если не нашли) + RFILTERS in TDG_FILTERS, -- Коллекция фильтров + SNAME in varchar2 -- Наименование + ) return TDG_FILTER; -- Найденный фильтр (null - если не нашли) /* Десериализация фильтров */ - function TFILTERS_FROM_XML + function TDG_FILTERS_FROM_XML ( - CFILTERS in clob -- Сериализованное представление фильтров (BASE64(ИМЯЗНАЧЕНИЕЗНАЧЕНИЕ...)) - ) return TFILTERS; -- Результат работы + CFILTERS in clob -- Сериализованное представление фильтров (BASE64(ИМЯЗНАЧЕНИЕЗНАЧЕНИЕ...)) + ) return TDG_FILTERS; -- Результат работы /* Применение параметров фильтрации в запросе */ - procedure TFILTERS_SET_QUERY + procedure TDG_FILTERS_SET_QUERY ( NIDENT in number, -- Идентификатор отбора NCOMPANY in number, -- Рег. номер организации NPARENT in number := null, -- Рег. номер родителя SUNIT in varchar2, -- Код раздела SPROCEDURE in varchar2, -- Наименование серверной процедуры отбора - RDATA_GRID in TDATA_GRID, -- Описание таблицы данных - RFILTERS in TFILTERS -- Коллекция фильтров + RDATA_GRID in TDG, -- Описание таблицы данных + RFILTERS in TDG_FILTERS -- Коллекция фильтров ); /* Десериализация сортировок */ - function TORDERS_FROM_XML + function TDG_ORDERS_FROM_XML ( CORDERS in clob -- Сериализованное представление сотрировок (BASE64(ИМЯASC/DESC...)) - ) return TORDERS; -- Результат работы + ) return TDG_ORDERS; -- Результат работы /* Применение параметров сортировки в запросе */ - procedure TORDERS_SET_QUERY + procedure TDG_ORDERS_SET_QUERY ( - RDATA_GRID in TDATA_GRID, -- Описание таблицы - RORDERS in TORDERS, -- Коллекция сортировок + RDATA_GRID in TDG, -- Описание таблицы + RORDERS in TDG_ORDERS, -- Коллекция сортировок SPATTERN in varchar2, -- Шаблон для подстановки условий отбора в запрос CSQL in out nocopy clob -- Буфер запроса ); @@ -753,10 +753,7 @@ create or replace package PKG_P8PANELS_VISUAL as end PKG_P8PANELS_VISUAL; / create or replace package body PKG_P8PANELS_VISUAL as -/* -TODO: owner="root" created="18.10.2023" -text="Формат data_grid и gant как в chart" -*/ + /* Константы - тэги запросов */ SRQ_TAG_XROOT constant PKG_STD.TSTRING := 'XROOT'; -- Тэг для корня данных запроса SRQ_TAG_XFILTERS constant PKG_STD.TSTRING := 'filters'; -- Тэг для строк данных @@ -768,14 +765,10 @@ text="Формат data_grid и gant как в chart" /* Константы - тэги ответов */ SRESP_TAG_XDATA constant PKG_STD.TSTRING := 'XDATA'; -- Тэг для корня описания данных - SRESP_TAG_XROWS constant PKG_STD.TSTRING := 'XROWS'; -- Тэг для строк данных - SRESP_TAG_XCOLUMNS_DEF constant PKG_STD.TSTRING := 'XCOLUMNS_DEF'; -- Тэг для описания колонок - SRESP_TAG_XGROUPS constant PKG_STD.TSTRING := 'XGROUPS'; -- Тэг для описания групп - SRESP_TAG_XGANTT_DEF constant PKG_STD.TSTRING := 'XGANTT_DEF'; -- Тэг для описания заголовка диаграммы Ганта - SRESP_TAG_XGANTT_TASKS constant PKG_STD.TSTRING := 'XGANTT_TASKS'; -- Тэг для описания коллекции задач диаграммы Ганта SRESP_TAG_XCHART constant PKG_STD.TSTRING := 'XCHART'; -- Тэг для описания графика SRESP_TAG_XDATA_GRID constant PKG_STD.TSTRING := 'XDATA_GRID'; -- Тэг для описания таблицы данных - SRESP_TAG_XCYCLOGRAM constant PKG_STD.TSTRING := 'XCYCLOGRAM'; -- Тэг для описания заголовка циклограммы + SRESP_TAG_XCYCLOGRAM constant PKG_STD.TSTRING := 'XCYCLOGRAM'; -- Тэг для описания циклограммы + SRESP_TAG_XGANTT constant PKG_STD.TSTRING := 'XGANTT'; -- Тэг для описания диаграммы Ганта /* Константы - атрибуты ответов (универсальные) */ SRESP_ATTR_NAME constant PKG_STD.TSTRING := 'name'; -- Атрибут для наименования @@ -801,11 +794,13 @@ text="Формат data_grid и gant как в chart" SRESP_ATTR_FIXED_COLUMNS constant PKG_STD.TSTRING := 'fixedColumns'; -- Атрибут для количества фиксированных колонок SRESP_ATTR_WIDTH constant PKG_STD.TSTRING := 'width'; -- Атрибут для ширины SRESP_ATTR_HEIGHT constant PKG_STD.TSTRING := 'height'; -- Атрибут для высоты - SRESP_ATTR_GROUPS constant PKG_STD.TSTRING := 'groups'; -- Атрибут для групп SRESP_ATTR_COLUMNS constant PKG_STD.TSTRING := 'columns'; -- Атрибут для колонок SRESP_ATTR_TASKS constant PKG_STD.TSTRING := 'tasks'; -- Атрибут для задач SRESP_ATTR_HL_COLOR constant PKG_STD.TSTRING := 'highlightColor'; -- Атрибут для цвета подсветки SRESP_ATTR_ZOOM_BAR constant PKG_STD.TSTRING := 'zoomBar'; -- Атрибут для флага отображения панели масштаба + SRESP_ATTR_ROWS constant PKG_STD.TSTRING := 'rows'; -- Атрибут для строк данных + SRESP_ATTR_COLUMNS_DEF constant PKG_STD.TSTRING := 'columnsDef'; -- Атрибут для описания колонок + SRESP_ATTR_GROUPS constant PKG_STD.TSTRING := 'groups'; -- Атрибут для описания групп /* Константы - атрибуты ответов (таблица данных) */ SRESP_ATTR_DT_ORDER constant PKG_STD.TSTRING := 'order'; -- Атрибут для флага сортировки @@ -884,14 +879,14 @@ text="Формат data_grid и gant как в chart" end UTL_COND_NAME_MAKE_TO; /* Формирование значения */ - function TCOL_VAL_MAKE + function TDG_COL_VAL_MAKE ( SVALUE in varchar2, -- Значение (строка) NVALUE in number, -- Значение (число) DVALUE in date -- Значение (дата) - ) return TCOL_VAL -- Результат работы + ) return TDG_COL_VAL -- Результат работы is - RRES TCOL_VAL; -- Буфер для результата + RRES TDG_COL_VAL; -- Буфер для результата begin /* Формируем объект */ RRES.SVALUE := SVALUE; @@ -899,30 +894,30 @@ text="Формат data_grid и gant как в chart" RRES.DVALUE := DVALUE; /* Возвращаем результат */ return RRES; - end TCOL_VAL_MAKE; + end TDG_COL_VAL_MAKE; /* Добавление значения в коллекцию */ - procedure TCOL_VALS_ADD + procedure TDG_COL_VALS_ADD ( - RCOL_VALS in out nocopy TCOL_VALS, -- Коллекция значений - SVALUE in varchar2 := null, -- Значение (строка) - NVALUE in number := null, -- Значение (число) - DVALUE in date := null, -- Значение (дата) - BCLEAR in boolean := false -- Флаг очистки коллекции (false - не очищать, true - очистить коллекцию перед добавлением) + RCOL_VALS in out nocopy TDG_COL_VALS, -- Коллекция значений + SVALUE in varchar2 := null, -- Значение (строка) + NVALUE in number := null, -- Значение (число) + DVALUE in date := null, -- Значение (дата) + BCLEAR in boolean := false -- Флаг очистки коллекции (false - не очищать, true - очистить коллекцию перед добавлением) ) is begin /* Инициализируем коллекцию если необходимо */ if ((RCOL_VALS is null) or (BCLEAR)) then - RCOL_VALS := TCOL_VALS(); + RCOL_VALS := TDG_COL_VALS(); end if; /* Добавляем элемент */ RCOL_VALS.EXTEND(); - RCOL_VALS(RCOL_VALS.LAST) := TCOL_VAL_MAKE(SVALUE => SVALUE, NVALUE => NVALUE, DVALUE => DVALUE); - end TCOL_VALS_ADD; + RCOL_VALS(RCOL_VALS.LAST) := TDG_COL_VAL_MAKE(SVALUE => SVALUE, NVALUE => NVALUE, DVALUE => DVALUE); + end TDG_COL_VALS_ADD; /* Формирование описания колонки */ - function TCOL_DEF_MAKE + function TDG_COL_DEF_MAKE ( SNAME in varchar2, -- Наименование SCAPTION in varchar2, -- Заголовок @@ -932,15 +927,15 @@ text="Формат data_grid и gant как в chart" BVISIBLE in boolean := true, -- Разрешить отображение BORDER in boolean := false, -- Разрешить сортировку BFILTER in boolean := false, -- Разрешить отбор - RCOL_VALS in TCOL_VALS := null, -- Предопределённые значения + RCOL_VALS in TDG_COL_VALS := null, -- Предопределённые значения SHINT in varchar2 := null, -- Текст всплывающей подсказки SPARENT in varchar2 := null, -- Наименование родительской колонки BEXPANDABLE in boolean := false, -- Разрешить сокрытие/отображение дочерних колонок BEXPANDED in boolean := true, -- Отобразить/скрыть дочерние колонки NWIDTH in number := null -- Ширина колонки (обязательно для фиксированных) - ) return TCOL_DEF -- Результат работы + ) return TDG_COL_DEF -- Результат работы is - RRES TCOL_DEF; -- Буфер для результата + RRES TDG_COL_DEF; -- Буфер для результата begin /* Формируем объект */ RRES.SNAME := SNAME; @@ -951,7 +946,7 @@ text="Формат data_grid и gant как в chart" RRES.BVISIBLE := COALESCE(BVISIBLE, true); RRES.BORDER := COALESCE(BORDER, false); RRES.BFILTER := COALESCE(BFILTER, false); - RRES.RCOL_VALS := COALESCE(RCOL_VALS, TCOL_VALS()); + RRES.RCOL_VALS := COALESCE(RCOL_VALS, TDG_COL_VALS()); RRES.SHINT := SHINT; RRES.SPARENT := SPARENT; RRES.BEXPANDABLE := COALESCE(BEXPANDABLE, false); @@ -959,12 +954,12 @@ text="Формат data_grid и gant как в chart" RRES.NWIDTH := NWIDTH; /* Возвращаем результат */ return RRES; - end TCOL_DEF_MAKE; + end TDG_COL_DEF_MAKE; /* Добавление описания колонки в коллекцию */ - procedure TCOL_DEFS_ADD + procedure TDG_COL_DEFS_ADD ( - RCOL_DEFS in out nocopy TCOL_DEFS, -- Коллекция описаний колонок + RCOL_DEFS in out nocopy TDG_COL_DEFS, -- Коллекция описаний колонок SNAME in varchar2, -- Наименование SCAPTION in varchar2, -- Заголовок SDATA_TYPE in varchar2 := SDATA_TYPE_STR, -- Тип данных (см. константы SDATA_TYPE_*) @@ -973,7 +968,7 @@ text="Формат data_grid и gant как в chart" BVISIBLE in boolean := true, -- Разрешить отображение BORDER in boolean := false, -- Разрешить сортировку BFILTER in boolean := false, -- Разрешить отбор - RCOL_VALS in TCOL_VALS := null, -- Предопределённые значения + RCOL_VALS in TDG_COL_VALS := null, -- Предопределённые значения SHINT in varchar2 := null, -- Текст всплывающей подсказки SPARENT in varchar2 := null, -- Наименование родительской колонки BEXPANDABLE in boolean := false, -- Разрешить сокрытие/отображение дочерних колонок @@ -985,32 +980,32 @@ text="Формат data_grid и gant как в chart" begin /* Инициализируем коллекцию если необходимо */ if ((RCOL_DEFS is null) or (BCLEAR)) then - RCOL_DEFS := TCOL_DEFS(); + RCOL_DEFS := TDG_COL_DEFS(); end if; /* Добавляем элемент */ RCOL_DEFS.EXTEND(); - RCOL_DEFS(RCOL_DEFS.LAST) := TCOL_DEF_MAKE(SNAME => SNAME, - SCAPTION => SCAPTION, - SDATA_TYPE => SDATA_TYPE, - SCOND_FROM => SCOND_FROM, - SCOND_TO => SCOND_TO, - BVISIBLE => BVISIBLE, - BORDER => BORDER, - BFILTER => BFILTER, - RCOL_VALS => RCOL_VALS, - SHINT => SHINT, - SPARENT => SPARENT, - BEXPANDABLE => BEXPANDABLE, - BEXPANDED => BEXPANDED, - NWIDTH => NWIDTH); - end TCOL_DEFS_ADD; + RCOL_DEFS(RCOL_DEFS.LAST) := TDG_COL_DEF_MAKE(SNAME => SNAME, + SCAPTION => SCAPTION, + SDATA_TYPE => SDATA_TYPE, + SCOND_FROM => SCOND_FROM, + SCOND_TO => SCOND_TO, + BVISIBLE => BVISIBLE, + BORDER => BORDER, + BFILTER => BFILTER, + RCOL_VALS => RCOL_VALS, + SHINT => SHINT, + SPARENT => SPARENT, + BEXPANDABLE => BEXPANDABLE, + BEXPANDED => BEXPANDED, + NWIDTH => NWIDTH); + end TDG_COL_DEFS_ADD; /* Поиск описания колонки по наименованию */ - function TCOL_DEFS_FIND + function TDG_COL_DEFS_FIND ( - RCOL_DEFS in TCOL_DEFS, -- Описание колонок таблицы данных - SNAME in varchar2 -- Наименование - ) return TCOL_DEF -- Найденное описание (null - если не нашли) + RCOL_DEFS in TDG_COL_DEFS, -- Описание колонок таблицы данных + SNAME in varchar2 -- Наименование + ) return TDG_COL_DEF -- Найденное описание (null - если не нашли) is begin /* Обходим колонки из коллекции описаний */ @@ -1024,12 +1019,12 @@ text="Формат data_grid и gant как в chart" end if; /* Ничего не нашли */ return null; - end TCOL_DEFS_FIND; + end TDG_COL_DEFS_FIND; /* Сериализация описания колонок таблицы данных */ - procedure TCOL_DEFS_TO_XML + procedure TDG_COL_DEFS_TO_XML ( - RCOL_DEFS in TCOL_DEFS -- Описание колонок таблицы данных + RCOL_DEFS in TDG_COL_DEFS -- Описание колонок таблицы данных ) is begin @@ -1038,7 +1033,7 @@ text="Формат data_grid и gant как в chart" for I in RCOL_DEFS.FIRST .. RCOL_DEFS.LAST loop /* Открываем описание колонки */ - PKG_XFAST.DOWN_NODE(SNAME => SRESP_TAG_XCOLUMNS_DEF); + PKG_XFAST.DOWN_NODE(SNAME => SRESP_ATTR_COLUMNS_DEF); /* Атрибуты колонки */ PKG_XFAST.ATTR(SNAME => SRESP_ATTR_NAME, SVALUE => RCOL_DEFS(I).SNAME); PKG_XFAST.ATTR(SNAME => SRESP_ATTR_CAPTION, SVALUE => RCOL_DEFS(I).SCAPTION); @@ -1081,57 +1076,57 @@ text="Формат data_grid и gant как в chart" PKG_XFAST.UP(); end loop; end if; - end TCOL_DEFS_TO_XML; + end TDG_COL_DEFS_TO_XML; /* Формирование колонки */ - function TCOL_MAKE + function TDG_COL_MAKE ( SNAME in varchar2, -- Наименование колонки SVALUE in varchar2 := null, -- Значение (строка) NVALUE in number := null, -- Значение (число) DVALUE in date := null -- Значение (дата) - ) return TCOL -- Результат работы + ) return TDG_COL -- Результат работы is - RRES TCOL; -- Буфер для результата + RRES TDG_COL; -- Буфер для результата begin /* Формируем объект */ RRES.SNAME := SNAME; - RRES.RCOL_VAL := TCOL_VAL_MAKE(SVALUE => SVALUE, NVALUE => NVALUE, DVALUE => DVALUE); + RRES.RCOL_VAL := TDG_COL_VAL_MAKE(SVALUE => SVALUE, NVALUE => NVALUE, DVALUE => DVALUE); /* Возвращаем результат */ return RRES; - end TCOL_MAKE; + end TDG_COL_MAKE; /* Добавление колонки в коллекцию */ - procedure TCOLS_ADD + procedure TDG_COLS_ADD ( - RCOLS in out nocopy TCOLS, -- Коллекция колонок - SNAME in varchar2, -- Наименование колонки - SVALUE in varchar2 := null, -- Значение (строка) - NVALUE in number := null, -- Значение (число) - DVALUE in date := null, -- Значение (дата) - BCLEAR in boolean := false -- Флаг очистки коллекции (false - не очищать, true - очистить коллекцию перед добавлением) + RCOLS in out nocopy TDG_COLS, -- Коллекция колонок + SNAME in varchar2, -- Наименование колонки + SVALUE in varchar2 := null, -- Значение (строка) + NVALUE in number := null, -- Значение (число) + DVALUE in date := null, -- Значение (дата) + BCLEAR in boolean := false -- Флаг очистки коллекции (false - не очищать, true - очистить коллекцию перед добавлением) ) is begin /* Инициализируем коллекцию если необходимо */ if ((RCOLS is null) or (BCLEAR)) then - RCOLS := TCOLS(); + RCOLS := TDG_COLS(); end if; /* Добавляем элемент */ RCOLS.EXTEND(); - RCOLS(RCOLS.LAST) := TCOL_MAKE(SNAME => SNAME, SVALUE => SVALUE, NVALUE => NVALUE, DVALUE => DVALUE); - end TCOLS_ADD; + RCOLS(RCOLS.LAST) := TDG_COL_MAKE(SNAME => SNAME, SVALUE => SVALUE, NVALUE => NVALUE, DVALUE => DVALUE); + end TDG_COLS_ADD; /* Формирование описания группы */ - function TGROUP_MAKE + function TDG_GROUP_MAKE ( SNAME in varchar2, -- Наименование SCAPTION in varchar2, -- Заголовок BEXPANDABLE in boolean := true, -- Разрешить сокрытие/отображение дочерних BEXPANDED in boolean := true -- Отобразить/скрыть дочерние - ) return TGROUP -- Результат работы + ) return TDG_GROUP -- Результат работы is - RRES TGROUP; -- Буфер для результата + RRES TDG_GROUP; -- Буфер для результата begin /* Формируем объект */ RRES.SNAME := SNAME; @@ -1140,24 +1135,24 @@ text="Формат data_grid и gant как в chart" RRES.BEXPANDED := COALESCE(BEXPANDED, true); /* Возвращаем результат */ return RRES; - end TGROUP_MAKE; + end TDG_GROUP_MAKE; /* Добавление описания группы в коллекцию */ - procedure TGROUPS_ADD + procedure TDG_GROUPS_ADD ( - RGROUPS in out nocopy TGROUPS, -- Коллекция описаний колонок - SNAME in varchar2, -- Наименование - SCAPTION in varchar2, -- Заголовок - BEXPANDABLE in boolean := false, -- Разрешить сокрытие/отображение дочерних - BEXPANDED in boolean := true, -- Отобразить/скрыть дочерние - BCLEAR in boolean := false -- Флаг очистки коллекции (false - не очищать, true - очистить коллекцию перед добавлением) + RGROUPS in out nocopy TDG_GROUPS, -- Коллекция описаний колонок + SNAME in varchar2, -- Наименование + SCAPTION in varchar2, -- Заголовок + BEXPANDABLE in boolean := false, -- Разрешить сокрытие/отображение дочерних + BEXPANDED in boolean := true, -- Отобразить/скрыть дочерние + BCLEAR in boolean := false -- Флаг очистки коллекции (false - не очищать, true - очистить коллекцию перед добавлением) ) is - BFND boolean := false; -- Флаг наличия группы в коллекции + BFND boolean := false; -- Флаг наличия группы в коллекции begin /* Инициализируем коллекцию если необходимо */ if ((RGROUPS is null) or (BCLEAR)) then - RGROUPS := TGROUPS(); + RGROUPS := TDG_GROUPS(); end if; /* Проверим наличие */ if (RGROUPS.COUNT > 0) then @@ -1166,10 +1161,10 @@ text="Формат data_grid и gant как в chart" if (RGROUPS(I).SNAME = SNAME) then /* Элемент найден - обновим */ BFND := true; - RGROUPS(I) := TGROUP_MAKE(SNAME => SNAME, - SCAPTION => SCAPTION, - BEXPANDABLE => BEXPANDABLE, - BEXPANDED => BEXPANDED); + RGROUPS(I) := TDG_GROUP_MAKE(SNAME => SNAME, + SCAPTION => SCAPTION, + BEXPANDABLE => BEXPANDABLE, + BEXPANDED => BEXPANDED); exit; end if; end loop; @@ -1177,17 +1172,17 @@ text="Формат data_grid и gant как в chart" /* Добавляем элемент если такого нет */ if (not BFND) then RGROUPS.EXTEND(); - RGROUPS(RGROUPS.LAST) := TGROUP_MAKE(SNAME => SNAME, - SCAPTION => SCAPTION, - BEXPANDABLE => BEXPANDABLE, - BEXPANDED => BEXPANDED); + RGROUPS(RGROUPS.LAST) := TDG_GROUP_MAKE(SNAME => SNAME, + SCAPTION => SCAPTION, + BEXPANDABLE => BEXPANDABLE, + BEXPANDED => BEXPANDED); end if; - end TGROUPS_ADD; + end TDG_GROUPS_ADD; /* Сериализация описания групп таблицы данных */ - procedure TGROUPS_TO_XML + procedure TDG_GROUPS_TO_XML ( - RGROUPS in TGROUPS -- Описание групп таблицы данных + RGROUPS in TDG_GROUPS -- Описание групп таблицы данных ) is begin @@ -1196,7 +1191,7 @@ text="Формат data_grid и gant как в chart" for I in RGROUPS.FIRST .. RGROUPS.LAST loop /* Открываем описание группы */ - PKG_XFAST.DOWN_NODE(SNAME => SRESP_TAG_XGROUPS); + PKG_XFAST.DOWN_NODE(SNAME => SRESP_ATTR_GROUPS); /* Атрибуты группы */ PKG_XFAST.ATTR(SNAME => SRESP_ATTR_NAME, SVALUE => RGROUPS(I).SNAME); PKG_XFAST.ATTR(SNAME => SRESP_ATTR_CAPTION, SVALUE => RGROUPS(I).SCAPTION); @@ -1206,109 +1201,129 @@ text="Формат data_grid и gant как в chart" PKG_XFAST.UP(); end loop; end if; - end TGROUPS_TO_XML; + end TDG_GROUPS_TO_XML; /* Формирование строки */ - function TROW_MAKE + function TDG_ROW_MAKE ( SGROUP in varchar2 := null -- Наименование группы ) - return TROW -- Результат работы + return TDG_ROW -- Результат работы is - RRES TROW; -- Буфер для результата + RRES TDG_ROW; -- Буфер для результата begin /* Формируем объект */ RRES.SGROUP := SGROUP; - RRES.RCOLS := TCOLS(); + RRES.RCOLS := TDG_COLS(); /* Возвращаем результат */ return RRES; - end TROW_MAKE; + end TDG_ROW_MAKE; /* Добавление колонки к строке */ - procedure TROW_ADD_COL + procedure TDG_ROW_ADD_COL ( - RROW in out nocopy TROW, -- Строка - SNAME in varchar2, -- Наименование колонки - SVALUE in varchar2 := null, -- Значение (строка) - NVALUE in number := null, -- Значение (число) - DVALUE in date := null, -- Значение (дата) - BCLEAR in boolean := false -- Флаг очистки коллекции (false - не очищать, true - очистить коллекцию перед добавлением) + RROW in out nocopy TDG_ROW, -- Строка + SNAME in varchar2, -- Наименование колонки + SVALUE in varchar2 := null, -- Значение (строка) + NVALUE in number := null, -- Значение (число) + DVALUE in date := null, -- Значение (дата) + BCLEAR in boolean := false -- Флаг очистки коллекции (false - не очищать, true - очистить коллекцию перед добавлением) ) is begin /* Сформируем колонку и добавим её к коллекции колонок строки */ - TCOLS_ADD(RCOLS => RROW.RCOLS, SNAME => SNAME, SVALUE => SVALUE, NVALUE => NVALUE, DVALUE => DVALUE, BCLEAR => BCLEAR); - end TROW_ADD_COL; + TDG_COLS_ADD(RCOLS => RROW.RCOLS, + SNAME => SNAME, + SVALUE => SVALUE, + NVALUE => NVALUE, + DVALUE => DVALUE, + BCLEAR => BCLEAR); + end TDG_ROW_ADD_COL; /* Добавление строковой колонки к строке из курсора динамического запроса */ - procedure TROW_ADD_CUR_COLS + procedure TDG_ROW_ADD_CUR_COLS ( - RROW in out nocopy TROW, -- Строка - SNAME in varchar2, -- Наименование колонки - ICURSOR in integer, -- Курсор - NPOSITION in number, -- Номер колонки в курсоре - BCLEAR in boolean := false -- Флаг очистки коллекции (false - не очищать, true - очистить коллекцию перед добавлением) + RROW in out nocopy TDG_ROW, -- Строка + SNAME in varchar2, -- Наименование колонки + ICURSOR in integer, -- Курсор + NPOSITION in number, -- Номер колонки в курсоре + BCLEAR in boolean := false -- Флаг очистки коллекции (false - не очищать, true - очистить коллекцию перед добавлением) ) is - SVALUE PKG_STD.TLSTRING; -- Буфер для значения курсора + SVALUE PKG_STD.TLSTRING; -- Буфер для значения курсора begin /* Читаем данные из курсора */ PKG_SQL_DML.COLUMN_VALUE_STR(ICURSOR => ICURSOR, IPOSITION => NPOSITION, SVALUE => SVALUE); /* Сформируем колонку и добавим её к коллекции колонок строки */ - TCOLS_ADD(RCOLS => RROW.RCOLS, SNAME => SNAME, SVALUE => SVALUE, NVALUE => null, DVALUE => null, BCLEAR => BCLEAR); - end TROW_ADD_CUR_COLS; + TDG_COLS_ADD(RCOLS => RROW.RCOLS, + SNAME => SNAME, + SVALUE => SVALUE, + NVALUE => null, + DVALUE => null, + BCLEAR => BCLEAR); + end TDG_ROW_ADD_CUR_COLS; /* Добавление числовой колонки к строке из курсора динамического запроса */ - procedure TROW_ADD_CUR_COLN + procedure TDG_ROW_ADD_CUR_COLN ( - RROW in out nocopy TROW, -- Строка - SNAME in varchar2, -- Наименование колонки - ICURSOR in integer, -- Курсор - NPOSITION in number, -- Номер колонки в курсоре - BCLEAR in boolean := false -- Флаг очистки коллекции (false - не очищать, true - очистить коллекцию перед добавлением) + RROW in out nocopy TDG_ROW, -- Строка + SNAME in varchar2, -- Наименование колонки + ICURSOR in integer, -- Курсор + NPOSITION in number, -- Номер колонки в курсоре + BCLEAR in boolean := false -- Флаг очистки коллекции (false - не очищать, true - очистить коллекцию перед добавлением) ) is - NVALUE PKG_STD.TLNUMBER; -- Буфер для значения курсора + NVALUE PKG_STD.TLNUMBER; -- Буфер для значения курсора begin /* Читаем данные из курсора */ PKG_SQL_DML.COLUMN_VALUE_NUM(ICURSOR => ICURSOR, IPOSITION => NPOSITION, NVALUE => NVALUE); /* Сформируем колонку и добавим её к коллекции колонок строки */ - TCOLS_ADD(RCOLS => RROW.RCOLS, SNAME => SNAME, SVALUE => null, NVALUE => NVALUE, DVALUE => null, BCLEAR => BCLEAR); - end TROW_ADD_CUR_COLN; + TDG_COLS_ADD(RCOLS => RROW.RCOLS, + SNAME => SNAME, + SVALUE => null, + NVALUE => NVALUE, + DVALUE => null, + BCLEAR => BCLEAR); + end TDG_ROW_ADD_CUR_COLN; /* Добавление колонки типа "дата" к строке из курсора динамического запроса */ - procedure TROW_ADD_CUR_COLD + procedure TDG_ROW_ADD_CUR_COLD ( - RROW in out nocopy TROW, -- Строка - SNAME in varchar2, -- Наименование колонки - ICURSOR in integer, -- Курсор - NPOSITION in number, -- Номер колонки в курсоре - BCLEAR in boolean := false -- Флаг очистки коллекции (false - не очищать, true - очистить коллекцию перед добавлением) + RROW in out nocopy TDG_ROW, -- Строка + SNAME in varchar2, -- Наименование колонки + ICURSOR in integer, -- Курсор + NPOSITION in number, -- Номер колонки в курсоре + BCLEAR in boolean := false -- Флаг очистки коллекции (false - не очищать, true - очистить коллекцию перед добавлением) ) is - DVALUE PKG_STD.TLDATE; -- Буфер для значения курсора + DVALUE PKG_STD.TLDATE; -- Буфер для значения курсора begin /* Читаем данные из курсора */ PKG_SQL_DML.COLUMN_VALUE_DATE(ICURSOR => ICURSOR, IPOSITION => NPOSITION, DVALUE => DVALUE); /* Сформируем колонку и добавим её к коллекции колонок строки */ - TCOLS_ADD(RCOLS => RROW.RCOLS, SNAME => SNAME, SVALUE => null, NVALUE => null, DVALUE => DVALUE, BCLEAR => BCLEAR); - end TROW_ADD_CUR_COLD; + TDG_COLS_ADD(RCOLS => RROW.RCOLS, + SNAME => SNAME, + SVALUE => null, + NVALUE => null, + DVALUE => DVALUE, + BCLEAR => BCLEAR); + end TDG_ROW_ADD_CUR_COLD; /* Сериализация строки данных таблицы данных */ - procedure TROWS_TO_XML + procedure TDG_ROWS_TO_XML ( - RCOL_DEFS in TCOL_DEFS, -- Описание колонок таблицы данных - RROWS in TROWS -- Строки таблицы данных + RCOL_DEFS in TDG_COL_DEFS, -- Описание колонок таблицы данных + RROWS in TDG_ROWS -- Строки таблицы данных ) is - RCOL_DEF TCOL_DEF; -- Описание текущей сериализуемой колонки + RCOL_DEF TDG_COL_DEF; -- Описание текущей сериализуемой колонки begin /* Обходим строки из коллекции */ if ((RROWS is not null) and (RROWS.COUNT > 0)) then for I in RROWS.FIRST .. RROWS.LAST loop /* Открываем строку */ - PKG_XFAST.DOWN_NODE(SNAME => SRESP_TAG_XROWS); + PKG_XFAST.DOWN_NODE(SNAME => SRESP_ATTR_ROWS); /* Если указана группа - добавим её */ if (RROWS(I).SGROUP is not null) then PKG_XFAST.ATTR(SNAME => SRESP_ATTR_GROUP_NAME, SVALUE => RROWS(I).SGROUP); @@ -1318,7 +1333,7 @@ text="Формат data_grid и gant как в chart" for J in RROWS(I).RCOLS.FIRST .. RROWS(I).RCOLS.LAST loop /* Найдём описание колонки */ - RCOL_DEF := TCOL_DEFS_FIND(RCOL_DEFS => RCOL_DEFS, SNAME => RROWS(I).RCOLS(J).SNAME); + RCOL_DEF := TDG_COL_DEFS_FIND(RCOL_DEFS => RCOL_DEFS, SNAME => RROWS(I).RCOLS(J).SNAME); if (RCOL_DEF.SNAME is null) then P_EXCEPTION(0, 'Описание колонки "%s" таблицы данных не определено.', @@ -1344,42 +1359,42 @@ text="Формат data_grid и gant как в chart" PKG_XFAST.UP(); end loop; end if; - end TROWS_TO_XML; + end TDG_ROWS_TO_XML; /* Формирование таблицы данных */ - function TDATA_GRID_MAKE + function TDG_MAKE ( BFIXED_HEADER in boolean := false, -- Зафиксировать заголовок NFIXED_COLUMNS in number := 0 -- Количество фиксированных колонок - ) return TDATA_GRID -- Результат работы + ) return TDG -- Результат работы is - RRES TDATA_GRID; -- Буфер для результата + RRES TDG; -- Буфер для результата begin /* Формируем объект */ RRES.BFIXED_HEADER := COALESCE(BFIXED_HEADER, false); RRES.NFIXED_COLUMNS := COALESCE(NFIXED_COLUMNS, 0); - RRES.RCOL_DEFS := TCOL_DEFS(); - RRES.RGROUPS := TGROUPS(); - RRES.RROWS := TROWS(); + RRES.RCOL_DEFS := TDG_COL_DEFS(); + RRES.RGROUPS := TDG_GROUPS(); + RRES.RROWS := TDG_ROWS(); /* Возвращаем результат */ return RRES; - end TDATA_GRID_MAKE; + end TDG_MAKE; /* Поиск описания колонки в таблице данных по наименованию */ - function TDATA_GRID_FIND_COL_DEF + function TDG_FIND_COL_DEF ( - RDATA_GRID in TDATA_GRID, -- Описание таблицы данных - SNAME in varchar2 -- Наименование колонки - ) return TCOL_DEF -- Найденное описание (null - если не нашли) + RDATA_GRID in TDG, -- Описание таблицы данных + SNAME in varchar2 -- Наименование колонки + ) return TDG_COL_DEF -- Найденное описание (null - если не нашли) is begin - return TCOL_DEFS_FIND(RCOL_DEFS => RDATA_GRID.RCOL_DEFS, SNAME => SNAME); - end TDATA_GRID_FIND_COL_DEF; + return TDG_COL_DEFS_FIND(RCOL_DEFS => RDATA_GRID.RCOL_DEFS, SNAME => SNAME); + end TDG_FIND_COL_DEF; /* Добавление описания колонки к таблице данных */ - procedure TDATA_GRID_ADD_COL_DEF + procedure TDG_ADD_COL_DEF ( - RDATA_GRID in out nocopy TDATA_GRID, -- Описание таблицы данных + RDATA_GRID in out nocopy TDG, -- Описание таблицы данных SNAME in varchar2, -- Наименование колонки SCAPTION in varchar2, -- Заголовок колонки SDATA_TYPE in varchar2 := SDATA_TYPE_STR, -- Тип данных колонки (см. константы SDATA_TYPE_*) @@ -1388,7 +1403,7 @@ text="Формат data_grid и gant как в chart" BVISIBLE in boolean := true, -- Разрешить отображение BORDER in boolean := false, -- Разрешить сортировку по колонке BFILTER in boolean := false, -- Разрешить отбор по колонке - RCOL_VALS in TCOL_VALS := null, -- Предопределённые значения колонки + RCOL_VALS in TDG_COL_VALS := null, -- Предопределённые значения колонки SHINT in varchar2 := null, -- Текст всплывающей подсказки SPARENT in varchar2 := null, -- Наименование родительской колонки BEXPANDABLE in boolean := false, -- Разрешить сокрытие/отображение дочерних колонок @@ -1399,79 +1414,79 @@ text="Формат data_grid и gant как в chart" is begin /* Формируем описание и добавляем в коллекцию таблицы данных */ - TCOL_DEFS_ADD(RCOL_DEFS => RDATA_GRID.RCOL_DEFS, - SNAME => SNAME, - SCAPTION => SCAPTION, - SDATA_TYPE => SDATA_TYPE, - SCOND_FROM => SCOND_FROM, - SCOND_TO => SCOND_TO, - BVISIBLE => BVISIBLE, - BORDER => BORDER, - BFILTER => BFILTER, - RCOL_VALS => RCOL_VALS, - SHINT => SHINT, - SPARENT => SPARENT, - BEXPANDABLE => BEXPANDABLE, - BEXPANDED => BEXPANDED, - NWIDTH => NWIDTH, - BCLEAR => BCLEAR); - end TDATA_GRID_ADD_COL_DEF; + TDG_COL_DEFS_ADD(RCOL_DEFS => RDATA_GRID.RCOL_DEFS, + SNAME => SNAME, + SCAPTION => SCAPTION, + SDATA_TYPE => SDATA_TYPE, + SCOND_FROM => SCOND_FROM, + SCOND_TO => SCOND_TO, + BVISIBLE => BVISIBLE, + BORDER => BORDER, + BFILTER => BFILTER, + RCOL_VALS => RCOL_VALS, + SHINT => SHINT, + SPARENT => SPARENT, + BEXPANDABLE => BEXPANDABLE, + BEXPANDED => BEXPANDED, + NWIDTH => NWIDTH, + BCLEAR => BCLEAR); + end TDG_ADD_COL_DEF; /* Добавление описания группы к таблице данных */ - procedure TDATA_GRID_ADD_GROUP + procedure TDG_ADD_GROUP ( - RDATA_GRID in out nocopy TDATA_GRID, -- Описание таблицы данных - SNAME in varchar2, -- Наименование группы - SCAPTION in varchar2, -- Заголовок группы - BEXPANDABLE in boolean := false, -- Разрешить сокрытие/отображение дочерних - BEXPANDED in boolean := true, -- Отобразить/скрыть дочерние - BCLEAR in boolean := false -- Флаг очистки коллекции описаний групп таблицы данных (false - не очищать, true - очистить коллекцию перед добавлением) + RDATA_GRID in out nocopy TDG, -- Описание таблицы данных + SNAME in varchar2, -- Наименование группы + SCAPTION in varchar2, -- Заголовок группы + BEXPANDABLE in boolean := false, -- Разрешить сокрытие/отображение дочерних + BEXPANDED in boolean := true, -- Отобразить/скрыть дочерние + BCLEAR in boolean := false -- Флаг очистки коллекции описаний групп таблицы данных (false - не очищать, true - очистить коллекцию перед добавлением) ) is begin /* Формируем описание и добавляем в коллекцию таблицы данных */ - TGROUPS_ADD(RGROUPS => RDATA_GRID.RGROUPS, - SNAME => SNAME, - SCAPTION => SCAPTION, - BEXPANDABLE => BEXPANDABLE, - BEXPANDED => BEXPANDED, - BCLEAR => BCLEAR); - end TDATA_GRID_ADD_GROUP; + TDG_GROUPS_ADD(RGROUPS => RDATA_GRID.RGROUPS, + SNAME => SNAME, + SCAPTION => SCAPTION, + BEXPANDABLE => BEXPANDABLE, + BEXPANDED => BEXPANDED, + BCLEAR => BCLEAR); + end TDG_ADD_GROUP; /* Добавление описания колонки к таблице данных */ - procedure TDATA_GRID_ADD_ROW + procedure TDG_ADD_ROW ( - RDATA_GRID in out nocopy TDATA_GRID, -- Описание таблицы данных - RROW in TROW, -- Строка - BCLEAR in boolean := false -- Флаг очистки коллекции строк таблицы данных (false - не очищать, true - очистить коллекцию перед добавлением) + RDATA_GRID in out nocopy TDG, -- Описание таблицы данных + RROW in TDG_ROW, -- Строка + BCLEAR in boolean := false -- Флаг очистки коллекции строк таблицы данных (false - не очищать, true - очистить коллекцию перед добавлением) ) is begin /* Инициализируем коллекцию если необходимо */ if ((RDATA_GRID.RROWS is null) or (BCLEAR)) then - RDATA_GRID.RROWS := TROWS(); + RDATA_GRID.RROWS := TDG_ROWS(); end if; /* Добавляем элемент */ RDATA_GRID.RROWS.EXTEND(); RDATA_GRID.RROWS(RDATA_GRID.RROWS.LAST) := RROW; - end TDATA_GRID_ADD_ROW; + end TDG_ADD_ROW; /* Сериализация описания таблицы данных */ - procedure TDATA_GRID_DEF_TO_XML + procedure TDG_DEF_TO_XML ( - RDATA_GRID in TDATA_GRID -- Описание таблицы данных + RDATA_GRID in TDG -- Описание таблицы данных ) is begin /* Cтатические атрибуты заголовка */ PKG_XFAST.ATTR(SNAME => SRESP_ATTR_FIXED_HEADER, BVALUE => RDATA_GRID.BFIXED_HEADER); PKG_XFAST.ATTR(SNAME => SRESP_ATTR_FIXED_COLUMNS, NVALUE => RDATA_GRID.NFIXED_COLUMNS); - end TDATA_GRID_DEF_TO_XML; + end TDG_DEF_TO_XML; /* Сериализация таблицы данных */ - function TDATA_GRID_TO_XML + function TDG_TO_XML ( - RDATA_GRID in TDATA_GRID, -- Описание таблицы данных + RDATA_GRID in TDG, -- Описание таблицы данных NINCLUDE_DEF in number := 1 -- Включить описание колонок (0 - нет, 1 - да) ) return clob -- XML-описание is @@ -1484,17 +1499,17 @@ text="Формат data_grid и gant как в chart" /* Открываем таблицу данных */ PKG_XFAST.DOWN_NODE(SNAME => SRESP_TAG_XDATA_GRID); /* Формируем описание таблицы данных */ - TDATA_GRID_DEF_TO_XML(RDATA_GRID => RDATA_GRID); - /* Закрываем таблицу данных */ - PKG_XFAST.UP(); + TDG_DEF_TO_XML(RDATA_GRID => RDATA_GRID); /* Если необходимо включить описание колонок */ if (NINCLUDE_DEF = 1) then - TCOL_DEFS_TO_XML(RCOL_DEFS => RDATA_GRID.RCOL_DEFS); + TDG_COL_DEFS_TO_XML(RCOL_DEFS => RDATA_GRID.RCOL_DEFS); end if; /* Формируем описание групп */ - TGROUPS_TO_XML(RGROUPS => RDATA_GRID.RGROUPS); + TDG_GROUPS_TO_XML(RGROUPS => RDATA_GRID.RGROUPS); /* Формируем описание строк */ - TROWS_TO_XML(RCOL_DEFS => RDATA_GRID.RCOL_DEFS, RROWS => RDATA_GRID.RROWS); + TDG_ROWS_TO_XML(RCOL_DEFS => RDATA_GRID.RCOL_DEFS, RROWS => RDATA_GRID.RROWS); + /* Закрываем таблицу данных */ + PKG_XFAST.UP(); /* Закрываем корень */ PKG_XFAST.UP(); /* Сериализуем */ @@ -1510,14 +1525,14 @@ text="Формат data_grid и gant как в chart" /* Вернем ошибку */ PKG_STATE.DIAGNOSTICS_STACKED(); P_EXCEPTION(0, PKG_STATE.SQL_ERRM()); - end TDATA_GRID_TO_XML; + end TDG_TO_XML; /* Конвертация значений фильтра в число */ - procedure TFILTER_TO_NUMBER + procedure TDG_FILTER_TO_NUMBER ( - RFILTER in TFILTER, -- Фильтр - NFROM out number, -- Значение нижней границы диапазона - NTO out number -- Значение верхней границы диапазона + RFILTER in TDG_FILTER, -- Фильтр + NFROM out number, -- Значение нижней границы диапазона + NTO out number -- Значение верхней границы диапазона ) is begin @@ -1543,14 +1558,14 @@ text="Формат data_grid и gant как в chart" RFILTER.STO); end; end if; - end TFILTER_TO_NUMBER; + end TDG_FILTER_TO_NUMBER; /* Конвертация значений фильтра в дату */ - procedure TFILTER_TO_DATE + procedure TDG_FILTER_TO_DATE ( - RFILTER in TFILTER, -- Фильтр - DFROM out date, -- Значение нижней границы диапазона - DTO out date -- Значение верхней границы диапазона + RFILTER in TDG_FILTER, -- Фильтр + DFROM out date, -- Значение нижней границы диапазона + DTO out date -- Значение верхней границы диапазона ) is begin @@ -1576,17 +1591,17 @@ text="Формат data_grid и gant как в chart" RFILTER.STO); end; end if; - end TFILTER_TO_DATE; + end TDG_FILTER_TO_DATE; /* Формирование фильтра */ - function TFILTER_MAKE + function TDG_FILTER_MAKE ( SNAME in varchar2, -- Наименование SFROM in varchar2, -- Значение "с" STO in varchar2 -- Значение "по" - ) return TFILTER -- Результат работы + ) return TDG_FILTER -- Результат работы is - RRES TFILTER; -- Буфер для результата + RRES TDG_FILTER; -- Буфер для результата begin /* Формируем объект */ RRES.SNAME := SNAME; @@ -1594,14 +1609,14 @@ text="Формат data_grid и gant как в chart" RRES.STO := STO; /* Возвращаем результат */ return RRES; - end TFILTER_MAKE; + end TDG_FILTER_MAKE; /* Поиск фильтра в коллекции */ - function TFILTERS_FIND + function TDG_FILTERS_FIND ( - RFILTERS in TFILTERS, -- Коллекция фильтров - SNAME in varchar2 -- Наименование - ) return TFILTER -- Найденный фильтр (null - если не нашли) + RFILTERS in TDG_FILTERS, -- Коллекция фильтров + SNAME in varchar2 -- Наименование + ) return TDG_FILTER -- Найденный фильтр (null - если не нашли) is begin /* Обходим фильтры из коллекции */ @@ -1615,22 +1630,22 @@ text="Формат data_grid и gant как в chart" end if; /* Ничего не нашли */ return null; - end TFILTERS_FIND; + end TDG_FILTERS_FIND; /* Десериализация фильтров */ - function TFILTERS_FROM_XML + function TDG_FILTERS_FROM_XML ( CFILTERS in clob -- Сериализованное представление фильтров (BASE64(ИМЯЗНАЧЕНИЕЗНАЧЕНИЕ...)) - ) return TFILTERS -- Результат работы + ) return TDG_FILTERS -- Результат работы is - RFILTERS TFILTERS; -- Буфер для результата работы + RFILTERS TDG_FILTERS; -- Буфер для результата работы XDOC PKG_XPATH.TDOCUMENT; -- Документ XML XROOT PKG_XPATH.TNODE; -- Корень документа XML XNODE PKG_XPATH.TNODE; -- Буфер узла документа XNODES PKG_XPATH.TNODES; -- Буфер коллекции узлов документа begin /* Вернём выходную коллекцию */ - RFILTERS := TFILTERS(); + RFILTERS := TDG_FILTERS(); /* Разбираем XML */ XDOC := PKG_XPATH.PARSE_FROM_CLOB(LCXML => '<' || SRQ_TAG_XROOT || '>' || BLOB2CLOB(LBDATA => BASE64_DECODE(LCSRCE => CFILTERS), @@ -1647,9 +1662,9 @@ text="Формат data_grid и gant как в chart" XNODE := PKG_XPATH.ITEM_NODE(RNODES => XNODES, INUMBER => I); /* Добавим его в коллекцию */ RFILTERS.EXTEND(); - RFILTERS(RFILTERS.LAST) := TFILTER_MAKE(SNAME => PKG_XPATH.VALUE(RNODE => XNODE, SPATTERN => SRQ_TAG_SNAME), - SFROM => PKG_XPATH.VALUE(RNODE => XNODE, SPATTERN => SRQ_TAG_SFROM), - STO => PKG_XPATH.VALUE(RNODE => XNODE, SPATTERN => SRQ_TAG_STO)); + RFILTERS(RFILTERS.LAST) := TDG_FILTER_MAKE(SNAME => PKG_XPATH.VALUE(RNODE => XNODE, SPATTERN => SRQ_TAG_SNAME), + SFROM => PKG_XPATH.VALUE(RNODE => XNODE, SPATTERN => SRQ_TAG_SFROM), + STO => PKG_XPATH.VALUE(RNODE => XNODE, SPATTERN => SRQ_TAG_STO)); end loop; /* Освободим документ */ PKG_XPATH.FREE(RDOCUMENT => XDOC); @@ -1662,21 +1677,21 @@ text="Формат data_grid и gant как в chart" /* Вернем ошибку */ PKG_STATE.DIAGNOSTICS_STACKED(); P_EXCEPTION(0, PKG_STATE.SQL_ERRM()); - end TFILTERS_FROM_XML; + end TDG_FILTERS_FROM_XML; /* Применение параметров фильтрации в запросе */ - procedure TFILTERS_SET_QUERY + procedure TDG_FILTERS_SET_QUERY ( NIDENT in number, -- Идентификатор отбора NCOMPANY in number, -- Рег. номер организации NPARENT in number := null, -- Рег. номер родителя SUNIT in varchar2, -- Код раздела SPROCEDURE in varchar2, -- Наименование серверной процедуры отбора - RDATA_GRID in TDATA_GRID, -- Описание таблицы данных - RFILTERS in TFILTERS -- Коллекция фильтров + RDATA_GRID in TDG, -- Описание таблицы данных + RFILTERS in TDG_FILTERS -- Коллекция фильтров ) is - RCOL_DEF TCOL_DEF; -- Описание текущей фильтруемой колонки + RCOL_DEF TDG_COL_DEF; -- Описание текущей фильтруемой колонки BENUM boolean; -- Флаг начиличия перечисляемых значений NFROM PKG_STD.TLNUMBER; -- Буфер для верхней границы диапазона отбора чисел NTO PKG_STD.TLNUMBER; -- Буфер для нижней границы диапазона отбора чисел @@ -1700,7 +1715,7 @@ text="Формат data_grid и gant как в chart" for I in RFILTERS.FIRST .. RFILTERS.LAST loop /* Найдем фильтруемую колонку в описании */ - RCOL_DEF := TCOL_DEFS_FIND(RCOL_DEFS => RDATA_GRID.RCOL_DEFS, SNAME => RFILTERS(I).SNAME); + RCOL_DEF := TDG_COL_DEFS_FIND(RCOL_DEFS => RDATA_GRID.RCOL_DEFS, SNAME => RFILTERS(I).SNAME); if (RCOL_DEF.SNAME is not null) then /* Определимся с наличием перечисляемых значений */ if ((RCOL_DEF.RCOL_VALS is not null) and (RCOL_DEF.RCOL_VALS.COUNT > 0)) then @@ -1728,7 +1743,7 @@ text="Формат data_grid и gant как в chart" PKG_COND_BROKER.SET_CONDITION_ENUM(SCONDITION_NAME => RCOL_DEF.SCOND_FROM, SCONDITION_ENUM => RFILTERS(I).SFROM); else - TFILTER_TO_NUMBER(RFILTER => RFILTERS(I), NFROM => NFROM, NTO => NTO); + TDG_FILTER_TO_NUMBER(RFILTER => RFILTERS(I), NFROM => NFROM, NTO => NTO); if (NFROM is not null) then PKG_COND_BROKER.SET_CONDITION_NUM(SCONDITION_NAME => RCOL_DEF.SCOND_FROM, NCONDITION_VALUE => NFROM); @@ -1740,11 +1755,11 @@ text="Формат data_grid и gant как в chart" end; when SDATA_TYPE_DATE then begin - if (BENUM) then - PKG_COND_BROKER.SET_CONDITION_EDATE(SCONDITION_NAME => RCOL_DEF.SCOND_FROM, + if (BENUM) then + PKG_COND_BROKER.SET_CONDITION_EDATE(SCONDITION_NAME => RCOL_DEF.SCOND_FROM, SCONDITION_EDATE => RFILTERS(I).SFROM); else - TFILTER_TO_DATE(RFILTER => RFILTERS(I), DFROM => DFROM, DTO => DTO); + TDG_FILTER_TO_DATE(RFILTER => RFILTERS(I), DFROM => DFROM, DTO => DTO); if (DFROM is not null) then PKG_COND_BROKER.SET_CONDITION_DATE(SCONDITION_NAME => RCOL_DEF.SCOND_FROM, DCONDITION_VALUE => DFROM); @@ -1765,38 +1780,38 @@ text="Формат data_grid и gant как в chart" end if; /* Формирование условий отбора - Эпилог */ PKG_COND_BROKER.EPILOGUE(); - end TFILTERS_SET_QUERY; + end TDG_FILTERS_SET_QUERY; /* Формирование сортировки */ - function TORDER_MAKE + function TDG_ORDER_MAKE ( SNAME in varchar2, -- Наименование SDIRECTION in varchar2 -- Направление (см. константы SORDER_DIRECTION_*) - ) return TORDER -- Результат работы + ) return TDG_ORDER -- Результат работы is - RRES TORDER; -- Буфер для результата + RRES TDG_ORDER; -- Буфер для результата begin /* Формируем объект */ RRES.SNAME := SNAME; RRES.SDIRECTION := SDIRECTION; /* Возвращаем результат */ return RRES; - end TORDER_MAKE; + end TDG_ORDER_MAKE; /* Десериализация сортировок */ - function TORDERS_FROM_XML + function TDG_ORDERS_FROM_XML ( CORDERS in clob -- Сериализованное представление сотрировок (BASE64(ИМЯASC/DESC...)) - ) return TORDERS -- Результат работы + ) return TDG_ORDERS -- Результат работы is - RORDERS TORDERS; -- Буфер для результата работы + RORDERS TDG_ORDERS; -- Буфер для результата работы XDOC PKG_XPATH.TDOCUMENT; -- Документ XML XROOT PKG_XPATH.TNODE; -- Корень документа XML XNODE PKG_XPATH.TNODE; -- Буфер узла документа XNODES PKG_XPATH.TNODES; -- Буфер коллекции узлов документа begin /* Инициализируем выходную коллекцию */ - RORDERS := TORDERS(); + RORDERS := TDG_ORDERS(); /* Разбираем XML */ XDOC := PKG_XPATH.PARSE_FROM_CLOB(LCXML => '<' || SRQ_TAG_XROOT || '>' || BLOB2CLOB(LBDATA => BASE64_DECODE(LCSRCE => CORDERS), @@ -1813,8 +1828,9 @@ text="Формат data_grid и gant как в chart" XNODE := PKG_XPATH.ITEM_NODE(RNODES => XNODES, INUMBER => I); /* Добавим его в коллекцию */ RORDERS.EXTEND(); - RORDERS(RORDERS.LAST) := TORDER_MAKE(SNAME => PKG_XPATH.VALUE(RNODE => XNODE, SPATTERN => SRQ_TAG_SNAME), - SDIRECTION => PKG_XPATH.VALUE(RNODE => XNODE, SPATTERN => SRQ_TAG_SDIRECTION)); + RORDERS(RORDERS.LAST) := TDG_ORDER_MAKE(SNAME => PKG_XPATH.VALUE(RNODE => XNODE, SPATTERN => SRQ_TAG_SNAME), + SDIRECTION => PKG_XPATH.VALUE(RNODE => XNODE, + SPATTERN => SRQ_TAG_SDIRECTION)); end loop; /* Освободим документ */ PKG_XPATH.FREE(RDOCUMENT => XDOC); @@ -1827,13 +1843,13 @@ text="Формат data_grid и gant как в chart" /* Вернем ошибку */ PKG_STATE.DIAGNOSTICS_STACKED(); P_EXCEPTION(0, PKG_STATE.SQL_ERRM()); - end TORDERS_FROM_XML; + end TDG_ORDERS_FROM_XML; /* Применение параметров сортировки в запросе */ - procedure TORDERS_SET_QUERY + procedure TDG_ORDERS_SET_QUERY ( - RDATA_GRID in TDATA_GRID, -- Описание таблицы - RORDERS in TORDERS, -- Коллекция сортировок + RDATA_GRID in TDG, -- Описание таблицы + RORDERS in TDG_ORDERS, -- Коллекция сортировок SPATTERN in varchar2, -- Шаблон для подстановки условий отбора в запрос CSQL in out nocopy clob -- Буфер запроса ) @@ -1846,7 +1862,7 @@ text="Формат data_grid и gant как в chart" for I in RORDERS.FIRST .. RORDERS.LAST loop /* Перед добавлением в запрос - обязательная проверка, чтобы избежать SQL-инъекций */ - if ((TCOL_DEFS_FIND(RCOL_DEFS => RDATA_GRID.RCOL_DEFS, SNAME => RORDERS(I).SNAME).SNAME is not null) and + if ((TDG_COL_DEFS_FIND(RCOL_DEFS => RDATA_GRID.RCOL_DEFS, SNAME => RORDERS(I).SNAME).SNAME is not null) and (RORDERS(I).SDIRECTION in (SORDER_DIRECTION_ASC, SORDER_DIRECTION_DESC))) then CSQL_ORDERS := CSQL_ORDERS || RORDERS(I).SNAME || ' ' || RORDERS(I).SDIRECTION; if (I < RORDERS.LAST) then @@ -1856,7 +1872,7 @@ text="Формат data_grid и gant как в chart" end loop; end if; CSQL := replace(CSQL, SPATTERN, CSQL_ORDERS); - end TORDERS_SET_QUERY; + end TDG_ORDERS_SET_QUERY; /* Проверка корректности наименования дополнительного атрибута задачи диаграммы Ганта */ procedure TGANTT_TASK_ATTR_NAME_CHECK @@ -2039,7 +2055,7 @@ text="Формат data_grid и gant как в chart" for I in RTASKS.FIRST .. RTASKS.LAST loop /* Открываем строку */ - PKG_XFAST.DOWN_NODE(SNAME => SRESP_TAG_XGANTT_TASKS); + PKG_XFAST.DOWN_NODE(SNAME => SRESP_ATTR_TASKS); /* Статические тарибуты */ PKG_XFAST.ATTR(SNAME => SRESP_ATTR_ID, SVALUE => 'taskId' || RTASKS(I).NRN); PKG_XFAST.ATTR(SNAME => SRESP_ATTR_RN, NVALUE => RTASKS(I).NRN); @@ -2211,8 +2227,6 @@ text="Формат data_grid и gant как в chart" ) is begin - /* Открываем описание заголовка */ - PKG_XFAST.DOWN_NODE(SNAME => SRESP_TAG_XGANTT_DEF); /* Cтатические атрибуты заголовка */ PKG_XFAST.ATTR(SNAME => SRESP_ATTR_TITLE, SVALUE => RGANTT.STITLE); PKG_XFAST.ATTR(SNAME => SRESP_ATTR_ZOOM, NVALUE => RGANTT.NZOOM); @@ -2257,8 +2271,6 @@ text="Формат data_grid и gant как в chart" PKG_XFAST.UP(); end loop; end if; - /* Закрываем описание заголовка */ - PKG_XFAST.UP(); end TGANTT_DEF_TO_XML; /* Сериализация диаграммы Ганта */ @@ -2274,12 +2286,16 @@ text="Формат data_grid и gant как в chart" PKG_XFAST.PROLOGUE(ITYPE => PKG_XFAST.CONTENT_); /* Открываем корень */ PKG_XFAST.DOWN_NODE(SNAME => SRESP_TAG_XDATA); + /* Открываем диаграмму Ганта */ + PKG_XFAST.DOWN_NODE(SNAME => SRESP_TAG_XGANTT); /* Если необходимо включить описание колонок */ if (NINCLUDE_DEF = 1) then TGANTT_DEF_TO_XML(RGANTT => RGANTT); end if; /* Формируем описание задач */ TGANTT_TASKS_TO_XML(RTASKS => RGANTT.RTASKS); + /* Закрываем диаграмму Ганта */ + PKG_XFAST.UP(); /* Закрываем корень */ PKG_XFAST.UP(); /* Сериализуем */ @@ -2602,29 +2618,6 @@ text="Формат data_grid и gant как в chart" RCOLUMNS(RCOLUMNS.LAST) := TCYCLOGRAM_COLUMN_MAKE(SNAME => SNAME, NSTART => NSTART, NEND => NEND); end TCYCLOGRAM_COLUMNS_ADD; - /* Сериализация описания колонок циклограммы */ - procedure TCYCLOGRAM_COLUMNS_TO_XML - ( - RCYCLOGRAM_COLUMNS in TCYCLOGRAM_COLUMNS -- Описание колонок циклограммы - ) - is - begin - /* Обходим колонки из коллекции */ - if ((RCYCLOGRAM_COLUMNS is not null) and (RCYCLOGRAM_COLUMNS.COUNT > 0)) then - for I in RCYCLOGRAM_COLUMNS.FIRST .. RCYCLOGRAM_COLUMNS.LAST - loop - /* Открываем описание колонки */ - PKG_XFAST.DOWN_NODE(SNAME => SRESP_TAG_XCOLUMNS_DEF); - /* Атрибуты колонки */ - PKG_XFAST.ATTR(SNAME => SRESP_ATTR_NAME, SVALUE => RCYCLOGRAM_COLUMNS(I).SNAME); - PKG_XFAST.ATTR(SNAME => SRESP_ATTR_START, NVALUE => RCYCLOGRAM_COLUMNS(I).NSTART); - PKG_XFAST.ATTR(SNAME => SRESP_ATTR_END, NVALUE => RCYCLOGRAM_COLUMNS(I).NEND); - /* Закрываем описание колонки */ - PKG_XFAST.UP(); - end loop; - end if; - end TCYCLOGRAM_COLUMNS_TO_XML; - /* Формирование группы циклограммы */ function TCYCLOGRAM_GROUP_MAKE (