- {formData.status != STATUSES.COLUMNROW_EDIT ? (
-
+ {formData.status != STATUSES.RRPCONFSCTNMRK_EDIT ? (
+
) : null}
-
- {formData.status == STATUSES.COLUMNROW_CREATE ? (
+
+ {formData.status == STATUSES.RRPCONFSCTNMRK_CREATE ? (
selectRow(pOnlineShowDictionary, callBack)}
/>
selectColumn(pOnlineShowDictionary, callBack)}
/>
@@ -210,8 +325,8 @@ const IUDFormDialog = ({ initial, onOk, onCancel }) => {
//Контроль свойств - Диалог
IUDFormDialog.propTypes = {
initial: PropTypes.object.isRequired,
- onOk: PropTypes.func,
- onCancel: PropTypes.func
+ onClose: PropTypes.func,
+ onReload: PropTypes.func
};
//--------------------
diff --git a/app/panels/rrp_conf_editor/iud_form_text_field.js b/app/panels/rrp_conf_editor/iud_form_text_field.js
index 2dda6f8..ae04ec9 100644
--- a/app/panels/rrp_conf_editor/iud_form_text_field.js
+++ b/app/panels/rrp_conf_editor/iud_form_text_field.js
@@ -7,10 +7,18 @@
//Подключение библиотек
//---------------------
-import React, { useState, useCallback, useEffect } from "react"; //Классы React
+import React, { useState, useEffect } from "react"; //Классы React
import PropTypes from "prop-types"; //Контроль свойств компонента
import { Box, FormControl, InputLabel, Input, InputAdornment, IconButton, Icon } from "@mui/material"; //Интерфейсные компоненты
-import { STYLES } from "./layouts"; //Стили диалогового окна
+
+//---------
+//Константы
+//---------
+
+//Стили
+export const STYLES = {
+ DIALOG_WINDOW_WIDTH: { width: 400 }
+};
//---------------
//Тело компонента
@@ -20,16 +28,6 @@ const IUDFormTextField = ({ elementCode, elementValue, labelText, onChange, dict
//Значение элемента
const [value, setValue] = useState(elementValue);
- //Формирование идентификатора элемента
- // const generateId = useCallback(async () => {
- // setElementId(`${elementCode}-input`);
- // }, [elementCode]);
-
- //При рендере поля ввода
- // useEffect(() => {
- // generateId();
- // }, [generateId]);
-
//При получении нового значения из вне
useEffect(() => {
setValue(elementValue);
@@ -47,12 +45,12 @@ const IUDFormTextField = ({ elementCode, elementValue, labelText, onChange, dict
return (
-
+
{labelText}
@@ -62,9 +60,9 @@ const IUDFormTextField = ({ elementCode, elementValue, labelText, onChange, dict
) : null
}
- aria-describedby={`${elementCode}-helper-text`}
- label={labelText}
onChange={handleChange}
+ multiline
+ maxRows={4}
/>
diff --git a/app/panels/rrp_conf_editor/layouts.js b/app/panels/rrp_conf_editor/layouts.js
index 928aae4..4b25d30 100644
--- a/app/panels/rrp_conf_editor/layouts.js
+++ b/app/panels/rrp_conf_editor/layouts.js
@@ -8,19 +8,20 @@
//---------------------
import React from "react"; //Классы React
-import { Stack, IconButton, Icon, Link } from "@mui/material"; //Интерфейсные компоненты
+import { Box, IconButton, Icon, Link } from "@mui/material"; //Интерфейсные компоненты
//---------
//Константы
//---------
+//Стили
export const STYLES = {
- DIALOG_WINDOW_WIDTH: { width: 400 },
- PADDING_DIALOG_BUTTONS_RIGHT: { paddingRight: "32px" }
+ BOX_ROW: { display: "flex", justifyContent: "center", alignItems: "center" },
+ LINK_STYLE: { component: "button", width: "-webkit-fill-available" }
};
//Статусы диалогового окна
-export const STATUSES = { CREATE: 0, EDIT: 1, DELETE: 2, COLUMNROW_CREATE: 3, COLUMNROW_EDIT: 4, COLUMNROW_DELETE: 5 };
+export const STATUSES = { CREATE: 0, EDIT: 1, DELETE: 2, RRPCONFSCTNMRK_CREATE: 3, RRPCONFSCTNMRK_EDIT: 4, RRPCONFSCTNMRK_DELETE: 5 };
//-----------
//Тело модуля
@@ -29,13 +30,11 @@ export const STATUSES = { CREATE: 0, EDIT: 1, DELETE: 2, COLUMNROW_CREATE: 3, CO
//Генерация представления ячейки c данными
export const dataCellRender = ({ row, columnDef }, showRrpConfSctnMrk, editCR, deleteCR) => {
let data = row[columnDef.name];
- let cellStyle = { display: "flex" };
columnDef.name != "SROW_NAME" && data != undefined && columnDef.visible == true
? (data = (
-
+
{
showRrpConfSctnMrk(row["NRN_" + columnDef.name.substring(5)]);
}}
@@ -48,7 +47,7 @@ export const dataCellRender = ({ row, columnDef }, showRrpConfSctnMrk, editCR, d
deleteCR(row["NRN_" + columnDef.name.substring(5)], row[columnDef.name])}>
delete
-
+
))
: null;
return { data };
diff --git a/app/panels/rrp_conf_editor/rrp_conf_editor.js b/app/panels/rrp_conf_editor/rrp_conf_editor.js
index dc796ac..b14dc38 100644
--- a/app/panels/rrp_conf_editor/rrp_conf_editor.js
+++ b/app/panels/rrp_conf_editor/rrp_conf_editor.js
@@ -13,10 +13,23 @@ import { P8PDataGrid, P8P_DATA_GRID_SIZE } from "../../components/p8p_data_grid"
import { P8P_DATA_GRID_CONFIG_PROPS } from "../../config_wrapper"; //Подключение компонентов к настройкам приложения
import { BackEndСtx } from "../../context/backend"; //Контекст взаимодействия с сервером
import { NavigationCtx } from "../../context/navigation"; //Контекст навигации
+import { MessagingСtx } from "../../context/messaging"; //Контекст сообщений
+import { TEXTS } from "../../../app.text"; //Текстовые константы
import { SectionTabPanel } from "./section_tab_panel"; //Кастомный Tab
import { ApplicationСtx } from "../../context/application"; //Контекст приложения
import { STATUSES, dataCellRender } from "./layouts"; //Дополнительная разметка и вёрстка клиентских элементов
import { IUDFormDialog } from "./iud_form_dialog"; //Кастомное диалоговое окно
+import { STYLES as COMMON_STYLES } from "./layouts";
+
+//---------
+//Константы
+//---------
+
+//Стили
+export const STYLES = {
+ TABS_BOTTOM_LINE: { borderBottom: 1, borderColor: "divider" },
+ TABS_PADDING: { paddingTop: 1, paddingBottom: 1 }
+};
//-----------
//Тело модуля
@@ -55,7 +68,6 @@ const RrpConfEditor = () => {
//Состояние диалогового окна
const [formData, setFormData] = useState({
- filled: false,
rn: "",
prn: "",
sctnName: "",
@@ -78,17 +90,24 @@ const RrpConfEditor = () => {
setForm(true);
};
- //Закрытие диалогового окна
- const closeForm = () => {
- setForm(false);
- };
-
//Очистка диалогового окна
const clearFormData = () => {
setFormData({
rn: "",
+ prn: "",
+ sctnName: "",
+ sctnCode: "",
+ status: "",
code: "",
- name: ""
+ name: "",
+ colName: "",
+ colCode: "",
+ colVCode: "",
+ colVRn: 0,
+ rowName: "",
+ rowCode: "",
+ rowVCode: "",
+ rowVRn: 0
});
};
@@ -96,11 +115,14 @@ const RrpConfEditor = () => {
const { executeStored } = useContext(BackEndСtx);
//Подключение к контексту приложения
- const { pOnlineShowDictionary, pOnlineShowUnit } = useContext(ApplicationСtx);
+ const { pOnlineShowUnit } = useContext(ApplicationСtx);
//Подключение к контексту навигации
const { getNavigationSearch } = useContext(NavigationCtx);
+ //Подключение к контексту сообщений
+ const { showMsgErr } = useContext(MessagingСtx);
+
//Переключение раздела
const handleChange = (event, newValue) => {
setTabValue(newValue);
@@ -125,38 +147,23 @@ const RrpConfEditor = () => {
};
//Отработка нажатия на кнопку добавления показателя раздела
- const addColumnRowClick = (prn, sctnCode, sctnName) => {
- setFormData({ status: STATUSES.COLUMNROW_CREATE, prn: prn, sctnCode: sctnCode, sctnName: sctnName });
+ const addRRPCONFSCTNMRKClick = (prn, sctnCode, sctnName) => {
+ setFormData({ status: STATUSES.RRPCONFSCTNMRK_CREATE, prn: prn, sctnCode: sctnCode, sctnName: sctnName });
openForm();
};
//Отработка нажатия на кнопку исправления показателя раздела
- const editColumnRowClick = (rn, name) => {
- setFormData({ status: STATUSES.COLUMNROW_EDIT, rn: rn, name: name });
+ const editRRPCONFSCTNMRKClick = (rn, name) => {
+ setFormData({ status: STATUSES.RRPCONFSCTNMRK_EDIT, rn: rn, name: name });
openForm();
};
//Отработка нажатия на кнопку удаления показателя раздела
- const deleteColumnRowClick = (rn, name) => {
- setFormData({ status: STATUSES.COLUMNROW_DELETE, rn: rn, name: name });
+ const deleteRRPCONFSCTNMRKClick = (rn, name) => {
+ setFormData({ status: STATUSES.RRPCONFSCTNMRK_DELETE, rn: rn, name: name });
openForm();
};
- //Нажатие на кнопку подтверждения создания/исправления/удаления на форме
- const formBtnOkClick = () => {
- let formStateProps = {};
- if (formData.status === (STATUSES.CREATE || STATUSES.EDIT || STATUSES.COLUMNROW_CREATE))
- formStateProps = { ...formStateProps, code: document.querySelector("#code-outlined").value };
- if (formData.status === (STATUSES.CREATE || STATUSES.EDIT || STATUSES.COLUMNROW_CREATE || STATUSES.COLUMNROW_EDIT))
- formStateProps = { ...formStateProps, name: document.querySelector("#name-outlined").value };
- setFormData(pv => ({
- ...pv,
- ...formStateProps,
- filled: true
- }));
- closeForm();
- };
-
//Формирование разделов
const a11yProps = index => {
return {
@@ -165,120 +172,6 @@ const RrpConfEditor = () => {
};
};
- //Отработка изменений в разделе или показателе раздела
- const changeSections = useCallback(async () => {
- if (formData.filled) {
- switch (formData.status) {
- case STATUSES.CREATE:
- insertSections();
- clearFormData();
- break;
- case STATUSES.EDIT:
- updateSections();
- clearFormData();
- break;
- case STATUSES.DELETE:
- deleteSections();
- clearFormData();
- break;
- case STATUSES.COLUMNROW_CREATE:
- addColumnRow();
- clearFormData();
- break;
- case STATUSES.COLUMNROW_EDIT:
- editColumnRow();
- clearFormData();
- break;
- case STATUSES.COLUMNROW_DELETE:
- deleteColumnRow();
- clearFormData();
- break;
- }
- setRrpDoc(pv => ({ ...pv, reload: true }));
- }
- //eslint-disable-next-line react-hooks/exhaustive-deps
- }, [formData]);
-
- //Добавление раздела
- const insertSections = useCallback(async () => {
- const data = await executeStored({
- stored: "PKG_P8PANELS_RRPCONFED.RRPCONFSCTN_INSERT",
- args: {
- NPRN: formData.prn,
- SCODE: formData.code,
- SNAME: formData.name
- }
- });
- setFormData(pv => ({
- ...pv,
- rn: Number(data.NRN)
- }));
- }, [formData.prn, formData.code, formData.name, executeStored]);
-
- //Исправление раздела
- const updateSections = useCallback(async () => {
- await executeStored({
- stored: "PKG_P8PANELS_RRPCONFED.RRPCONFSCTN_UPDATE",
- args: {
- NRN: formData.rn,
- SCODE: formData.code,
- SNAME: formData.name
- }
- });
- }, [formData.name, formData.code, formData.rn, executeStored]);
-
- //Удаление раздела
- const deleteSections = useCallback(async () => {
- await executeStored({
- stored: "PKG_P8PANELS_RRPCONFED.RRPCONFSCTN_DELETE",
- args: {
- NRN: formData.rn
- }
- });
- }, [formData.rn, executeStored]);
-
- //Добавление показателя раздела
- const addColumnRow = useCallback(async () => {
- await executeStored({
- stored: "PKG_P8PANELS_RRPCONFED.RRPCONFSCTNMRK_INSERT",
- args: {
- NPRN: formData.prn,
- SCODE: formData.code,
- SNAME: formData.name,
- SCOLCODE: formData.colCode,
- SCOLVER: formData.colVCode,
- SROWCODE: formData.rowCode,
- SROWVER: formData.rowVCode
- }
- });
- }, [executeStored, formData.code, formData.colVCode, formData.colCode, formData.name, formData.prn, formData.rowCode, formData.rowVCode]);
-
- //Исправление показателя раздела
- const editColumnRow = useCallback(async () => {
- await executeStored({
- stored: "PKG_P8PANELS_RRPCONFED.RRPCONFSCTNMRK_UPDATE",
- args: { NRN: formData.rn, SNAME: formData.name }
- });
- }, [executeStored, formData.name, formData.rn]);
-
- //Удаление показателя раздела
- const deleteColumnRow = useCallback(async () => {
- await executeStored({ stored: "PKG_P8PANELS_RRPCONFED.RRPCONFSCTNMRK_DELETE", args: { NRN: formData.rn } });
- }, [executeStored, formData.rn]);
-
- //Получение мнемокода и наименования показателя раздела
- const getSctnMrkCodeName = useCallback(async () => {
- const data = await executeStored({
- stored: "PKG_P8PANELS_RRPCONFED.RRPCONFSCTNMRK_GET_CODE_NAME",
- args: { SSCTNCODE: formData.sctnCode, SROWCODE: formData.rowCode, SCOLUMNCODE: formData.colCode }
- });
- setFormData(pv => ({
- ...pv,
- code: data.SCODE,
- name: data.SNAME
- }));
- }, [executeStored, formData.colCode, formData.rowCode, formData.sctnCode]);
-
//Загрузка данных разделов регламентированного отчёта
const loadData = useCallback(async () => {
if (rrpDoc.reload) {
@@ -296,7 +189,7 @@ const RrpConfEditor = () => {
//Копирование массива уже загруженных разделов
let cloneDGs = dataGrids.slice();
//Массив из нескольких разделов и из одного
- const sections = data.SECTIONS.length ? data.SECTIONS : [data.SECTIONS];
+ const sections = data.SECTIONS ? (data.SECTIONS.length ? data.SECTIONS : [data.SECTIONS]) : [];
//Заполнение очередного раздела по шаблону
sections.map(s => {
let dg = {};
@@ -343,7 +236,9 @@ const RrpConfEditor = () => {
//Устаревший раздел удаляем из массива данных
dataGrids.splice(curIndex, 1);
//Фокус на предшествующий раздел
- tabFocus = curIndex - 1;
+ if (curIndex > 0) tabFocus = curIndex - 1;
+ //Иначе фокус на следующий, если был удалён первый раздел
+ else tabFocus = curIndex;
});
setRrpDoc(pv => ({
...pv,
@@ -374,74 +269,74 @@ const RrpConfEditor = () => {
loadData();
}, [rrpDoc.reload, dataGrid.reload, loadData]);
- //Обновление при изменении разделов
- useEffect(() => {
- changeSections();
- }, [changeSections]);
-
- //Получение наименования и мнемокода показателя раздела при заполнении необходимых полей
- useEffect(() => {
- formData.status == STATUSES.COLUMNROW_CREATE && formData.sctnName && formData.sctnCode && formData.colCode && formData.rowCode
- ? getSctnMrkCodeName()
- : null;
- }, [formData.colCode, formData.rowCode, formData.sctnCode, formData.sctnName, formData.status, getSctnMrkCodeName]);
-
- //При изменении фильтра в диалоге
- const handleFilterOk = filter => {
- setFormData(filter);
- setForm(false);
+ const handleDialogReload = data => {
+ console.log(JSON.stringify(data));
+ setRrpDoc(pv => ({ ...pv, reload: true }));
};
- //При закрытии диалога фильтра
- const handleFilterCancel = () => setForm(false);
+ //При закрытии диалога
+ const handleDialogClose = () => {
+ setForm(false);
+ clearFormData();
+ };
//Генерация содержимого
return (
- {formOpen ? : null}
+ {formOpen ? : null}
{rrpDoc.docLoaded ? (
-
-
+
+
{rrpDoc.sections.map((s, i) => {
return (
+
{s.name}
- editSectionClick(s.rn, s.code, s.name)}>edit
- deleteSectionClick(s.rn, s.code, s.name)}>delete
-
+ editSectionClick(s.rn, s.code, s.name)}>
+ edit
+
+ deleteSectionClick(s.rn, s.code, s.name)}>
+ delete
+
+
}
wrapped
/>
);
})}
-
- add
-
+
+
+ add
+
+
{rrpDoc.sections.map((s, i) => {
return (
-
+
{s.dataLoaded ? (
-
- dataCellRender({ ...prms }, showRrpConfSctnMrk, editColumnRowClick, deleteColumnRowClick)
- }
- />
+
+
+ dataCellRender({ ...prms }, showRrpConfSctnMrk, editRRPCONFSCTNMRKClick, deleteRRPCONFSCTNMRKClick)
+ }
+ />
+
) : null}
);
diff --git a/app/panels/rrp_conf_editor/section_tab_panel.js b/app/panels/rrp_conf_editor/section_tab_panel.js
index afb2332..4afb35d 100644
--- a/app/panels/rrp_conf_editor/section_tab_panel.js
+++ b/app/panels/rrp_conf_editor/section_tab_panel.js
@@ -19,10 +19,10 @@ const SectionTabPanel = props => {
const { children, value, index, ...other } = props;
return (
-
+
{value === index && (
- {children}
+ {children}
)}
diff --git a/db/PKG_P8PANELS_RRPCONFED.pck b/db/PKG_P8PANELS_RRPCONFED.pck
index 74be876..e957024 100644
--- a/db/PKG_P8PANELS_RRPCONFED.pck
+++ b/db/PKG_P8PANELS_RRPCONFED.pck
@@ -1,7 +1,7 @@
create or replace package PKG_P8PANELS_RRPCONFED as
/* Добавление раздела регламентированного отчёта */
- procedure INSERT_RRPCONF_SECTIONS
+ procedure RRPCONFSCTN_INSERT
(
NPRN in number, -- Ид. настройки форм регламентированного отчёта
SCODE in varchar2, -- Мнемокод
@@ -10,7 +10,7 @@ create or replace package PKG_P8PANELS_RRPCONFED as
);
/* Исправление раздела регламентированного отчёта */
- procedure UPDATE_RRPCONF_SECTIONS
+ procedure RRPCONFSCTN_UPDATE
(
NRN in number, -- Ид. раздела
SCODE in varchar2, -- Мнемокод раздела
@@ -18,13 +18,13 @@ create or replace package PKG_P8PANELS_RRPCONFED as
);
/* Удаление раздела регламентированного отчёта */
- procedure DELETE_RRPCONF_SECTIONS
+ procedure RRPCONFSCTN_DELETE
(
- NRN in number -- Ид. раздела
+ NRN in number -- Ид. раздела
);
/* Добавление показателя раздела регламентированного отчёта */
- procedure INSERT_RRPCONF_COLUMNROW
+ procedure RRPCONFSCTNMRK_INSERT
(
NPRN in number, -- Ид. раздела
SCODE in varchar2, -- Мнемокод показателя раздела
@@ -37,20 +37,20 @@ create or replace package PKG_P8PANELS_RRPCONFED as
);
/* Исправление показателя раздела регламентированного отчёта */
- procedure UPDATE_RRPCONF_COLUMNROW
+ procedure RRPCONFSCTNMRK_UPDATE
(
NRN in number, -- Ид. показателя раздела
SNAME in varchar2 -- Новое наименование
);
/* Удаление показателя раздела регламентированного отчёта */
- procedure DELETE_RRPCONF_COLUMNROW
+ procedure RRPCONFSCTNMRK_DELETE
(
NRN in number -- Ид. показателя раздела
);
/* Формирование кода и наименования показателя раздела регламентированного отчёта */
- procedure GET_RRPCONFSCTNMRK_CODE_NAME
+ procedure RRPCONFSCTNMRK_GET_CODE_NAME
(
SSCTNCODE in varchar2, -- Мнемокод раздела
SROWCODE in varchar2, -- Мнемокод строки
@@ -58,6 +58,13 @@ create or replace package PKG_P8PANELS_RRPCONFED as
SCODE out varchar2, -- Мнемокод показателя раздела
SNAME out varchar2 -- Наименование показателя раздела
);
+
+ /* Отбор показателя раздела по ид. */
+ procedure SELECT_RRPCONFSCTNMRK
+ (
+ NRN in number, -- Ид. показателя раздела
+ NIDENT out number -- Ид. буфера подобранных (списка отмеченных записей, null - не найдено)
+ );
/* Получение разделов регламентированного отчёта */
procedure GET_RRPCONF_SECTIONS
@@ -71,7 +78,7 @@ end PKG_P8PANELS_RRPCONFED;
create or replace package body PKG_P8PANELS_RRPCONFED as
/* Добавление раздела регламентированного отчёта */
- procedure INSERT_RRPCONF_SECTIONS
+ procedure RRPCONFSCTN_INSERT
(
NPRN in number, -- Ид. настройки форм регламентированного отчёта
SCODE in varchar2, -- Мнемокод
@@ -95,10 +102,10 @@ create or replace package body PKG_P8PANELS_RRPCONFED as
NLINKS_UPDATE => 0,
NDUP_RN => null,
NRN => NRN);
- end INSERT_RRPCONF_SECTIONS;
+ end RRPCONFSCTN_INSERT;
/* Исправление раздела регламентированного отчёта */
- procedure UPDATE_RRPCONF_SECTIONS
+ procedure RRPCONFSCTN_UPDATE
(
NRN in number, -- Ид. раздела
SCODE in varchar2, -- Мнемокод раздела
@@ -120,10 +127,10 @@ create or replace package body PKG_P8PANELS_RRPCONFED as
SCLSF_CODE => null,
NFORMULA_UPDATE => 0,
NMARK_UPDATE => 0);
- end UPDATE_RRPCONF_SECTIONS;
+ end RRPCONFSCTN_UPDATE;
/* Удаление раздела регламентированного отчёта */
- procedure DELETE_RRPCONF_SECTIONS
+ procedure RRPCONFSCTN_DELETE
(
NRN in number -- Ид. раздела
)
@@ -131,10 +138,10 @@ create or replace package body PKG_P8PANELS_RRPCONFED as
NCOMPANY PKG_STD.TREF := GET_SESSION_COMPANY(); -- Рег. номер организации
begin
P_RRPCONFSCTN_DELETE(NRN => NRN, NCOMPANY => NCOMPANY);
- end DELETE_RRPCONF_SECTIONS;
+ end RRPCONFSCTN_DELETE;
/* Добавление показателя раздела регламентированного отчёта */
- procedure INSERT_RRPCONF_COLUMNROW
+ procedure RRPCONFSCTNMRK_INSERT
(
NPRN in number, -- Ид. раздела
SCODE in varchar2, -- Мнемокод показателя раздела
@@ -170,10 +177,10 @@ create or replace package body PKG_P8PANELS_RRPCONFED as
SNOTE => null,
NDUP_RN => null,
NRN => NRN);
- end INSERT_RRPCONF_COLUMNROW;
+ end RRPCONFSCTNMRK_INSERT;
/* Исправление показателя раздела регламентированного отчёта */
- procedure UPDATE_RRPCONF_COLUMNROW
+ procedure RRPCONFSCTNMRK_UPDATE
(
NRN in number, -- Ид. показателя раздела
SNAME in varchar2 -- Новое наименование
@@ -228,10 +235,10 @@ create or replace package body PKG_P8PANELS_RRPCONFED as
SCLSF_CODE => null,
NFORMULA_UPDATE => 0,
SNOTE => null);
- end UPDATE_RRPCONF_COLUMNROW;
+ end RRPCONFSCTNMRK_UPDATE;
/* Удаление показателя раздела регламентированного отчёта */
- procedure DELETE_RRPCONF_COLUMNROW
+ procedure RRPCONFSCTNMRK_DELETE
(
NRN in number -- Ид. показателя раздела
)
@@ -239,10 +246,10 @@ create or replace package body PKG_P8PANELS_RRPCONFED as
NCOMPANY PKG_STD.TREF := GET_SESSION_COMPANY(); -- Рег. номер организации
begin
P_RRPCONFSCTNMRK_DELETE(NCOMPANY => NCOMPANY, NRN => NRN);
- end DELETE_RRPCONF_COLUMNROW;
+ end RRPCONFSCTNMRK_DELETE;
/* Формирование кода и наименования показателя раздела регламентированного отчёта */
- procedure GET_RRPCONFSCTNMRK_CODE_NAME
+ procedure RRPCONFSCTNMRK_GET_CODE_NAME
(
SSCTNCODE in varchar2, -- Мнемокод раздела
SROWCODE in varchar2, -- Мнемокод строки
@@ -267,7 +274,34 @@ create or replace package body PKG_P8PANELS_RRPCONFED as
NCHANGE_NAME => 1,
NCHANGE_NAME_PARENT => 0,
SNAME => SNAME);
- end GET_RRPCONFSCTNMRK_CODE_NAME;
+ end RRPCONFSCTNMRK_GET_CODE_NAME;
+
+ /* Отбор показателя раздела по ид. */
+ procedure SELECT_RRPCONFSCTNMRK
+ (
+ NRN in number, -- Ид. показателя раздела
+ NIDENT out number -- Ид. буфера подобранных (списка отмеченных записей, null - не найдено)
+ )
+ is
+ NCOMPANY PKG_STD.TREF := GET_SESSION_COMPANY(); -- Рег. номер организации
+ NSELECTLIST PKG_STD.TREF; -- Рег. номер добавленной записи буфера подобранных
+ begin
+ /* Сформируем идентификатор буфера */
+ if (NIDENT is null) then
+ NIDENT := GEN_IDENT();
+ end if;
+ /* Добавим подобранное в список отмеченных записей */
+ P_SELECTLIST_BASE_INSERT(NIDENT => NIDENT,
+ NCOMPANY => NCOMPANY,
+ NDOCUMENT => NRN,
+ SUNITCODE => 'RRPConfigSectionMark',
+ SACTIONCODE => null,
+ NCRN => null,
+ NDOCUMENT1 => null,
+ SUNITCODE1 => null,
+ SACTIONCODE1 => null,
+ NRN => NSELECTLIST);
+ end SELECT_RRPCONFSCTNMRK;
/* Получение разделов регламентированного отчёта */
procedure GET_RRPCONF_SECTIONS
@@ -343,12 +377,13 @@ create or replace package body PKG_P8PANELS_RRPCONFED as
and T.VERSION = NVERSION)
loop
/* Инициализируем таблицу данных */
- RDG := PKG_P8PANELS_VISUAL.TDATA_GRID_MAKE();
+ RDG := PKG_P8PANELS_VISUAL.TDATA_GRID_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);
+ SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR,
+ NWIDTH => 150);
/* Цикл формирования колонок с графами */
for CL in CN(C.NRN)
loop