Compare commits
No commits in common. "11f29bcf0c653169deae80a55bb4048087326e21" and "2672bcd8bedbd1cf4088114fe8642387c75e7639" have entirely different histories.
11f29bcf0c
...
2672bcd8be
@ -9,23 +9,7 @@
|
|||||||
|
|
||||||
import React, { useState } from "react"; //Классы React
|
import React, { useState } from "react"; //Классы React
|
||||||
import PropTypes from "prop-types"; //Контроль свойств компонента
|
import PropTypes from "prop-types"; //Контроль свойств компонента
|
||||||
import {
|
import { Box, IconButton, Icon, Dialog, DialogTitle, DialogContent, Typography, List, ListItem } from "@mui/material"; //Интерфейсные элементы
|
||||||
Box,
|
|
||||||
IconButton,
|
|
||||||
Icon,
|
|
||||||
Dialog,
|
|
||||||
DialogTitle,
|
|
||||||
DialogContent,
|
|
||||||
Button,
|
|
||||||
Typography,
|
|
||||||
List,
|
|
||||||
ListItem,
|
|
||||||
Select,
|
|
||||||
FormControl,
|
|
||||||
InputLabel,
|
|
||||||
MenuItem,
|
|
||||||
DialogActions
|
|
||||||
} from "@mui/material"; //Интерфейсные элементы
|
|
||||||
import { P8PDataGrid, P8P_DATA_GRID_SIZE } from "../../../components/p8p_data_grid"; //Таблица данных
|
import { P8PDataGrid, P8P_DATA_GRID_SIZE } from "../../../components/p8p_data_grid"; //Таблица данных
|
||||||
import { P8P_DATA_GRID_CONFIG_PROPS } from "../../../config_wrapper"; //Подключение компонентов к настройкам приложения
|
import { P8P_DATA_GRID_CONFIG_PROPS } from "../../../config_wrapper"; //Подключение компонентов к настройкам приложения
|
||||||
import { SectionTabPanel } from "./section_tab_panel"; //Компонент вкладки раздела
|
import { SectionTabPanel } from "./section_tab_panel"; //Компонент вкладки раздела
|
||||||
@ -83,8 +67,7 @@ const STYLES = {
|
|||||||
},
|
},
|
||||||
HELP_LIST_ITEM_DESC: {
|
HELP_LIST_ITEM_DESC: {
|
||||||
fontSize: "inherit"
|
fontSize: "inherit"
|
||||||
},
|
}
|
||||||
DIALOG_ACTIONS: { justifyContent: "end", paddingRight: "24px", paddingLeft: "24px" }
|
|
||||||
};
|
};
|
||||||
|
|
||||||
//------------------------------------
|
//------------------------------------
|
||||||
@ -153,89 +136,6 @@ HelpDialog.propTypes = {
|
|||||||
handleOpenHelpChange: PropTypes.func.isRequired
|
handleOpenHelpChange: PropTypes.func.isRequired
|
||||||
};
|
};
|
||||||
|
|
||||||
//Диалог сортировки
|
|
||||||
const SortDialog = ({ init, handleOpenSortChange, onOrderChange }) => {
|
|
||||||
//Собственное состояние сортировки
|
|
||||||
const [order, setOrder] = useState({ row: init.rowOrder ? init.rowOrder : 0, column: init.columnOrder ? init.columnOrder : 0 });
|
|
||||||
|
|
||||||
//Изменеие сортировки
|
|
||||||
const handleOrderChange = e => setOrder(pv => ({ ...pv, [e.target.name]: e.target.value }));
|
|
||||||
|
|
||||||
//Нажатие на кнопку Ok
|
|
||||||
const handleOk = () => {
|
|
||||||
onOrderChange({ rowOrder: order.row, columnOrder: order.column });
|
|
||||||
handleOpenSortChange();
|
|
||||||
};
|
|
||||||
|
|
||||||
//Кнопка "Очистить", значения по умолчанию
|
|
||||||
const handleClear = () => {
|
|
||||||
setOrder({ row: 0, column: 0 });
|
|
||||||
};
|
|
||||||
|
|
||||||
//Кнопка "Отмена"
|
|
||||||
const handleCancel = () => {
|
|
||||||
handleOpenSortChange();
|
|
||||||
};
|
|
||||||
|
|
||||||
//Генерация содержимого
|
|
||||||
return (
|
|
||||||
<Dialog open onClose={handleOpenSortChange}>
|
|
||||||
<DialogTitle>
|
|
||||||
<Box display="flex" alignItems="center">
|
|
||||||
<Box flexGrow={1} textAlign="center">
|
|
||||||
Сортировка
|
|
||||||
</Box>
|
|
||||||
<Box>
|
|
||||||
<IconButton aria-label="close" onClick={handleCancel}>
|
|
||||||
<Icon>close</Icon>
|
|
||||||
</IconButton>
|
|
||||||
</Box>
|
|
||||||
</Box>
|
|
||||||
</DialogTitle>
|
|
||||||
<DialogContent>
|
|
||||||
<Box component="section" p={1}>
|
|
||||||
<FormControl variant="standard" fullWidth>
|
|
||||||
<InputLabel id="row-label">Строки</InputLabel>
|
|
||||||
<Select labelId="row-label" id="row" name="row" value={order.row} label="Строки" onChange={handleOrderChange}>
|
|
||||||
<MenuItem value={0}>Номер</MenuItem>
|
|
||||||
<MenuItem value={1}>Код</MenuItem>
|
|
||||||
<MenuItem value={2}>Мнемокод</MenuItem>
|
|
||||||
</Select>
|
|
||||||
</FormControl>
|
|
||||||
</Box>
|
|
||||||
<Box component="section" p={1}>
|
|
||||||
<FormControl variant="standard" fullWidth>
|
|
||||||
<InputLabel id="column-label">Графы</InputLabel>
|
|
||||||
<Select labelId="column-label" id="column" name="column" value={order.column} label="Графы" onChange={handleOrderChange}>
|
|
||||||
<MenuItem value={0}>Номер</MenuItem>
|
|
||||||
<MenuItem value={1}>Код</MenuItem>
|
|
||||||
<MenuItem value={2}>Мнемокод</MenuItem>
|
|
||||||
</Select>
|
|
||||||
</FormControl>
|
|
||||||
</Box>
|
|
||||||
</DialogContent>
|
|
||||||
<DialogActions sx={STYLES.DIALOG_ACTIONS}>
|
|
||||||
<Button variant="text" onClick={handleOk}>
|
|
||||||
ОК
|
|
||||||
</Button>
|
|
||||||
<Button variant="text" onClick={handleClear}>
|
|
||||||
Очистить
|
|
||||||
</Button>
|
|
||||||
<Button variant="text" onClick={handleCancel}>
|
|
||||||
Отмена
|
|
||||||
</Button>
|
|
||||||
</DialogActions>
|
|
||||||
</Dialog>
|
|
||||||
);
|
|
||||||
};
|
|
||||||
|
|
||||||
//Контроль свойств - Диалог сортировки
|
|
||||||
SortDialog.propTypes = {
|
|
||||||
init: PropTypes.object.isRequired,
|
|
||||||
handleOpenSortChange: PropTypes.func.isRequired,
|
|
||||||
onOrderChange: PropTypes.func.isRequired
|
|
||||||
};
|
|
||||||
|
|
||||||
//-----------
|
//-----------
|
||||||
//Тело модуля
|
//Тело модуля
|
||||||
//-----------
|
//-----------
|
||||||
@ -245,8 +145,6 @@ const SectionTab = ({
|
|||||||
section,
|
section,
|
||||||
tabValue,
|
tabValue,
|
||||||
index,
|
index,
|
||||||
order,
|
|
||||||
onOrderChange,
|
|
||||||
containerProps,
|
containerProps,
|
||||||
handleMarkAdd,
|
handleMarkAdd,
|
||||||
handleReload,
|
handleReload,
|
||||||
@ -263,14 +161,6 @@ const SectionTab = ({
|
|||||||
setOpenHelp(!openHelp);
|
setOpenHelp(!openHelp);
|
||||||
};
|
};
|
||||||
|
|
||||||
//Состояние - диалог сортировки
|
|
||||||
const [openSort, setOpenSort] = useState(false);
|
|
||||||
|
|
||||||
//Изменение состояния диалога сортировки
|
|
||||||
const handleOpenSortChange = () => {
|
|
||||||
setOpenSort(!openSort);
|
|
||||||
};
|
|
||||||
|
|
||||||
//Генерация содержимого
|
//Генерация содержимого
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
@ -285,9 +175,6 @@ const SectionTab = ({
|
|||||||
</IconButton>
|
</IconButton>
|
||||||
</Box>
|
</Box>
|
||||||
<Box>
|
<Box>
|
||||||
<IconButton onClick={() => handleOpenSortChange()}>
|
|
||||||
<Icon>sort</Icon>
|
|
||||||
</IconButton>
|
|
||||||
<IconButton onClick={() => handleOpenHelpChange()}>
|
<IconButton onClick={() => handleOpenHelpChange()}>
|
||||||
<Icon>help</Icon>
|
<Icon>help</Icon>
|
||||||
</IconButton>
|
</IconButton>
|
||||||
@ -330,7 +217,6 @@ const SectionTab = ({
|
|||||||
</Box>
|
</Box>
|
||||||
) : null}
|
) : null}
|
||||||
</SectionTabPanel>
|
</SectionTabPanel>
|
||||||
{openSort ? <SortDialog init={order} handleOpenSortChange={handleOpenSortChange} onOrderChange={onOrderChange} /> : null}
|
|
||||||
{openHelp ? <HelpDialog handleOpenHelpChange={handleOpenHelpChange} /> : null}
|
{openHelp ? <HelpDialog handleOpenHelpChange={handleOpenHelpChange} /> : null}
|
||||||
</>
|
</>
|
||||||
);
|
);
|
||||||
@ -341,8 +227,6 @@ SectionTab.propTypes = {
|
|||||||
section: PropTypes.object.isRequired,
|
section: PropTypes.object.isRequired,
|
||||||
tabValue: PropTypes.number,
|
tabValue: PropTypes.number,
|
||||||
index: PropTypes.number,
|
index: PropTypes.number,
|
||||||
order: PropTypes.object.isRequired,
|
|
||||||
onOrderChange: PropTypes.func.isRequired,
|
|
||||||
containerProps: PropTypes.object,
|
containerProps: PropTypes.object,
|
||||||
handleMarkAdd: PropTypes.func,
|
handleMarkAdd: PropTypes.func,
|
||||||
handleReload: PropTypes.func,
|
handleReload: PropTypes.func,
|
||||||
|
@ -39,7 +39,7 @@ const useWindowResize = () => {
|
|||||||
};
|
};
|
||||||
|
|
||||||
//Хук для настройки регламентированного отчета
|
//Хук для настройки регламентированного отчета
|
||||||
const useConf = (currentTab, handleSectionChange, order) => {
|
const useConf = (currentTab, handleSectionChange) => {
|
||||||
//Собственное состояние - таблица данных
|
//Собственное состояние - таблица данных
|
||||||
const dataGrid = {
|
const dataGrid = {
|
||||||
rn: 0,
|
rn: 0,
|
||||||
@ -58,7 +58,6 @@ const useConf = (currentTab, handleSectionChange, order) => {
|
|||||||
const [rrpConf, setRrpConf] = useState({
|
const [rrpConf, setRrpConf] = useState({
|
||||||
docLoaded: false,
|
docLoaded: false,
|
||||||
sections: [],
|
sections: [],
|
||||||
orderChanged: false,
|
|
||||||
reload: true
|
reload: true
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -77,17 +76,14 @@ const useConf = (currentTab, handleSectionChange, order) => {
|
|||||||
}, []);
|
}, []);
|
||||||
|
|
||||||
//Загрузка данных разделов регламентированного отчёта
|
//Загрузка данных разделов регламентированного отчёта
|
||||||
const loadData = useCallback(
|
const loadData = useCallback(async () => {
|
||||||
async () => {
|
|
||||||
if (rrpConf.reload) {
|
if (rrpConf.reload) {
|
||||||
//Переменная номера раздела с фокусом
|
//Переменная номера раздела с фокусом
|
||||||
let tabFocus = currentTab ? currentTab : 0;
|
let tabFocus = currentTab ? currentTab : 0;
|
||||||
const data = await executeStored({
|
const data = await executeStored({
|
||||||
stored: "PKG_P8PANELS_RRPCONFED.RRPCONF_GET_SECTIONS",
|
stored: "PKG_P8PANELS_RRPCONFED.RRPCONF_GET_SECTIONS",
|
||||||
args: {
|
args: {
|
||||||
NRN_RRPCONF: Number(getNavigationSearch().NRN),
|
NRN_RRPCONF: Number(getNavigationSearch().NRN)
|
||||||
NROW_ORDER: Number(order.rowOrder),
|
|
||||||
NCOL_ORDER: Number(order.columnOrder)
|
|
||||||
},
|
},
|
||||||
respArg: "COUT"
|
respArg: "COUT"
|
||||||
});
|
});
|
||||||
@ -98,9 +94,7 @@ const useConf = (currentTab, handleSectionChange, order) => {
|
|||||||
//Массив из нескольких разделов и из одного
|
//Массив из нескольких разделов и из одного
|
||||||
const sections = data.SECTIONS ? (data.SECTIONS.length ? data.SECTIONS : [data.SECTIONS]) : [];
|
const sections = data.SECTIONS ? (data.SECTIONS.length ? data.SECTIONS : [data.SECTIONS]) : [];
|
||||||
//Заполнение очередного раздела по шаблону
|
//Заполнение очередного раздела по шаблону
|
||||||
sections
|
sections.map(s => {
|
||||||
.sort((a, b) => a.SCODE - b.SCODE)
|
|
||||||
.map(s => {
|
|
||||||
let dg = {};
|
let dg = {};
|
||||||
Object.assign(dg, dataGrid, {
|
Object.assign(dg, dataGrid, {
|
||||||
...s.XDATA.XDATA_GRID,
|
...s.XDATA.XDATA_GRID,
|
||||||
@ -149,8 +143,8 @@ const useConf = (currentTab, handleSectionChange, order) => {
|
|||||||
dataGrids[index] = dg;
|
dataGrids[index] = dg;
|
||||||
//Удаляем из копированного массива
|
//Удаляем из копированного массива
|
||||||
cloneDGs.splice(cloneDGs.indexOf(cloneDGs.find(x => x.rn === dg.rn)), 1);
|
cloneDGs.splice(cloneDGs.indexOf(cloneDGs.find(x => x.rn === dg.rn)), 1);
|
||||||
//Устанавливаем фокус на обновлённый раздел, если был добавлен
|
//Устанавливаем фокус на обновлённый раздел
|
||||||
tabFocus = rrpConf.orderChanged ? 0 : index;
|
tabFocus = index;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
//Если раздел новый, то добавляем его в массив данных
|
//Если раздел новый, то добавляем его в массив данных
|
||||||
@ -172,21 +166,13 @@ const useConf = (currentTab, handleSectionChange, order) => {
|
|||||||
setRrpConf(pv => ({
|
setRrpConf(pv => ({
|
||||||
...pv,
|
...pv,
|
||||||
docLoaded: true,
|
docLoaded: true,
|
||||||
orderChanged: false,
|
|
||||||
reload: false,
|
reload: false,
|
||||||
sections: dataGrids
|
sections: dataGrids
|
||||||
}));
|
}));
|
||||||
handleSectionChange(tabFocus);
|
handleSectionChange(tabFocus);
|
||||||
}
|
}
|
||||||
},
|
|
||||||
// eslint-disable-next-line react-hooks/exhaustive-deps
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
||||||
[rrpConf.reload, rrpConf.docLoaded, dataGrid.reload, dataGrid.docLoaded, executeStored]
|
}, [rrpConf.reload, rrpConf.docLoaded, dataGrid.reload, dataGrid.docLoaded, executeStored]);
|
||||||
);
|
|
||||||
|
|
||||||
//При изменении сортировок
|
|
||||||
useEffect(() => {
|
|
||||||
setRrpConf(pv => ({ ...pv, orderChanged: true, reload: true }));
|
|
||||||
}, [order]);
|
|
||||||
|
|
||||||
//При необходимости обновить данные таблицы
|
//При необходимости обновить данные таблицы
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
|
@ -44,14 +44,8 @@ const RrpConfEditor = () => {
|
|||||||
//Состояние вкладки
|
//Состояние вкладки
|
||||||
const [tabValue, handleSectionChange] = useTab("");
|
const [tabValue, handleSectionChange] = useTab("");
|
||||||
|
|
||||||
//Состояние сортировки строк и граф
|
|
||||||
const [order, setOrder] = useState({ rowOrder: 0, columnOrder: 0 });
|
|
||||||
|
|
||||||
//Изменение состояния сортировки строк и граф
|
|
||||||
const handleOrder = newOrder => setOrder(newOrder);
|
|
||||||
|
|
||||||
//Состояние настройки
|
//Состояние настройки
|
||||||
const [rrpConf, handleReload] = useConf(tabValue, handleSectionChange, order);
|
const [rrpConf, handleReload] = useConf(tabValue, handleSectionChange);
|
||||||
|
|
||||||
//Функции открытия разделов
|
//Функции открытия разделов
|
||||||
const [handleMarkOpen, handleMarkCnOpen, handleMarkCnInsert] = useRecOpen(handleReload);
|
const [handleMarkOpen, handleMarkCnOpen, handleMarkCnInsert] = useRecOpen(handleReload);
|
||||||
@ -142,8 +136,6 @@ const RrpConfEditor = () => {
|
|||||||
section={s}
|
section={s}
|
||||||
tabValue={tabValue}
|
tabValue={tabValue}
|
||||||
index={i}
|
index={i}
|
||||||
order={order}
|
|
||||||
onOrderChange={handleOrder}
|
|
||||||
containerProps={{ height, pxOuterMenuH, pxPanelHeaderH, pxTabsH }}
|
containerProps={{ height, pxOuterMenuH, pxPanelHeaderH, pxTabsH }}
|
||||||
handleReload={handleReload}
|
handleReload={handleReload}
|
||||||
handleMarkOpen={handleMarkOpen}
|
handleMarkOpen={handleMarkOpen}
|
||||||
|
@ -3,25 +3,23 @@ create or replace package PKG_P8PANELS_RRPCONFED as
|
|||||||
/* Получение разделов регламентированного отчёта */
|
/* Получение разделов регламентированного отчёта */
|
||||||
procedure RRPCONF_GET_SECTIONS
|
procedure RRPCONF_GET_SECTIONS
|
||||||
(
|
(
|
||||||
NRN_RRPCONF in number, -- Рег. номер настройки форм регламентированного отчёта
|
NRN_RRPCONF in number, -- Ид. нстройки форм регламентированного отчёта
|
||||||
NROW_ORDER in number := 0, -- Порядок сортировки строк
|
|
||||||
NCOL_ORDER in number := 0, -- Порядок сортировки граф
|
|
||||||
COUT out clob -- Список разделов
|
COUT out clob -- Список разделов
|
||||||
);
|
);
|
||||||
|
|
||||||
/* Добавление раздела регламентированного отчёта */
|
/* Добавление раздела регламентированного отчёта */
|
||||||
procedure RRPCONFSCTN_INSERT
|
procedure RRPCONFSCTN_INSERT
|
||||||
(
|
(
|
||||||
NPRN in number, -- Рег. номер настройки форм регламентированного отчёта
|
NPRN in number, -- Ид. настройки форм регламентированного отчёта
|
||||||
SCODE in varchar2, -- Мнемокод
|
SCODE in varchar2, -- Мнемокод
|
||||||
SNAME in varchar2, -- Наименование
|
SNAME in varchar2, -- Наименование
|
||||||
NRN out number -- Рег. номер созданной записи
|
NRN out number -- Ид. созданной записи
|
||||||
);
|
);
|
||||||
|
|
||||||
/* Исправление раздела регламентированного отчёта */
|
/* Исправление раздела регламентированного отчёта */
|
||||||
procedure RRPCONFSCTN_UPDATE
|
procedure RRPCONFSCTN_UPDATE
|
||||||
(
|
(
|
||||||
NRN in number, -- Рег. номер раздела
|
NRN in number, -- Ид. раздела
|
||||||
SCODE in varchar2, -- Мнемокод раздела
|
SCODE in varchar2, -- Мнемокод раздела
|
||||||
SNAME in varchar2 -- Наименование раздела
|
SNAME in varchar2 -- Наименование раздела
|
||||||
);
|
);
|
||||||
@ -29,16 +27,16 @@ create or replace package PKG_P8PANELS_RRPCONFED as
|
|||||||
/* Удаление раздела регламентированного отчёта */
|
/* Удаление раздела регламентированного отчёта */
|
||||||
procedure RRPCONFSCTN_DELETE
|
procedure RRPCONFSCTN_DELETE
|
||||||
(
|
(
|
||||||
NRN in number -- Рег. номер раздела
|
NRN in number -- Ид. раздела
|
||||||
);
|
);
|
||||||
|
|
||||||
/* Получение кодов настройки, раздела и показателя раздела по ид. показателя раздела */
|
/* Получение кодов настройки, раздела и показателя раздела по ид. показателя раздела */
|
||||||
procedure RRPCONFSCTNMRK_GET_CODES
|
procedure RRPCONFSCTNMRK_GET_CODES
|
||||||
(
|
(
|
||||||
NRN in number, -- Рег. номер показателя раздела
|
NRN in number, -- Ид. показателя раздела
|
||||||
SRRPCONF out varchar2, -- Мнемокод настройки формы регламентированного отчёта
|
SRRPCONF out varchar2, -- Код настройки формы регламентированного отчёта
|
||||||
SRRPCONFSCTN out varchar2, -- Мнемокод раздела
|
SRRPCONFSCTN out varchar2, -- Код раздела
|
||||||
SRRPCONFSCTNMRK out varchar2 -- Мнемокод показателя раздела
|
SRRPCONFSCTNMRK out varchar2 -- Код показателя раздела
|
||||||
);
|
);
|
||||||
|
|
||||||
/* Формирование кода и наименования показателя раздела регламентированного отчёта */
|
/* Формирование кода и наименования показателя раздела регламентированного отчёта */
|
||||||
@ -61,25 +59,25 @@ create or replace package PKG_P8PANELS_RRPCONFED as
|
|||||||
/* Добавление показателя раздела регламентированного отчёта */
|
/* Добавление показателя раздела регламентированного отчёта */
|
||||||
procedure RRPCONFSCTNMRK_INSERT
|
procedure RRPCONFSCTNMRK_INSERT
|
||||||
(
|
(
|
||||||
NPRN in number, -- Рег. номер раздела
|
NPRN in number, -- Ид. раздела
|
||||||
SCODE in varchar2, -- Мнемокод показателя раздела
|
SCODE in varchar2, -- Мнемокод показателя раздела
|
||||||
SNAME in varchar2, -- Наименование показателя раздела
|
SNAME in varchar2, -- Наименование показателя раздела
|
||||||
NRRPROW in number, -- Рег. номер строки
|
NRRPROW in number, -- Рег. номер строки
|
||||||
NRRPCOLUMN in number, -- Рег. номер графы
|
NRRPCOLUMN in number, -- Рег. номер графы
|
||||||
NRN out number -- Рег. номер созданной записи
|
NRN out number -- Ид. созданной записи
|
||||||
);
|
);
|
||||||
|
|
||||||
/* Исправление показателя раздела регламентированного отчёта */
|
/* Исправление показателя раздела регламентированного отчёта */
|
||||||
procedure RRPCONFSCTNMRK_UPDATE
|
procedure RRPCONFSCTNMRK_UPDATE
|
||||||
(
|
(
|
||||||
NRN in number, -- Рег. номер показателя раздела
|
NRN in number, -- Ид. показателя раздела
|
||||||
SNAME in varchar2 -- Новое наименование
|
SNAME in varchar2 -- Новое наименование
|
||||||
);
|
);
|
||||||
|
|
||||||
/* Удаление показателя раздела регламентированного отчёта */
|
/* Удаление показателя раздела регламентированного отчёта */
|
||||||
procedure RRPCONFSCTNMRK_DELETE
|
procedure RRPCONFSCTNMRK_DELETE
|
||||||
(
|
(
|
||||||
NRN in number -- Рег. номер показателя раздела
|
NRN in number -- Ид. показателя раздела
|
||||||
);
|
);
|
||||||
|
|
||||||
end PKG_P8PANELS_RRPCONFED;
|
end PKG_P8PANELS_RRPCONFED;
|
||||||
@ -780,9 +778,7 @@ create or replace package body PKG_P8PANELS_RRPCONFED as
|
|||||||
/* Получение разделов регламентированного отчёта */
|
/* Получение разделов регламентированного отчёта */
|
||||||
procedure RRPCONF_GET_SECTIONS
|
procedure RRPCONF_GET_SECTIONS
|
||||||
(
|
(
|
||||||
NRN_RRPCONF in number, -- Рег. номер настройки форм регламентированного отчёта
|
NRN_RRPCONF in number, -- Ид. нстройки форм регламентированного отчёта
|
||||||
NROW_ORDER in number := 0, -- Порядок сортировки строк
|
|
||||||
NCOL_ORDER in number := 0, -- Порядок сортировки граф
|
|
||||||
COUT out clob -- Список разделов
|
COUT out clob -- Список разделов
|
||||||
)
|
)
|
||||||
is
|
is
|
||||||
@ -798,140 +794,58 @@ create or replace package body PKG_P8PANELS_RRPCONFED as
|
|||||||
SSECTION_CODE PKG_STD.TSTRING; -- Мнемокод раздела настройки
|
SSECTION_CODE PKG_STD.TSTRING; -- Мнемокод раздела настройки
|
||||||
SSECTION_NAME PKG_STD.TSTRING; -- Наименование раздела настройки
|
SSECTION_NAME PKG_STD.TSTRING; -- Наименование раздела настройки
|
||||||
CSECTION_CLOB clob; -- Данные по разделу настройки
|
CSECTION_CLOB clob; -- Данные по разделу настройки
|
||||||
CSQL_ROWS clob; -- Запрос по строкам
|
|
||||||
SORDERS_R PKG_STD.TSTRING; -- Сортировка строк
|
|
||||||
ICURSOR_R integer; -- Курсор для исполнения запроса по строкам
|
|
||||||
NROW_RN PKG_STD.TREF; -- Рег. номер строки
|
|
||||||
NROW_POS PKG_STD.TNUMBER := 0; -- Позиция строки
|
|
||||||
SROW_CODE PKG_STD.TSTRING; -- Код строки
|
|
||||||
SROW_NAME PKG_STD.TSTRING; -- Наименование строки
|
|
||||||
CSQL_COLS clob; -- Запрос по графам
|
|
||||||
SORDERS_C PKG_STD.TSTRING; -- Сортировка граф
|
|
||||||
ICURSOR_C integer; -- Курсор для исполнения запроса по графам
|
|
||||||
NCOL_RN PKG_STD.TREF; -- Рег. номер графы
|
|
||||||
SCOL_CODE PKG_STD.TSTRING; -- Код графы
|
|
||||||
SCOL_NAME PKG_STD.TSTRING; -- Наименование графы
|
|
||||||
|
|
||||||
/* Формирование текстового представления сортировки */
|
|
||||||
function ORDER_TEXT_GET
|
|
||||||
(
|
|
||||||
NORDER in number, -- Порядок сортировки
|
|
||||||
SALIAS in varchar2, -- Алиас таблицы
|
|
||||||
NTYPE in number -- Тип таблицы (0 - графы, 1 - строки)
|
|
||||||
) return varchar2 -- Текстовое представление сортировки
|
|
||||||
is
|
|
||||||
SRESULT PKG_STD.TSTRING; -- Текстовое представление сортировки
|
|
||||||
STABLE_COLUMN_CODE PKG_STD.TSTRING; -- Наименование колонки таблицы, содержащую код
|
|
||||||
begin
|
|
||||||
/* Определяем наименование колонки, содержающую код */
|
|
||||||
if (NTYPE = 0) then
|
|
||||||
/* Код графы */
|
|
||||||
STABLE_COLUMN_CODE := 'COLUMN_CODE';
|
|
||||||
else
|
|
||||||
/* Код графы */
|
|
||||||
STABLE_COLUMN_CODE := 'ROW_CODE';
|
|
||||||
end if;
|
|
||||||
/* Формируем представление сортировки */
|
|
||||||
case NORDER
|
|
||||||
/* Код - номер сортировки - мнемокод */
|
|
||||||
when 1 then
|
|
||||||
SRESULT := PKG_SQL_BUILD.LPAD_() || '(' || SALIAS || '.' || STABLE_COLUMN_CODE || ', 40, ''0''),' || SALIAS ||
|
|
||||||
'.SORT_NUMB,' || PKG_SQL_BUILD.LPAD_() || '(' || SALIAS || '.CODE, 20, ''0'')';
|
|
||||||
/* Мнемокод - номер сортировки - код */
|
|
||||||
when 2 then
|
|
||||||
SRESULT := PKG_SQL_BUILD.LPAD_() || '(' || SALIAS || '.CODE, 20, ''0''),' || SALIAS || '.SORT_NUMB,' ||
|
|
||||||
PKG_SQL_BUILD.LPAD_() || '(' || SALIAS || '.' || STABLE_COLUMN_CODE || ', 40, ''0'')';
|
|
||||||
/* Номер сортировки - код - мнемокод */
|
|
||||||
else
|
|
||||||
SRESULT := SALIAS || '.SORT_NUMB,' || PKG_SQL_BUILD.LPAD_() || '(' || SALIAS || '.' || STABLE_COLUMN_CODE ||
|
|
||||||
', 40, ''0''),' || PKG_SQL_BUILD.LPAD_() || '(' || SALIAS || '.CODE, 20, ''0'')';
|
|
||||||
end case;
|
|
||||||
/* Возвращаем результат */
|
|
||||||
return SRESULT;
|
|
||||||
end ORDER_TEXT_GET;
|
|
||||||
|
|
||||||
/* Инициализация колонок граф показателей */
|
/* Инициализация колонок граф показателей */
|
||||||
procedure MARKS_COLUMNS_INIT
|
procedure MARKS_COLUMNS_INIT
|
||||||
(
|
(
|
||||||
RDG in out nocopy PKG_P8PANELS_VISUAL.TDG, -- Описание таблицы
|
RDG in out nocopy PKG_P8PANELS_VISUAL.TDG, -- Описание таблицы
|
||||||
NRRPCONFSCTN in number, -- Рег. номер раздела
|
NRRPCONFSCTN in number -- Рег. номер раздела
|
||||||
SORDER in varchar2 -- Сортировка
|
|
||||||
)
|
)
|
||||||
is
|
is
|
||||||
CSQL clob; -- Запрос по графам показателей раздела
|
|
||||||
ICURSOR integer; -- Курсор для исполнения запроса по графам показателей раздела
|
|
||||||
SCOL_CODE PKG_STD.TSTRING; -- Мнемокод графы
|
|
||||||
SCOL_NAME PKG_STD.TSTRING; -- Наименование графы
|
|
||||||
begin
|
begin
|
||||||
/* Добавляем подсказку совместимости */
|
/* Цикл по графам показателей раздела */
|
||||||
CSQL := null;
|
for REC in (select C.CODE,
|
||||||
CSQL := PKG_SQL_BUILD.COMPATIBLE(SSQL => CSQL);
|
C.NAME
|
||||||
PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => 'select C.CODE,');
|
from RRPCONFSCTNMRK T,
|
||||||
PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' C.NAME');
|
RRPCOLUMN C
|
||||||
PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' from RRPCONFSCTNMRK T,');
|
where T.PRN = NRRPCONFSCTN
|
||||||
PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' RRPCOLUMN C');
|
and T.RRPCOLUMN = C.RN
|
||||||
PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' where T.PRN = ' || NRRPCONFSCTN);
|
group by C.RN,
|
||||||
PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' and T.RRPCOLUMN = C.RN');
|
C.CODE,
|
||||||
PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' group by C.RN,');
|
C.NAME
|
||||||
PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' C.CODE,');
|
order by C.CODE)
|
||||||
PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' C.NAME,');
|
|
||||||
PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' C.COLUMN_CODE,');
|
|
||||||
PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' C.SORT_NUMB');
|
|
||||||
PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' order by ' || SORDER);
|
|
||||||
/* Разбираем его */
|
|
||||||
ICURSOR := PKG_SQL_DML.OPEN_CURSOR(SWHAT => 'SELECT');
|
|
||||||
PKG_SQL_DML.PARSE(ICURSOR => ICURSOR, SQUERY => CSQL);
|
|
||||||
/* Описываем структуру записи курсора */
|
|
||||||
PKG_SQL_DML.DEFINE_COLUMN_STR(ICURSOR => ICURSOR, IPOSITION => 1);
|
|
||||||
PKG_SQL_DML.DEFINE_COLUMN_STR(ICURSOR => ICURSOR, IPOSITION => 2);
|
|
||||||
/* Делаем выборку */
|
|
||||||
if (PKG_SQL_DML.EXECUTE(ICURSOR => ICURSOR) = 0) then
|
|
||||||
null;
|
|
||||||
end if;
|
|
||||||
/* Обходим графы показателей раздела */
|
|
||||||
while (PKG_SQL_DML.FETCH_ROWS(ICURSOR => ICURSOR) > 0)
|
|
||||||
loop
|
loop
|
||||||
/* Считываем рег. номер строки */
|
|
||||||
PKG_SQL_DML.COLUMN_VALUE_STR(ICURSOR => ICURSOR, IPOSITION => 1, SVALUE => SCOL_CODE);
|
|
||||||
/* Считываем код строки */
|
|
||||||
PKG_SQL_DML.COLUMN_VALUE_STR(ICURSOR => ICURSOR, IPOSITION => 2, SVALUE => SCOL_NAME);
|
|
||||||
/* Наименование графы */
|
/* Наименование графы */
|
||||||
PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG,
|
PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG,
|
||||||
SNAME => 'SCOL_' || SCOL_CODE,
|
SNAME => 'SCOL_' || REC.CODE,
|
||||||
SCAPTION => SCOL_NAME,
|
SCAPTION => REC.NAME,
|
||||||
SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR,
|
SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR,
|
||||||
NWIDTH => 200);
|
NWIDTH => 200);
|
||||||
/* Рег. номер графы */
|
/* Рег. номер графы */
|
||||||
PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG,
|
PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG,
|
||||||
SNAME => 'NCOL_RN_' || SCOL_CODE,
|
SNAME => 'NCOL_RN_' || REC.CODE,
|
||||||
SCAPTION => SCOL_NAME || ' рег. номер',
|
SCAPTION => REC.NAME || ' рег. номер',
|
||||||
SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB,
|
SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB,
|
||||||
BVISIBLE => false);
|
BVISIBLE => false);
|
||||||
/* Рег. номер показателя */
|
/* Рег. номер показателя */
|
||||||
PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG,
|
PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG,
|
||||||
SNAME => 'NMARK_RN_' || SCOL_CODE,
|
SNAME => 'NMARK_RN_' || REC.CODE,
|
||||||
SCAPTION => SCOL_NAME || ' рег. номер показателя',
|
SCAPTION => REC.NAME || ' рег. номер показателя',
|
||||||
SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB,
|
SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB,
|
||||||
BVISIBLE => false);
|
BVISIBLE => false);
|
||||||
/* Мнемокод показателя */
|
/* Мнемокод показателя */
|
||||||
PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG,
|
PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG,
|
||||||
SNAME => 'SMARK_CODE_' || SCOL_CODE,
|
SNAME => 'SMARK_CODE_' || REC.CODE,
|
||||||
SCAPTION => SCOL_NAME || ' мнемокод показателя',
|
SCAPTION => REC.NAME || ' мнемокод показателя',
|
||||||
SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR,
|
SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR,
|
||||||
BVISIBLE => false);
|
BVISIBLE => false);
|
||||||
/* Для составов показтелей */
|
/* Для составов показтелей */
|
||||||
PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG,
|
PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG,
|
||||||
SNAME => 'MARK_CNS_' || SCOL_CODE,
|
SNAME => 'MARK_CNS_' || REC.CODE,
|
||||||
SCAPTION => SCOL_NAME || ' состав показателя',
|
SCAPTION => REC.NAME || ' состав показателя',
|
||||||
SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR,
|
SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR,
|
||||||
BVISIBLE => false);
|
BVISIBLE => false);
|
||||||
end loop;
|
end loop;
|
||||||
/* Освобождаем курсор */
|
|
||||||
PKG_SQL_DML.CLOSE_CURSOR(ICURSOR => ICURSOR);
|
|
||||||
exception
|
|
||||||
when others then
|
|
||||||
PKG_SQL_DML.CLOSE_CURSOR(ICURSOR => ICURSOR);
|
|
||||||
raise;
|
|
||||||
end MARKS_COLUMNS_INIT;
|
end MARKS_COLUMNS_INIT;
|
||||||
|
|
||||||
/* Считывание показателя по строке/графе */
|
/* Считывание показателя по строке/графе */
|
||||||
@ -984,159 +898,91 @@ create or replace package body PKG_P8PANELS_RRPCONFED as
|
|||||||
loop
|
loop
|
||||||
/* Инициализируем таблицу данных */
|
/* Инициализируем таблицу данных */
|
||||||
RDG := PKG_P8PANELS_VISUAL.TDG_MAKE(BFIXED_HEADER => true, NFIXED_COLUMNS => 1);
|
RDG := PKG_P8PANELS_VISUAL.TDG_MAKE(BFIXED_HEADER => true, NFIXED_COLUMNS => 1);
|
||||||
/* Наименование строки */
|
/* Формируем структуру заголовка */
|
||||||
PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG,
|
PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG,
|
||||||
SNAME => 'SROW_NAME',
|
SNAME => 'SROW_NAME',
|
||||||
SCAPTION => '',
|
SCAPTION => '',
|
||||||
SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR,
|
SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR,
|
||||||
NWIDTH => 150);
|
NWIDTH => 150);
|
||||||
/* Позиция строки */
|
/* Формируем структуру заголовка */
|
||||||
PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG,
|
|
||||||
SNAME => 'NROW_POS',
|
|
||||||
SCAPTION => 'Позиция строки',
|
|
||||||
SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB,
|
|
||||||
BVISIBLE => false);
|
|
||||||
/* Мнемокод строки */
|
|
||||||
PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG,
|
PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG,
|
||||||
SNAME => 'SROW_CODE',
|
SNAME => 'SROW_CODE',
|
||||||
SCAPTION => 'Мнемокод строки',
|
SCAPTION => 'Мнемокод строки',
|
||||||
SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR,
|
SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR,
|
||||||
BVISIBLE => false);
|
BVISIBLE => false);
|
||||||
/* Рег. номер строки */
|
/* Формируем структуру заголовка */
|
||||||
PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG,
|
PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG,
|
||||||
SNAME => 'NROW_RN',
|
SNAME => 'NROW_RN',
|
||||||
SCAPTION => 'Рег. номер строки',
|
SCAPTION => 'Рег. номер строки',
|
||||||
SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB,
|
SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_NUMB,
|
||||||
BVISIBLE => false);
|
BVISIBLE => false);
|
||||||
/* Обнуляем счётчик позиции строки */
|
|
||||||
NROW_POS := 0;
|
|
||||||
/* Если раздел содержит показатели */
|
/* Если раздел содержит показатели */
|
||||||
if (S.NMARKS_EXISTS = 1) then
|
if (S.NMARKS_EXISTS = 1) then
|
||||||
/* Формируем текстовое представление сортировки графы */
|
|
||||||
SORDERS_C := ORDER_TEXT_GET(NORDER => NCOL_ORDER, SALIAS => 'C', NTYPE => 0);
|
|
||||||
/* Инициализируем колонки граф */
|
/* Инициализируем колонки граф */
|
||||||
MARKS_COLUMNS_INIT(RDG => RDG, NRRPCONFSCTN => S.NRN, SORDER => SORDERS_C);
|
MARKS_COLUMNS_INIT(RDG => RDG, NRRPCONFSCTN => S.NRN);
|
||||||
begin
|
/* Обходим строки раздела */
|
||||||
/* Формируем текстовое представление сортировки строки */
|
for R in (select R.RN,
|
||||||
SORDERS_R := ORDER_TEXT_GET(NORDER => NROW_ORDER, SALIAS => 'R', NTYPE => 1);
|
R.CODE,
|
||||||
/* Добавляем подсказку совместимости */
|
R.NAME
|
||||||
CSQL_ROWS := PKG_SQL_BUILD.COMPATIBLE();
|
from RRPCONFSCTNMRK T,
|
||||||
PKG_SQL_BUILD.APPEND(SSQL => CSQL_ROWS, SELEMENT1 => 'select R.RN,');
|
RRPROW R
|
||||||
PKG_SQL_BUILD.APPEND(SSQL => CSQL_ROWS, SELEMENT1 => ' R.CODE,');
|
where T.PRN = S.NRN
|
||||||
PKG_SQL_BUILD.APPEND(SSQL => CSQL_ROWS, SELEMENT1 => ' R.NAME');
|
and R.RN = T.RRPROW
|
||||||
PKG_SQL_BUILD.APPEND(SSQL => CSQL_ROWS, SELEMENT1 => ' from RRPCONFSCTNMRK T,');
|
group by R.RN,
|
||||||
PKG_SQL_BUILD.APPEND(SSQL => CSQL_ROWS, SELEMENT1 => ' RRPROW R');
|
R.CODE,
|
||||||
PKG_SQL_BUILD.APPEND(SSQL => CSQL_ROWS, SELEMENT1 => ' where T.PRN = ' || S.NRN);
|
R.NAME,
|
||||||
PKG_SQL_BUILD.APPEND(SSQL => CSQL_ROWS, SELEMENT1 => ' and R.RN = T.RRPROW');
|
R.ROW_CODE,
|
||||||
PKG_SQL_BUILD.APPEND(SSQL => CSQL_ROWS, SELEMENT1 => ' group by R.RN,');
|
R.SORT_NUMB
|
||||||
PKG_SQL_BUILD.APPEND(SSQL => CSQL_ROWS, SELEMENT1 => ' R.CODE,');
|
order by R.SORT_NUMB,
|
||||||
PKG_SQL_BUILD.APPEND(SSQL => CSQL_ROWS, SELEMENT1 => ' R.NAME,');
|
LPAD(R.ROW_CODE, 40, '0'),
|
||||||
PKG_SQL_BUILD.APPEND(SSQL => CSQL_ROWS, SELEMENT1 => ' R.ROW_CODE,');
|
LPAD(R.CODE, 20, '0'))
|
||||||
PKG_SQL_BUILD.APPEND(SSQL => CSQL_ROWS, SELEMENT1 => ' R.SORT_NUMB');
|
|
||||||
PKG_SQL_BUILD.APPEND(SSQL => CSQL_ROWS, SELEMENT1 => ' order by ' || SORDERS_R);
|
|
||||||
/* Разбираем его */
|
|
||||||
ICURSOR_R := PKG_SQL_DML.OPEN_CURSOR(SWHAT => 'SELECT');
|
|
||||||
PKG_SQL_DML.PARSE(ICURSOR => ICURSOR_R, SQUERY => CSQL_ROWS);
|
|
||||||
/* Описываем структуру записи курсора */
|
|
||||||
PKG_SQL_DML.DEFINE_COLUMN_NUM(ICURSOR => ICURSOR_R, IPOSITION => 1);
|
|
||||||
PKG_SQL_DML.DEFINE_COLUMN_STR(ICURSOR => ICURSOR_R, IPOSITION => 2);
|
|
||||||
PKG_SQL_DML.DEFINE_COLUMN_STR(ICURSOR => ICURSOR_R, IPOSITION => 3);
|
|
||||||
/* Делаем выборку */
|
|
||||||
if (PKG_SQL_DML.EXECUTE(ICURSOR => ICURSOR_R) = 0) then
|
|
||||||
null;
|
|
||||||
end if;
|
|
||||||
/* Обходим выбранные записи */
|
|
||||||
while (PKG_SQL_DML.FETCH_ROWS(ICURSOR => ICURSOR_R) > 0)
|
|
||||||
loop
|
loop
|
||||||
/* Считываем рег. номер строки */
|
|
||||||
PKG_SQL_DML.COLUMN_VALUE_NUM(ICURSOR => ICURSOR_R, IPOSITION => 1, NVALUE => NROW_RN);
|
|
||||||
/* Считываем код строки */
|
|
||||||
PKG_SQL_DML.COLUMN_VALUE_STR(ICURSOR => ICURSOR_R, IPOSITION => 2, SVALUE => SROW_CODE);
|
|
||||||
/* Считываем наименование строки */
|
|
||||||
PKG_SQL_DML.COLUMN_VALUE_STR(ICURSOR => ICURSOR_R, IPOSITION => 3, SVALUE => SROW_NAME);
|
|
||||||
/* Заполняем наименование строки */
|
/* Заполняем наименование строки */
|
||||||
PKG_P8PANELS_VISUAL.TDG_ROW_ADD_COL(RROW => RDG_ROW,
|
PKG_P8PANELS_VISUAL.TDG_ROW_ADD_COL(RROW => RDG_ROW, SNAME => 'SROW_NAME', SVALUE => R.NAME, BCLEAR => true);
|
||||||
SNAME => 'SROW_NAME',
|
|
||||||
SVALUE => SROW_NAME,
|
|
||||||
BCLEAR => true);
|
|
||||||
/* Заполняем позицию строки */
|
|
||||||
PKG_P8PANELS_VISUAL.TDG_ROW_ADD_COL(RROW => RDG_ROW, SNAME => 'NROW_POS', NVALUE => NROW_POS);
|
|
||||||
/* Заполняем мнемокод строки */
|
/* Заполняем мнемокод строки */
|
||||||
PKG_P8PANELS_VISUAL.TDG_ROW_ADD_COL(RROW => RDG_ROW, SNAME => 'SROW_CODE', SVALUE => SROW_CODE);
|
PKG_P8PANELS_VISUAL.TDG_ROW_ADD_COL(RROW => RDG_ROW, SNAME => 'SROW_CODE', SVALUE => R.CODE);
|
||||||
/* Заполняем рег. номер строки */
|
/* Заполняем рег. номер строки */
|
||||||
PKG_P8PANELS_VISUAL.TDG_ROW_ADD_COL(RROW => RDG_ROW, SNAME => 'NROW_RN', NVALUE => NROW_RN);
|
PKG_P8PANELS_VISUAL.TDG_ROW_ADD_COL(RROW => RDG_ROW, SNAME => 'NROW_RN', NVALUE => R.RN);
|
||||||
/* Добавляем подсказку совместимости */
|
/* Обходим графы раздела */
|
||||||
CSQL_COLS := PKG_SQL_BUILD.COMPATIBLE();
|
for C in (select C.RN,
|
||||||
PKG_SQL_BUILD.APPEND(SSQL => CSQL_COLS, SELEMENT1 => 'select C.RN,');
|
C.CODE,
|
||||||
PKG_SQL_BUILD.APPEND(SSQL => CSQL_COLS, SELEMENT1 => ' C.CODE,');
|
C.NAME
|
||||||
PKG_SQL_BUILD.APPEND(SSQL => CSQL_COLS, SELEMENT1 => ' C.NAME');
|
from RRPCONFSCTNMRK T,
|
||||||
PKG_SQL_BUILD.APPEND(SSQL => CSQL_COLS, SELEMENT1 => ' from RRPCONFSCTNMRK T,');
|
RRPCOLUMN C
|
||||||
PKG_SQL_BUILD.APPEND(SSQL => CSQL_COLS, SELEMENT1 => ' RRPCOLUMN C');
|
where T.PRN = S.NRN
|
||||||
PKG_SQL_BUILD.APPEND(SSQL => CSQL_COLS, SELEMENT1 => ' where T.PRN = ' || S.NRN);
|
and C.RN = T.RRPCOLUMN
|
||||||
PKG_SQL_BUILD.APPEND(SSQL => CSQL_COLS, SELEMENT1 => ' and C.RN = T.RRPCOLUMN');
|
group by C.RN,
|
||||||
PKG_SQL_BUILD.APPEND(SSQL => CSQL_COLS, SELEMENT1 => ' group by C.RN,');
|
C.CODE,
|
||||||
PKG_SQL_BUILD.APPEND(SSQL => CSQL_COLS, SELEMENT1 => ' C.CODE,');
|
C.NAME,
|
||||||
PKG_SQL_BUILD.APPEND(SSQL => CSQL_COLS, SELEMENT1 => ' C.NAME,');
|
C.COLUMN_CODE,
|
||||||
PKG_SQL_BUILD.APPEND(SSQL => CSQL_COLS, SELEMENT1 => ' C.COLUMN_CODE,');
|
C.SORT_NUMB
|
||||||
PKG_SQL_BUILD.APPEND(SSQL => CSQL_COLS, SELEMENT1 => ' C.SORT_NUMB');
|
order by C.SORT_NUMB,
|
||||||
PKG_SQL_BUILD.APPEND(SSQL => CSQL_COLS, SELEMENT1 => ' order by ' || SORDERS_C);
|
LPAD(C.COLUMN_CODE, 40, '0'),
|
||||||
/* Разбираем его */
|
LPAD(C.CODE, 20, '0'))
|
||||||
ICURSOR_C := PKG_SQL_DML.OPEN_CURSOR(SWHAT => 'SELECT');
|
|
||||||
PKG_SQL_DML.PARSE(ICURSOR => ICURSOR_C, SQUERY => CSQL_COLS);
|
|
||||||
/* Описываем структуру записи курсора */
|
|
||||||
PKG_SQL_DML.DEFINE_COLUMN_NUM(ICURSOR => ICURSOR_C, IPOSITION => 1);
|
|
||||||
PKG_SQL_DML.DEFINE_COLUMN_STR(ICURSOR => ICURSOR_C, IPOSITION => 2);
|
|
||||||
PKG_SQL_DML.DEFINE_COLUMN_STR(ICURSOR => ICURSOR_C, IPOSITION => 3);
|
|
||||||
/* Делаем выборку */
|
|
||||||
if (PKG_SQL_DML.EXECUTE(ICURSOR => ICURSOR_C) = 0) then
|
|
||||||
null;
|
|
||||||
end if;
|
|
||||||
/* Обходим выбранные записи */
|
|
||||||
while (PKG_SQL_DML.FETCH_ROWS(ICURSOR => ICURSOR_C) > 0)
|
|
||||||
loop
|
loop
|
||||||
/* Считываем рег. номер графы */
|
|
||||||
PKG_SQL_DML.COLUMN_VALUE_NUM(ICURSOR => ICURSOR_C, IPOSITION => 1, NVALUE => NCOL_RN);
|
|
||||||
/* Считываем код графы */
|
|
||||||
PKG_SQL_DML.COLUMN_VALUE_STR(ICURSOR => ICURSOR_C, IPOSITION => 2, SVALUE => SCOL_CODE);
|
|
||||||
/* Считываем наименование графы */
|
|
||||||
PKG_SQL_DML.COLUMN_VALUE_STR(ICURSOR => ICURSOR_C, IPOSITION => 3, SVALUE => SCOL_NAME);
|
|
||||||
/* Считываем показатель по строке/графе */
|
/* Считываем показатель по строке/графе */
|
||||||
RRRPCONFSCTNMRK := RRPCONFSCTNMRK_GET_ROWCOL(NRRPCONFSCTN => S.NRN,
|
RRRPCONFSCTNMRK := RRPCONFSCTNMRK_GET_ROWCOL(NRRPCONFSCTN => S.NRN, NRRPROW => R.RN, NRRPCOLUMN => C.RN);
|
||||||
NRRPROW => NROW_RN,
|
|
||||||
NRRPCOLUMN => NCOL_RN);
|
|
||||||
/* Заполняем наименование графы */
|
|
||||||
PKG_P8PANELS_VISUAL.TDG_ROW_ADD_COL(RROW => RDG_ROW, SNAME => 'SCOL_' || SCOL_CODE, SVALUE => SCOL_NAME);
|
|
||||||
/* Заполняем рег. номер графы */
|
/* Заполняем рег. номер графы */
|
||||||
PKG_P8PANELS_VISUAL.TDG_ROW_ADD_COL(RROW => RDG_ROW, SNAME => 'NCOL_RN_' || SCOL_CODE, NVALUE => NCOL_RN);
|
PKG_P8PANELS_VISUAL.TDG_ROW_ADD_COL(RROW => RDG_ROW, SNAME => 'SCOL_' || C.CODE, SVALUE => C.NAME);
|
||||||
|
/* Заполняем рег. номер графы */
|
||||||
|
PKG_P8PANELS_VISUAL.TDG_ROW_ADD_COL(RROW => RDG_ROW, SNAME => 'NCOL_RN_' || C.CODE, NVALUE => C.RN);
|
||||||
/* Заполняем рег. номер показателя */
|
/* Заполняем рег. номер показателя */
|
||||||
PKG_P8PANELS_VISUAL.TDG_ROW_ADD_COL(RROW => RDG_ROW,
|
PKG_P8PANELS_VISUAL.TDG_ROW_ADD_COL(RROW => RDG_ROW,
|
||||||
SNAME => 'NMARK_RN_' || SCOL_CODE,
|
SNAME => 'NMARK_RN_' || C.CODE,
|
||||||
NVALUE => RRRPCONFSCTNMRK.RN);
|
NVALUE => RRRPCONFSCTNMRK.RN);
|
||||||
/* Если ошибка считывания показателя */
|
/* Если ошибка считывания показателя */
|
||||||
if (RRRPCONFSCTNMRK.RN is not null) then
|
if (RRRPCONFSCTNMRK.RN is not null) then
|
||||||
/* Заполняем мнемокод показателя */
|
/* Заполняем мнемокод показателя */
|
||||||
PKG_P8PANELS_VISUAL.TDG_ROW_ADD_COL(RROW => RDG_ROW,
|
PKG_P8PANELS_VISUAL.TDG_ROW_ADD_COL(RROW => RDG_ROW,
|
||||||
SNAME => 'SMARK_CODE_' || SCOL_CODE,
|
SNAME => 'SMARK_CODE_' || C.CODE,
|
||||||
SVALUE => RRRPCONFSCTNMRK.CODE);
|
SVALUE => RRRPCONFSCTNMRK.CODE);
|
||||||
/* Добавляем атрибут состава показателей */
|
/* Добавляем атрибут состава показателей */
|
||||||
PKG_P8PANELS_VISUAL.TDG_ROW_ADD_COL(RROW => RDG_ROW, SNAME => 'MARK_CNS_' || SCOL_CODE, SVALUE => null);
|
PKG_P8PANELS_VISUAL.TDG_ROW_ADD_COL(RROW => RDG_ROW, SNAME => 'MARK_CNS_' || C.CODE, SVALUE => null);
|
||||||
end if;
|
end if;
|
||||||
end loop;
|
end loop;
|
||||||
/* Освобождаем курсор */
|
|
||||||
PKG_SQL_DML.CLOSE_CURSOR(ICURSOR => ICURSOR_C);
|
|
||||||
/* Добавим строку для раздела */
|
/* Добавим строку для раздела */
|
||||||
PKG_P8PANELS_VISUAL.TDG_ADD_ROW(RDATA_GRID => RDG, RROW => RDG_ROW);
|
PKG_P8PANELS_VISUAL.TDG_ADD_ROW(RDATA_GRID => RDG, RROW => RDG_ROW);
|
||||||
/* Инкрементируем счётчик позиции строки */
|
|
||||||
NROW_POS := NROW_POS + 1;
|
|
||||||
end loop;
|
end loop;
|
||||||
/* Освобождаем курсор */
|
|
||||||
PKG_SQL_DML.CLOSE_CURSOR(ICURSOR => ICURSOR_R);
|
|
||||||
exception
|
|
||||||
when others then
|
|
||||||
PKG_SQL_DML.CLOSE_CURSOR(ICURSOR => ICURSOR_R);
|
|
||||||
PKG_SQL_DML.CLOSE_CURSOR(ICURSOR => ICURSOR_C);
|
|
||||||
raise;
|
|
||||||
end;
|
|
||||||
end if;
|
end if;
|
||||||
/* Сериализуем описание */
|
/* Сериализуем описание */
|
||||||
CDG := PKG_P8PANELS_VISUAL.TDG_TO_XML(RDATA_GRID => RDG, NINCLUDE_DEF => 1);
|
CDG := PKG_P8PANELS_VISUAL.TDG_TO_XML(RDATA_GRID => RDG, NINCLUDE_DEF => 1);
|
||||||
@ -1212,10 +1058,10 @@ create or replace package body PKG_P8PANELS_RRPCONFED as
|
|||||||
/* Добавление раздела регламентированного отчёта */
|
/* Добавление раздела регламентированного отчёта */
|
||||||
procedure RRPCONFSCTN_INSERT
|
procedure RRPCONFSCTN_INSERT
|
||||||
(
|
(
|
||||||
NPRN in number, -- Рег. номер настройки форм регламентированного отчёта
|
NPRN in number, -- Ид. настройки форм регламентированного отчёта
|
||||||
SCODE in varchar2, -- Мнемокод
|
SCODE in varchar2, -- Мнемокод
|
||||||
SNAME in varchar2, -- Наименование
|
SNAME in varchar2, -- Наименование
|
||||||
NRN out number -- Рег. номер созданной записи
|
NRN out number -- Ид. созданной записи
|
||||||
)
|
)
|
||||||
is
|
is
|
||||||
NCOMPANY PKG_STD.TREF := GET_SESSION_COMPANY(); -- Рег. номер организации
|
NCOMPANY PKG_STD.TREF := GET_SESSION_COMPANY(); -- Рег. номер организации
|
||||||
@ -1240,7 +1086,7 @@ create or replace package body PKG_P8PANELS_RRPCONFED as
|
|||||||
/* Исправление раздела регламентированного отчёта */
|
/* Исправление раздела регламентированного отчёта */
|
||||||
procedure RRPCONFSCTN_UPDATE
|
procedure RRPCONFSCTN_UPDATE
|
||||||
(
|
(
|
||||||
NRN in number, -- Рег. номер раздела
|
NRN in number, -- Ид. раздела
|
||||||
SCODE in varchar2, -- Мнемокод раздела
|
SCODE in varchar2, -- Мнемокод раздела
|
||||||
SNAME in varchar2 -- Наименование раздела
|
SNAME in varchar2 -- Наименование раздела
|
||||||
)
|
)
|
||||||
@ -1279,7 +1125,7 @@ create or replace package body PKG_P8PANELS_RRPCONFED as
|
|||||||
/* Удаление раздела регламентированного отчёта */
|
/* Удаление раздела регламентированного отчёта */
|
||||||
procedure RRPCONFSCTN_DELETE
|
procedure RRPCONFSCTN_DELETE
|
||||||
(
|
(
|
||||||
NRN in number -- Рег. номер раздела
|
NRN in number -- Ид. раздела
|
||||||
)
|
)
|
||||||
is
|
is
|
||||||
NCOMPANY PKG_STD.TREF := GET_SESSION_COMPANY(); -- Рег. номер организации
|
NCOMPANY PKG_STD.TREF := GET_SESSION_COMPANY(); -- Рег. номер организации
|
||||||
@ -1296,10 +1142,10 @@ create or replace package body PKG_P8PANELS_RRPCONFED as
|
|||||||
/* Получение кодов настройки, раздела и показателя раздела по ид. показателя раздела */
|
/* Получение кодов настройки, раздела и показателя раздела по ид. показателя раздела */
|
||||||
procedure RRPCONFSCTNMRK_GET_CODES
|
procedure RRPCONFSCTNMRK_GET_CODES
|
||||||
(
|
(
|
||||||
NRN in number, -- Рег. номер показателя раздела
|
NRN in number, -- Ид. показателя раздела
|
||||||
SRRPCONF out varchar2, -- Мнемокод настройки формы регламентированного отчёта
|
SRRPCONF out varchar2, -- Код настройки формы регламентированного отчёта
|
||||||
SRRPCONFSCTN out varchar2, -- Мнемокод раздела
|
SRRPCONFSCTN out varchar2, -- Код раздела
|
||||||
SRRPCONFSCTNMRK out varchar2 -- Мнемокод показателя раздела
|
SRRPCONFSCTNMRK out varchar2 -- Код показателя раздела
|
||||||
)
|
)
|
||||||
is
|
is
|
||||||
begin
|
begin
|
||||||
@ -1381,12 +1227,12 @@ create or replace package body PKG_P8PANELS_RRPCONFED as
|
|||||||
/* Добавление показателя раздела регламентированного отчёта */
|
/* Добавление показателя раздела регламентированного отчёта */
|
||||||
procedure RRPCONFSCTNMRK_INSERT
|
procedure RRPCONFSCTNMRK_INSERT
|
||||||
(
|
(
|
||||||
NPRN in number, -- Рег. номер раздела
|
NPRN in number, -- Ид. раздела
|
||||||
SCODE in varchar2, -- Мнемокод показателя раздела
|
SCODE in varchar2, -- Мнемокод показателя раздела
|
||||||
SNAME in varchar2, -- Наименование показателя раздела
|
SNAME in varchar2, -- Наименование показателя раздела
|
||||||
NRRPROW in number, -- Рег. номер строки
|
NRRPROW in number, -- Рег. номер строки
|
||||||
NRRPCOLUMN in number, -- Рег. номер графы
|
NRRPCOLUMN in number, -- Рег. номер графы
|
||||||
NRN out number -- Рег. номер созданной записи
|
NRN out number -- Ид. созданной записи
|
||||||
)
|
)
|
||||||
is
|
is
|
||||||
NCOMPANY PKG_STD.TREF := GET_SESSION_COMPANY(); -- Рег. номер организации
|
NCOMPANY PKG_STD.TREF := GET_SESSION_COMPANY(); -- Рег. номер организации
|
||||||
@ -1439,7 +1285,7 @@ create or replace package body PKG_P8PANELS_RRPCONFED as
|
|||||||
/* Исправление показателя раздела регламентированного отчёта */
|
/* Исправление показателя раздела регламентированного отчёта */
|
||||||
procedure RRPCONFSCTNMRK_UPDATE
|
procedure RRPCONFSCTNMRK_UPDATE
|
||||||
(
|
(
|
||||||
NRN in number, -- Рег. номер показателя раздела
|
NRN in number, -- Ид. показателя раздела
|
||||||
SNAME in varchar2 -- Новое наименование
|
SNAME in varchar2 -- Новое наименование
|
||||||
)
|
)
|
||||||
is
|
is
|
||||||
@ -1494,7 +1340,7 @@ create or replace package body PKG_P8PANELS_RRPCONFED as
|
|||||||
/* Удаление показателя раздела регламентированного отчёта */
|
/* Удаление показателя раздела регламентированного отчёта */
|
||||||
procedure RRPCONFSCTNMRK_DELETE
|
procedure RRPCONFSCTNMRK_DELETE
|
||||||
(
|
(
|
||||||
NRN in number -- Рег. номер показателя раздела
|
NRN in number -- Ид. показателя раздела
|
||||||
)
|
)
|
||||||
is
|
is
|
||||||
NCOMPANY PKG_STD.TREF := GET_SESSION_COMPANY(); -- Рег. номер организации
|
NCOMPANY PKG_STD.TREF := GET_SESSION_COMPANY(); -- Рег. номер организации
|
||||||
|
Loading…
x
Reference in New Issue
Block a user