forked from CITKParus/P8-Panels
		
	
		
			
				
	
	
		
			1497 lines
		
	
	
		
			93 KiB
		
	
	
	
		
			SQL
		
	
	
	
	
	
			
		
		
	
	
			1497 lines
		
	
	
		
			93 KiB
		
	
	
	
		
			SQL
		
	
	
	
	
	
| create or replace package PKG_P8PANELS_RRPCONFED as
 | ||
| 
 | ||
|   /* Добавление показателя раздела регламентированного отчёта */
 | ||
|   procedure RRPCONFSCTNMRK_INSERT
 | ||
|   (
 | ||
|     NPRN                    in number,   -- Рег. номер раздела
 | ||
|     SCODE                   in varchar2, -- Мнемокод показателя раздела
 | ||
|     SNAME                   in varchar2, -- Наименование показателя раздела
 | ||
|     NRRPROW                 in number,   -- Рег. номер строки
 | ||
|     SRRPROW                 in varchar2, -- Код строки (игнорируется, если указан рег. номер строки)
 | ||
|     SRRPVERSION_ROW         in varchar2, -- Код редакции строки (игнорируется, если указан рег. номер строки)
 | ||
|     NRRPCOLUMN              in number,   -- Рег. номер графы
 | ||
|     SRRPCOLUMN              in varchar2, -- Код графы
 | ||
|     SRRPVERSION_COLUMN      in varchar2, -- Код редакции графы
 | ||
|     NRN                     out number   -- Рег. номер созданной записи
 | ||
|   );
 | ||
|   
 | ||
|   /* Исправление показателя раздела регламентированного отчёта */
 | ||
|   procedure RRPCONFSCTNMRK_UPDATE
 | ||
|   (
 | ||
|     NRN                     in number,   -- Рег. номер показателя раздела            
 | ||
|     SCODE                   in varchar2, -- Мнемокод показателя раздела
 | ||
|     SNAME                   in varchar2, -- Наименование показателя раздела
 | ||
|     SRRPROW                 in varchar2, -- Код строки
 | ||
|     SRRPVERSION_ROW         in varchar2, -- Код редакции строки
 | ||
|     SRRPCOLUMN              in varchar2, -- Код графы
 | ||
|     SRRPVERSION_COLUMN      in varchar2  -- Код редакции графы
 | ||
|   );
 | ||
|   
 | ||
|   /* Удаление показателя раздела регламентированного отчёта */
 | ||
|   procedure RRPCONFSCTNMRK_DELETE
 | ||
|   (        
 | ||
|     NRN                     in number   -- Рег. номер показателя раздела
 | ||
|   );
 | ||
|   
 | ||
|   /* Получение раздела регламентированного отчёта */
 | ||
|   procedure RRPCONFSCTN_GET
 | ||
|   (
 | ||
|     NRRPCONFSCTN            in number,      -- Рег. номер раздела настройки форм регламентированного отчёта
 | ||
|     NROW_ORDER              in number := 0, -- Порядок сортировки строк (0 - по номеру, 1 - по коду, 2 - по мнемокоду)
 | ||
|     NCOL_ORDER              in number := 0, -- Порядок сортировки граф (0 - по номеру, 1 - по коду, 2 - по мнемокоду)
 | ||
|     COUT                    out clob        -- Данные раздела
 | ||
|   );
 | ||
| 
 | ||
|   /* Добавление раздела регламентированного отчёта */
 | ||
|   procedure RRPCONFSCTN_INSERT
 | ||
|   (
 | ||
|     NPRN                    in number,   -- Рег. номер настройки форм регламентированного отчёта
 | ||
|     SCODE                   in varchar2, -- Мнемокод
 | ||
|     SNAME                   in varchar2, -- Наименование
 | ||
|     NRN                     out number   -- Рег. номер созданной записи
 | ||
|   );
 | ||
|   
 | ||
|   /* Исправление раздела регламентированного отчёта */
 | ||
|   procedure RRPCONFSCTN_UPDATE
 | ||
|   (
 | ||
|     NRN                     in number,   -- Рег. номер раздела
 | ||
|     SCODE                   in varchar2, -- Мнемокод раздела
 | ||
|     SNAME                   in varchar2  -- Наименование раздела
 | ||
|   );
 | ||
|   
 | ||
|   /* Удаление раздела регламентированного отчёта */
 | ||
|   procedure RRPCONFSCTN_DELETE
 | ||
|   (
 | ||
|     NRN                     in number   -- Рег. номер раздела
 | ||
|   );
 | ||
|   
 | ||
|   /* Получение описания настройки регламентированного отчета */
 | ||
|   procedure RRPCONF_GET
 | ||
|   (
 | ||
|     NRRPCONF                in number,  -- Рег. номер настройки форм регламентированного отчёта
 | ||
|     COUT                    out clob    -- Описание настройки
 | ||
|   );
 | ||
|   
 | ||
| end PKG_P8PANELS_RRPCONFED;
 | ||
| /
 | ||
| create or replace package body PKG_P8PANELS_RRPCONFED as
 | ||
| 
 | ||
|   /* Константы - общие параметры формирования данных */
 | ||
|   NSECTION_NAME_MAX_LEN     constant PKG_STD.TNUMBER := 100; -- Максимальный отображаемый размер наименования раздела настройки (символов)
 | ||
|   
 | ||
|   /* Константы - параметры таблицы показателей раздела настройки РО */
 | ||
|   NMRKS_DG_COL_WIDTH        constant PKG_STD.TNUMBER := 250; -- Ширина колонки (пикселей)
 | ||
|   
 | ||
|   /* Константы - маски для формирования представления параметров состава показателя */
 | ||
|   SPRM_MASK_ACC_DC          constant PKG_STD.TSTRING := 'ДЕБЕТ_КРЕДИТ'; -- Маска для параметров "Счет дебет" и "Счет кредит"
 | ||
|   SPRM_MASK_ACC             constant PKG_STD.TSTRING := 'СЧЕТ';         -- Маска для параметров "Счет"
 | ||
|   SPRM_MASK_ACC_WO_ANL      constant PKG_STD.TSTRING := 'СЧЕТ_БЕЗ_АНЛ'; -- Маска для параметров "Счет" без учета аналитик
 | ||
|   SPRM_MASK_DATE_FROM       constant PKG_STD.TSTRING := 'ДАТА_С';       -- Маска для параметров "Дата с"
 | ||
|   SPRM_MASK_DATE_TO         constant PKG_STD.TSTRING := 'ДАТА_ПО';      -- Маска для параметров "Дата по"
 | ||
|   SPRM_MASK_RRPCONF         constant PKG_STD.TSTRING := 'НАСТРОЙКА';    -- Маска для параметров настройки РО
 | ||
|   
 | ||
|   /* Константы - мнемокоды разделов */
 | ||
|   SUNIT_RRPCONFSCTN         constant PKG_STD.TSTRING := 'RRPConfigSection';     -- Раздел настройки регламентированного отчета
 | ||
|   SUNIT_RRPCONFSCTNMRK      constant PKG_STD.TSTRING := 'RRPConfigSectionMark'; -- Показатель раздела настройки регламентированного отчета
 | ||
|   
 | ||
|   /* Константы - действия разделов */
 | ||
|   SACTION_DELETE            constant PKG_STD.TSTRING := 'DELETE'; -- Удаление
 | ||
|   
 | ||
|   /* Получение доступности действия раздела */
 | ||
|   function UTL_UNIT_ACTION_GET_ALLOW
 | ||
|   (
 | ||
|     NCOMPANY                in number,       -- Рег. номер организации
 | ||
|     NRN                     in number,       -- Рег. номер записи
 | ||
|     SUNIT                   in varchar2,     -- Мнемокод раздела (см. константы SUNIT_*)
 | ||
|     SACTION                 in varchar2      -- Действие (см. константы SACTION_*)   
 | ||
|   ) return                  number           -- Доступность действия (0 - недоступно, 1 - доступно)
 | ||
|   is
 | ||
|     NRESULT                 PKG_STD.TNUMBER; -- Доступность действия (0 - недоступно, 1 - доступно)
 | ||
|   begin
 | ||
|     /* Исходим отраздела */
 | ||
|     case SUNIT
 | ||
|       /* Раздел настройки регламентированного отчета */
 | ||
|       when SUNIT_RRPCONFSCTN then
 | ||
|         /* Исходим от действия */
 | ||
|         case SACTION
 | ||
|           /* Удаление */
 | ||
|           when SACTION_DELETE then
 | ||
|             begin
 | ||
|               /* Выполним типовую проверку */
 | ||
|               P_RRPCONFSCTN_BASE_CHECK(SMODE => 'D',
 | ||
|                                        RREC  => GET_RRPCONFSCTN_ID(NFLAG_SMART => 0, NCOMPANY => NCOMPANY, NRN => NRN));
 | ||
|               /* Проверка пройдена - можно удалять */
 | ||
|               NRESULT := 1;
 | ||
|             exception
 | ||
|               /* Если проверка выдала ошибку - удаление невозможно */
 | ||
|               when others then
 | ||
|                 NRESULT := 0;
 | ||
|             end;
 | ||
|           /* Действие неопределено - нельзя выполнять */
 | ||
|           else
 | ||
|             NRESULT := 0;
 | ||
|         end case;
 | ||
|       /* Показатель раздела настройки регламентированного отчета */
 | ||
|       when SUNIT_RRPCONFSCTNMRK then
 | ||
|         /* Исходим от действия */
 | ||
|         case SACTION
 | ||
|           /* Удаление */
 | ||
|           when SACTION_DELETE then
 | ||
|             begin
 | ||
|               /* Выполним типовую проверку */
 | ||
|               P_RRPCONFSCTNMRK_BASE_CHECK(SMODE => 'D',
 | ||
|                                           RREC  => GET_RRPCONFSCTNMRK_ID(NFLAG_SMART => 0,
 | ||
|                                                                          NCOMPANY    => NCOMPANY,
 | ||
|                                                                          NRN         => NRN));
 | ||
|               /* Проверка пройдена - можно удалять */
 | ||
|               NRESULT := 1;
 | ||
|             exception
 | ||
|               /* Если проверка выдала ошибку - удаление невозможно */
 | ||
|               when others then
 | ||
|                 NRESULT := 0;
 | ||
|             end;
 | ||
|           /* Действие неопределено - нельзя выполнять */
 | ||
|           else
 | ||
|             NRESULT := 0;
 | ||
|         end case;
 | ||
|       /* Раздел неопределен - нельзя делать */
 | ||
|       else
 | ||
|         NRESULT := 0;
 | ||
|     end case;
 | ||
|     /* Возвращаем результат */
 | ||
|     return NRESULT;
 | ||
|   end UTL_UNIT_ACTION_GET_ALLOW;
 | ||
|   
 | ||
|   /* Считывание типа источинка состава показателя в текстовом представлении */
 | ||
|   function RRPCONFSCTNMRKCN_GET_ST
 | ||
|   (
 | ||
|     NSOURCE_TYPE            in number,       -- Тип источника
 | ||
|     SSOURCE_UNIT            in varchar2      -- Раздел источника
 | ||
|   ) return                  varchar2         -- Тип источника в текстовом представлении
 | ||
|   is
 | ||
|     SRESULT                 PKG_STD.TSTRING; -- Тип источника в текстовом представлении
 | ||
|   begin
 | ||
|     /* Строковое представление источника значения */
 | ||
|     case NSOURCE_TYPE
 | ||
|       when 0 then
 | ||
|         /* Исходим от раздела */
 | ||
|         case SSOURCE_UNIT
 | ||
|           when 'EconomicOperations' then
 | ||
|             SRESULT := 'ХО';
 | ||
|           when 'DebitorsCreditorsAccounts' then
 | ||
|             SRESULT := 'РСДК';
 | ||
|           when 'AccountsRemnants' then
 | ||
|             SRESULT := 'ОС';
 | ||
|           when 'ValuesRemnants' then
 | ||
|             SRESULT := 'ТМЦ';
 | ||
|           when 'DebitorsCreditorsRemnants' then
 | ||
|             SRESULT := 'ДКЗ';
 | ||
|           when 'Inventory' then
 | ||
|             SRESULT := 'ИК';
 | ||
|           when 'ItemsCards' then
 | ||
|             SRESULT := 'МБП';
 | ||
|           when 'OperCards' then
 | ||
|             SRESULT := 'КОБП';
 | ||
|           when 'DeclarationIncome' then
 | ||
|             SRESULT := 'ДПНП';
 | ||
|           when 'RRPDocuments' then
 | ||
|             SRESULT := 'РО';
 | ||
|           else
 | ||
|             SRESULT := null;
 | ||
|         end case;
 | ||
|       when 1 then
 | ||
|         SRESULT := 'РП';
 | ||
|       when 2 then
 | ||
|         SRESULT := 'ХП';
 | ||
|       when 3 then
 | ||
|         SRESULT := 'СЗ';
 | ||
|       when 4 then
 | ||
|         SRESULT := 'fx';
 | ||
|       else
 | ||
|         SRESULT := null;
 | ||
|     end case;
 | ||
|     /* Возвращаем результат */
 | ||
|     return SRESULT;
 | ||
|   end RRPCONFSCTNMRKCN_GET_ST;
 | ||
|     
 | ||
|   /* Считывание знака состава показателя в текстовом представлении */
 | ||
|   function RRPCONFSCTNMRKCN_GET_SIGN
 | ||
|   (
 | ||
|     NSIGN                   in number        -- Знак состава показателя
 | ||
|   ) return                  varchar2         -- Знак состава показателя в текстовом представлении
 | ||
|   is
 | ||
|     SRESULT                 PKG_STD.TSTRING; -- Знак состава показателя в текстовом представлении
 | ||
|   begin
 | ||
|     /* Опеределяем знак */
 | ||
|     case NSIGN
 | ||
|       when 0 then
 | ||
|         SRESULT := '+';
 | ||
|       when 1 then
 | ||
|         SRESULT := '-';
 | ||
|       else
 | ||
|         SRESULT := '+/-';
 | ||
|     end case;
 | ||
|     /* Возвращаем результат */
 | ||
|     return SRESULT;
 | ||
|   end RRPCONFSCTNMRKCN_GET_SIGN;
 | ||
| 
 | ||
|   /* Формирование описателя состава показателя регламентированного отчета */
 | ||
|   function RRPCONFSCTNMRKCN_GET_DESC
 | ||
|   (
 | ||
|     NCOMPANY                in number,                -- Рег. номер организации
 | ||
|     NRRPCONFSCTNMRKCN       in number                 -- Рег. номер состава показателя регламентированного отчета
 | ||
|   ) return                  varchar2                  -- Описатель показателя
 | ||
|   is
 | ||
|     SRESULT                 PKG_STD.TSTRING;          -- Описатель показателя
 | ||
|     SCN_DESC                PKG_STD.TSTRING;          -- Основные параметры состава показателя
 | ||
|     RREC                    RRPCONFSCTNMRKCN%rowtype; -- Запись состава показателя регламентированного отчета
 | ||
|     RRRPCONFSCTNMRK         RRPCONFSCTNMRK%rowtype;   -- Запись показателя регламентированного отчета
 | ||
|   
 | ||
|     /* Считывание мнемокода показателя по рег. номеру состава показателя */
 | ||
|     function MARK_GET_CODE_BY_CN
 | ||
|     (
 | ||
|       NRRPCONFSCTNMRKCN     in number        -- Рег. номер состава показателя
 | ||
|     ) return                varchar2         -- Мнемокод показателя
 | ||
|     is
 | ||
|       SRESULT               PKG_STD.TSTRING; -- Мнемокод показателя
 | ||
|     begin
 | ||
|       /* Считываем мнемокод показателя */
 | ||
|       begin
 | ||
|         select M.CODE
 | ||
|           into SRESULT
 | ||
|           from RRPCONFSCTNMRKCN T,
 | ||
|                RRPCONFSCTNMRK   M
 | ||
|          where T.RN = NRRPCONFSCTNMRKCN
 | ||
|            and M.RN = T.PRN;
 | ||
|       exception
 | ||
|         when others then
 | ||
|           SRESULT := null;
 | ||
|       end;
 | ||
|       /* Возвращаем результат */
 | ||
|       return SRESULT;
 | ||
|     end MARK_GET_CODE_BY_CN;
 | ||
|     
 | ||
|     /* Считывание мнемокода настройки по рег. номеру состава показателя */
 | ||
|     function CONF_GET_CODE_BY_CN
 | ||
|     (
 | ||
|       NRRPCONFSCTNMRKCN     in number        -- Рег. номер состава показателя
 | ||
|     ) return                varchar2         -- Мнемокод настройки регламентированного отчета
 | ||
|     is
 | ||
|       SRESULT               PKG_STD.TSTRING; -- Мнемокод настройки регламентированного отчета
 | ||
|     begin
 | ||
|       /* Считываем мнемокод настройки регламентированного отчета */
 | ||
|       begin
 | ||
|         select C.CODE
 | ||
|           into SRESULT
 | ||
|           from RRPCONFSCTNMRKCN T,
 | ||
|                RRPCONFSCTNMRK   M,
 | ||
|                RRPCONF          C
 | ||
|          where T.RN = NRRPCONFSCTNMRKCN
 | ||
|            and M.RN = T.PRN
 | ||
|            and C.RN = M.RRPCONF;
 | ||
|       exception
 | ||
|         when others then
 | ||
|           SRESULT := null;
 | ||
|       end;
 | ||
|       /* Возвращаем результат */
 | ||
|       return SRESULT;
 | ||
|     end CONF_GET_CODE_BY_CN;
 | ||
|     
 | ||
|     /* Формирование представления параметров состава показателя */
 | ||
|     procedure MAKE_PRMS_BY_MASK
 | ||
|     (
 | ||
|       SPRMS_DESC            in out varchar2, -- Строковое представление параметров
 | ||
|       NCOMPANY              in number,       -- Рег. номер организации
 | ||
|       NRRPCONFSCTNMRKCN     in number,       -- Рег. номер состава показателя
 | ||
|       SMASK                 in varchar2      -- Маска (см. константы SPRM_MASK_*)
 | ||
|     )
 | ||
|     is
 | ||
|       SDATE_FROM            PKG_STD.TSTRING; -- Строковое представление "Дата с"
 | ||
|       SDATE_TO              PKG_STD.TSTRING; -- Строковое представление "Дата по"
 | ||
|       DDATE_FROM            PKG_STD.TLDATE;  -- ДАТА_С
 | ||
|       SDATE_FROM_PATTERN    PKG_STD.TSTRING; -- ДАТА_С_ШАБЛОН
 | ||
|       DDATE_TO              PKG_STD.TLDATE;  -- ДАТА_ПО
 | ||
|       SDATE_TO_PATTERN      PKG_STD.TSTRING; -- ДАТА_ПО_ШАБЛОН
 | ||
|       SACCOUNT_DEBIT        PKG_STD.TSTRING; -- СЧЕТ_ДЕБЕТ
 | ||
|       SANALYTIC_DEBIT1      PKG_STD.TSTRING; -- АНАЛИТИКА1_ДЕБЕТ
 | ||
|       SANALYTIC_DEBIT2      PKG_STD.TSTRING; -- АНАЛИТИКА2_ДЕБЕТ
 | ||
|       SANALYTIC_DEBIT3      PKG_STD.TSTRING; -- АНАЛИТИКА3_ДЕБЕТ
 | ||
|       SANALYTIC_DEBIT4      PKG_STD.TSTRING; -- АНАЛИТИКА4_ДЕБЕТ
 | ||
|       SANALYTIC_DEBIT5      PKG_STD.TSTRING; -- АНАЛИТИКА5_ДЕБЕТ
 | ||
|       SACCOUNT_CREDIT       PKG_STD.TSTRING; -- СЧЕТ_КРЕДИТ
 | ||
|       SANALYTIC_CREDIT1     PKG_STD.TSTRING; -- АНАЛИТИКА1_КРЕДИТ
 | ||
|       SANALYTIC_CREDIT2     PKG_STD.TSTRING; -- АНАЛИТИКА2_КРЕДИТ
 | ||
|       SANALYTIC_CREDIT3     PKG_STD.TSTRING; -- АНАЛИТИКА3_КРЕДИТ
 | ||
|       SANALYTIC_CREDIT4     PKG_STD.TSTRING; -- АНАЛИТИКА4_КРЕДИТ
 | ||
|       SANALYTIC_CREDIT5     PKG_STD.TSTRING; -- АНАЛИТИКА5_КРЕДИТ
 | ||
|       SACCOUNT              PKG_STD.TSTRING; -- СЧЕТ
 | ||
|       SANALYTIC1            PKG_STD.TSTRING; -- АНАЛИТИКА1
 | ||
|       SANALYTIC2            PKG_STD.TSTRING; -- АНАЛИТИКА2
 | ||
|       SANALYTIC3            PKG_STD.TSTRING; -- АНАЛИТИКА3
 | ||
|       SANALYTIC4            PKG_STD.TSTRING; -- АНАЛИТИКА4
 | ||
|       SANALYTIC5            PKG_STD.TSTRING; -- АНАЛИТИКА5
 | ||
|       SRRPCONF              PKG_STD.TSTRING; -- НАСТРОЙКА
 | ||
|       NRRPCONF_RD           PKG_STD.TNUMBER; -- НАСТРОЙКА_ТЕК
 | ||
|       SMARK_CODE            PKG_STD.TSTRING; -- ПОКАЗАТЕЛЬ
 | ||
|       NMARK_CODE_RD         PKG_STD.TNUMBER; -- ПОКАЗАТЕЛЬ_ТЕК
 | ||
|       SMARK_ROW_CODE        PKG_STD.TSTRING; -- СТРОКА_ПОКАЗАТЕЛЯ
 | ||
|       SMARK_COL_CODE        PKG_STD.TSTRING; -- ГРАФА_ПОКАЗАТЕЛЯ
 | ||
|     begin
 | ||
|       /* Получаем представление параметров исходя из маски */
 | ||
|       case SMASK
 | ||
|         /* "Счет дебет" и "Счет кредит" */
 | ||
|         when SPRM_MASK_ACC_DC then
 | ||
|           /* Считывание значения - Счет дебет */
 | ||
|           SACCOUNT_DEBIT := PKG_RRPCONFSCTNMRKCN.PARAM_GET_STR_VALUE(NCOMPANY => NCOMPANY,
 | ||
|                                                                      NPRN     => NRRPCONFSCTNMRKCN,
 | ||
|                                                                      SPARAM   => PKG_RRPCONFSCTNMRKCN.SACCOUNT_DEBIT_P);
 | ||
|           /* Считывание значения - Аналитический счет 1 дебет */
 | ||
|           SANALYTIC_DEBIT1 := PKG_RRPCONFSCTNMRKCN.PARAM_GET_STR_VALUE(NCOMPANY => NCOMPANY,
 | ||
|                                                                        NPRN     => NRRPCONFSCTNMRKCN,
 | ||
|                                                                        SPARAM   => PKG_RRPCONFSCTNMRKCN.SANALYTIC_DEBIT1_P);
 | ||
|           /* Считывание значения - Аналитический счет 2 дебет */
 | ||
|           SANALYTIC_DEBIT2 := PKG_RRPCONFSCTNMRKCN.PARAM_GET_STR_VALUE(NCOMPANY => NCOMPANY,
 | ||
|                                                                        NPRN     => NRRPCONFSCTNMRKCN,
 | ||
|                                                                        SPARAM   => PKG_RRPCONFSCTNMRKCN.SANALYTIC_DEBIT2_P);
 | ||
|           /* Считывание значения - Аналитический счет 3 дебет */
 | ||
|           SANALYTIC_DEBIT3 := PKG_RRPCONFSCTNMRKCN.PARAM_GET_STR_VALUE(NCOMPANY => NCOMPANY,
 | ||
|                                                                        NPRN     => NRRPCONFSCTNMRKCN,
 | ||
|                                                                        SPARAM   => PKG_RRPCONFSCTNMRKCN.SANALYTIC_DEBIT3_P);
 | ||
|           /* Считывание значения - Аналитический счет 4 дебет */
 | ||
|           SANALYTIC_DEBIT4 := PKG_RRPCONFSCTNMRKCN.PARAM_GET_STR_VALUE(NCOMPANY => NCOMPANY,
 | ||
|                                                                        NPRN     => NRRPCONFSCTNMRKCN,
 | ||
|                                                                        SPARAM   => PKG_RRPCONFSCTNMRKCN.SANALYTIC_DEBIT4_P);
 | ||
|           /* Считывание значения - Аналитический счет 5 дебет */
 | ||
|           SANALYTIC_DEBIT5 := PKG_RRPCONFSCTNMRKCN.PARAM_GET_STR_VALUE(NCOMPANY => NCOMPANY,
 | ||
|                                                                        NPRN     => NRRPCONFSCTNMRKCN,
 | ||
|                                                                        SPARAM   => PKG_RRPCONFSCTNMRKCN.SANALYTIC_DEBIT5_P);
 | ||
|           /* Считывание значения - Счет кредит */
 | ||
|           SACCOUNT_CREDIT := PKG_RRPCONFSCTNMRKCN.PARAM_GET_STR_VALUE(NCOMPANY => NCOMPANY,
 | ||
|                                                                       NPRN     => NRRPCONFSCTNMRKCN,
 | ||
|                                                                       SPARAM   => PKG_RRPCONFSCTNMRKCN.SACCOUNT_CREDIT_P);
 | ||
|           /* Считывание значения - Аналитический счет 1 кредит */
 | ||
|           SANALYTIC_CREDIT1 := PKG_RRPCONFSCTNMRKCN.PARAM_GET_STR_VALUE(NCOMPANY => NCOMPANY,
 | ||
|                                                                         NPRN     => NRRPCONFSCTNMRKCN,
 | ||
|                                                                         SPARAM   => PKG_RRPCONFSCTNMRKCN.SANALYTIC_CREDIT1_P);
 | ||
|           /* Считывание значения - Аналитический счет 2 кредит */
 | ||
|           SANALYTIC_CREDIT2 := PKG_RRPCONFSCTNMRKCN.PARAM_GET_STR_VALUE(NCOMPANY => NCOMPANY,
 | ||
|                                                                         NPRN     => NRRPCONFSCTNMRKCN,
 | ||
|                                                                         SPARAM   => PKG_RRPCONFSCTNMRKCN.SANALYTIC_CREDIT2_P);
 | ||
|           /* Считывание значения - Аналитический счет 3 кредит */
 | ||
|           SANALYTIC_CREDIT3 := PKG_RRPCONFSCTNMRKCN.PARAM_GET_STR_VALUE(NCOMPANY => NCOMPANY,
 | ||
|                                                                         NPRN     => NRRPCONFSCTNMRKCN,
 | ||
|                                                                         SPARAM   => PKG_RRPCONFSCTNMRKCN.SANALYTIC_CREDIT3_P);
 | ||
|           /* Считывание значения - Аналитический счет 4 кредит */
 | ||
|           SANALYTIC_CREDIT4 := PKG_RRPCONFSCTNMRKCN.PARAM_GET_STR_VALUE(NCOMPANY => NCOMPANY,
 | ||
|                                                                         NPRN     => NRRPCONFSCTNMRKCN,
 | ||
|                                                                         SPARAM   => PKG_RRPCONFSCTNMRKCN.SANALYTIC_CREDIT4_P);
 | ||
|           /* Считывание значения - Аналитический счет 5 кредит */
 | ||
|           SANALYTIC_CREDIT5 := PKG_RRPCONFSCTNMRKCN.PARAM_GET_STR_VALUE(NCOMPANY => NCOMPANY,
 | ||
|                                                                         NPRN     => NRRPCONFSCTNMRKCN,
 | ||
|                                                                         SPARAM   => PKG_RRPCONFSCTNMRKCN.SANALYTIC_CREDIT5_P);
 | ||
|           /* Если указан счет дебет */
 | ||
|           if ((SACCOUNT_DEBIT is not null) or (SANALYTIC_DEBIT1 is not null) or (SANALYTIC_DEBIT2 is not null) or
 | ||
|              (SANALYTIC_DEBIT3 is not null) or (SANALYTIC_DEBIT4 is not null) or (SANALYTIC_DEBIT5 is not null)) then
 | ||
|             /* Добавляем */
 | ||
|             SPRMS_DESC := SPRMS_DESC || 'Д:' || SACCOUNT_DEBIT || '';
 | ||
|             /* Добавляем информацию об аналитиках */
 | ||
|             SPRMS_DESC := SPRMS_DESC || '(' || SANALYTIC_DEBIT1 || ',' || SANALYTIC_DEBIT2 || ',' || SANALYTIC_DEBIT3 || ',' ||
 | ||
|                           SANALYTIC_DEBIT4 || ',' || SANALYTIC_DEBIT5 || '),';
 | ||
|           end if;
 | ||
|           /* Если указан счет кредит */
 | ||
|           if ((SACCOUNT_CREDIT is not null) or (SANALYTIC_CREDIT1 is not null) or (SANALYTIC_CREDIT2 is not null) or
 | ||
|              (SANALYTIC_CREDIT3 is not null) or (SANALYTIC_CREDIT4 is not null) or (SANALYTIC_CREDIT5 is not null)) then
 | ||
|             /* Добавляем */
 | ||
|             SPRMS_DESC := SPRMS_DESC || 'К:' || SACCOUNT_CREDIT || ',';
 | ||
|             /* Добавляем информацию об аналитиках */
 | ||
|             SPRMS_DESC := SPRMS_DESC || '(' || SANALYTIC_CREDIT1 || ',' || SANALYTIC_CREDIT2 || ',' ||
 | ||
|                           SANALYTIC_CREDIT3 || ',' || SANALYTIC_CREDIT4 || ',' || SANALYTIC_CREDIT5 || '),';
 | ||
|           end if;
 | ||
|         /* "Счет" */
 | ||
|         when SPRM_MASK_ACC then
 | ||
|           /* Считывание значения - Счет */
 | ||
|           SACCOUNT := PKG_RRPCONFSCTNMRKCN.PARAM_GET_STR_VALUE(NCOMPANY => NCOMPANY,
 | ||
|                                                                NPRN     => NRRPCONFSCTNMRKCN,
 | ||
|                                                                SPARAM   => PKG_RRPCONFSCTNMRKCN.SACCOUNT_P);
 | ||
|           /* Считывание значения - Аналитический счет 1 */
 | ||
|           SANALYTIC1 := PKG_RRPCONFSCTNMRKCN.PARAM_GET_STR_VALUE(NCOMPANY => NCOMPANY,
 | ||
|                                                                  NPRN     => NRRPCONFSCTNMRKCN,
 | ||
|                                                                  SPARAM   => PKG_RRPCONFSCTNMRKCN.SANALYTIC1_P);
 | ||
|           /* Считывание значения - Аналитический счет 2 */
 | ||
|           SANALYTIC2 := PKG_RRPCONFSCTNMRKCN.PARAM_GET_STR_VALUE(NCOMPANY => NCOMPANY,
 | ||
|                                                                  NPRN     => NRRPCONFSCTNMRKCN,
 | ||
|                                                                  SPARAM   => PKG_RRPCONFSCTNMRKCN.SANALYTIC2_P);
 | ||
|           /* Считывание значения - Аналитический счет 3 */
 | ||
|           SANALYTIC3 := PKG_RRPCONFSCTNMRKCN.PARAM_GET_STR_VALUE(NCOMPANY => NCOMPANY,
 | ||
|                                                                  NPRN     => NRRPCONFSCTNMRKCN,
 | ||
|                                                                  SPARAM   => PKG_RRPCONFSCTNMRKCN.SANALYTIC3_P);
 | ||
|           /* Считывание значения - Аналитический счет 4 */
 | ||
|           SANALYTIC4 := PKG_RRPCONFSCTNMRKCN.PARAM_GET_STR_VALUE(NCOMPANY => NCOMPANY,
 | ||
|                                                                  NPRN     => NRRPCONFSCTNMRKCN,
 | ||
|                                                                  SPARAM   => PKG_RRPCONFSCTNMRKCN.SANALYTIC4_P);
 | ||
|           /* Считывание значения - Аналитический счет 5 */
 | ||
|           SANALYTIC5 := PKG_RRPCONFSCTNMRKCN.PARAM_GET_STR_VALUE(NCOMPANY => NCOMPANY,
 | ||
|                                                                  NPRN     => NRRPCONFSCTNMRKCN,
 | ||
|                                                                  SPARAM   => PKG_RRPCONFSCTNMRKCN.SANALYTIC5_P);
 | ||
|           /* Если указан счет */
 | ||
|           if ((SACCOUNT is not null) or (SANALYTIC1 is not null) or (SANALYTIC2 is not null) or
 | ||
|              (SANALYTIC3 is not null) or (SANALYTIC4 is not null) or (SANALYTIC5 is not null)) then
 | ||
|             /* Добавляем */
 | ||
|             SPRMS_DESC := SPRMS_DESC || 'С:' || SACCOUNT || '';
 | ||
|             /* Добавляем информацию об аналитиках */
 | ||
|             SPRMS_DESC := SPRMS_DESC || '(' || SANALYTIC1 || ',' || SANALYTIC2 || ',' || SANALYTIC3 || ',' ||
 | ||
|                           SANALYTIC4 || ',' || SANALYTIC5 || '),';
 | ||
|           end if;
 | ||
|         /* "Счет" без аналитик */
 | ||
|         when SPRM_MASK_ACC_WO_ANL then
 | ||
|           /* Считывание значения - Счет */
 | ||
|           SACCOUNT := PKG_RRPCONFSCTNMRKCN.PARAM_GET_STR_VALUE(NCOMPANY => NCOMPANY,
 | ||
|                                                                NPRN     => NRRPCONFSCTNMRKCN,
 | ||
|                                                                SPARAM   => PKG_RRPCONFSCTNMRKCN.SACCOUNT_P);
 | ||
|           /* Если счет не пустой */
 | ||
|           if (SACCOUNT is not null) then
 | ||
|             /* Добавляем информацию по счету */
 | ||
|             SPRMS_DESC := SPRMS_DESC || 'С:' || SACCOUNT || ',';
 | ||
|           end if;
 | ||
|         /* "Дата с" */
 | ||
|         when SPRM_MASK_DATE_FROM then
 | ||
|           /* Считывание значения - Дата с */
 | ||
|           DDATE_FROM := PKG_RRPCONFSCTNMRKCN.PARAM_GET_DATE_VALUE(NCOMPANY => NCOMPANY,
 | ||
|                                                                   NPRN     => NRRPCONFSCTNMRKCN,
 | ||
|                                                                   SPARAM   => PKG_RRPCONFSCTNMRKCN.SDATE_FROM_P);
 | ||
|           /* Считывание значения - Дата с (шаблон) */
 | ||
|           SDATE_FROM_PATTERN := PKG_RRPCONFSCTNMRKCN.PARAM_GET_STR_VALUE(NCOMPANY => NCOMPANY,
 | ||
|                                                                          NPRN     => NRRPCONFSCTNMRKCN,
 | ||
|                                                                          SPARAM   => PKG_RRPCONFSCTNMRKCN.SDATE_FROM_PATTERN_P);
 | ||
|           /* Определяем "Дата с" */
 | ||
|           SDATE_FROM := COALESCE(TO_CHAR(DDATE_FROM, 'dd.mm.yyyy'), SDATE_FROM_PATTERN);
 | ||
|           /* Если указана дата с */
 | ||
|           if (SDATE_FROM is not null) then
 | ||
|             /* Добавляем дату с */
 | ||
|             SPRMS_DESC := SPRMS_DESC || 'ДС:' || SDATE_FROM || ',';
 | ||
|           end if;
 | ||
|         /* "Дата по" */
 | ||
|         when SPRM_MASK_DATE_TO then
 | ||
|           /* Считывание значения - Дата по */
 | ||
|           DDATE_TO := PKG_RRPCONFSCTNMRKCN.PARAM_GET_DATE_VALUE(NCOMPANY => NCOMPANY,
 | ||
|                                                                 NPRN     => NRRPCONFSCTNMRKCN,
 | ||
|                                                                 SPARAM   => PKG_RRPCONFSCTNMRKCN.SDATE_TO_P);
 | ||
|           /* Считывание значения - Дата по (шаблон) */
 | ||
|           SDATE_TO_PATTERN := PKG_RRPCONFSCTNMRKCN.PARAM_GET_STR_VALUE(NCOMPANY => NCOMPANY,
 | ||
|                                                                        NPRN     => NRRPCONFSCTNMRKCN,
 | ||
|                                                                        SPARAM   => PKG_RRPCONFSCTNMRKCN.SDATE_TO_PATTERN_P);
 | ||
|           /* пределяем "Дата по" */
 | ||
|           SDATE_TO := COALESCE(TO_CHAR(DDATE_TO, 'dd.mm.yyyy'), SDATE_TO_PATTERN);
 | ||
|           /* Если указана дата по */
 | ||
|           if (SDATE_TO is not null) then
 | ||
|             /* Добавляем дату по */
 | ||
|             SPRMS_DESC := SPRMS_DESC || 'ДП:' || SDATE_TO || ',';
 | ||
|           end if;
 | ||
|         /* Параметры настройки РО */
 | ||
|         when SPRM_MASK_RRPCONF then
 | ||
|           /* Считывание значения - Настройка регламентированного отчета */
 | ||
|           SRRPCONF := PKG_RRPCONFSCTNMRKCN.PARAM_GET_STR_VALUE(NCOMPANY => NCOMPANY,
 | ||
|                                                                NPRN     => NRRPCONFSCTNMRKCN,
 | ||
|                                                                SPARAM   => PKG_RRPCONFSCTNMRKCN.SRRPCONF_P);
 | ||
|           /* Считывание значения - Настройка регламентированного отчета (текущее) */
 | ||
|           NRRPCONF_RD := PKG_RRPCONFSCTNMRKCN.PARAM_GET_NUM_VALUE(NCOMPANY => NCOMPANY,
 | ||
|                                                                   NPRN     => NRRPCONFSCTNMRKCN,
 | ||
|                                                                   SPARAM   => PKG_RRPCONFSCTNMRKCN.SRRPCONF_RD_P);
 | ||
|           /* Если указана текущая настройка */
 | ||
|           if (NRRPCONF_RD = 1) then
 | ||
|             /* Считываем мнемокод текущей настройки */
 | ||
|             SRRPCONF := CONF_GET_CODE_BY_CN(NRRPCONFSCTNMRKCN => NRRPCONFSCTNMRKCN);
 | ||
|           end if;
 | ||
|           /* Считывание значения - Мнемокод показателя */
 | ||
|           SMARK_CODE := PKG_RRPCONFSCTNMRKCN.PARAM_GET_STR_VALUE(NCOMPANY => NCOMPANY,
 | ||
|                                                                  NPRN     => NRRPCONFSCTNMRKCN,
 | ||
|                                                                  SPARAM   => PKG_RRPCONFSCTNMRKCN.SMARK_CODE_P);
 | ||
|           /* Считывание значения - Мнемокод показателя (текущее) */
 | ||
|           NMARK_CODE_RD := PKG_RRPCONFSCTNMRKCN.PARAM_GET_NUM_VALUE(NCOMPANY => NCOMPANY,
 | ||
|                                                                     NPRN     => NRRPCONFSCTNMRKCN,
 | ||
|                                                                     SPARAM   => PKG_RRPCONFSCTNMRKCN.SMARK_CODE_RD_P);
 | ||
|           /* Если указан текущий показатель */
 | ||
|           if (NMARK_CODE_RD = 1) then
 | ||
|             /* Считываем мнемокод текущей настройки */
 | ||
|             SMARK_CODE := MARK_GET_CODE_BY_CN(NRRPCONFSCTNMRKCN => NRRPCONFSCTNMRKCN);
 | ||
|           end if;
 | ||
|           /* Считывание значения - Мнемокод строки показателя */
 | ||
|           SMARK_ROW_CODE := PKG_RRPCONFSCTNMRKCN.PARAM_GET_STR_VALUE(NCOMPANY => NCOMPANY,
 | ||
|                                                                      NPRN     => NRRPCONFSCTNMRKCN,
 | ||
|                                                                      SPARAM   => PKG_RRPCONFSCTNMRKCN.SMARK_ROW_CODE_P);
 | ||
|           /* Считывание значения - Мнемокод графы показателя */
 | ||
|           SMARK_COL_CODE := PKG_RRPCONFSCTNMRKCN.PARAM_GET_STR_VALUE(NCOMPANY => NCOMPANY,
 | ||
|                                                                      NPRN     => NRRPCONFSCTNMRKCN,
 | ||
|                                                                      SPARAM   => PKG_RRPCONFSCTNMRKCN.SMARK_COL_CODE_P);
 | ||
|           /* Если настройка указана */
 | ||
|           if (SRRPCONF is not null) then
 | ||
|             /* Добавляем */
 | ||
|             SPRMS_DESC := SPRMS_DESC || 'Н:' || SRRPCONF || ',';
 | ||
|           end if;
 | ||
|           /* Если мнемокод показателя указан */
 | ||
|           if (SMARK_CODE is not null) then
 | ||
|             /* Добавляем */
 | ||
|             SPRMS_DESC := SPRMS_DESC || 'П:' || SRRPCONF || ',';
 | ||
|           end if;
 | ||
|           /* Если строка показателя указана */
 | ||
|           if (SMARK_ROW_CODE is not null) then
 | ||
|             /* Добавляем */
 | ||
|             SPRMS_DESC := SPRMS_DESC || 'СТР:' || SMARK_ROW_CODE || ',';
 | ||
|           end if;
 | ||
|           /* Если графа показателя указана */
 | ||
|           if (SMARK_COL_CODE is not null) then
 | ||
|             /* Добавляем */
 | ||
|             SPRMS_DESC := SPRMS_DESC || 'ГРФ:' || SMARK_COL_CODE || ',';
 | ||
|           end if;
 | ||
|         else
 | ||
|           /* Незвестная маска */
 | ||
|           null;
 | ||
|       end case;
 | ||
|     end MAKE_PRMS_BY_MASK;
 | ||
|     
 | ||
|     /* Формирование строки основных параметров для учетного раздела состава показателя */
 | ||
|     function SOURCE_UNIT_GET_PRMS
 | ||
|     (
 | ||
|       NCOMPANY              in number,       -- Рег. номер организации
 | ||
|       NRRPCONFSCTNMRKCN     in number,       -- Рег. номер состава показателя регламентированного отчета
 | ||
|       SSOURCE_UNIT          in varchar2      -- Учетный раздел
 | ||
|     ) return                varchar2         -- Строковое представление основных параметров учетного раздела
 | ||
|     is
 | ||
|       SRESULT               PKG_STD.TSTRING; -- Строковое представление основных параметров учетного раздела
 | ||
|     begin
 | ||
|       /* Открываем параметры */
 | ||
|       SRESULT := '(';
 | ||
|       /* Собираем параметры исходя из раздела */
 | ||
|       case SSOURCE_UNIT
 | ||
|         /* Хозяйственные операции */
 | ||
|         when 'EconomicOperations' then
 | ||
|           /* Получаем информацию по "Счет дебет" и "Счет кредит" */
 | ||
|           MAKE_PRMS_BY_MASK(SPRMS_DESC        => SRESULT,
 | ||
|                             NCOMPANY          => NCOMPANY,
 | ||
|                             NRRPCONFSCTNMRKCN => NRRPCONFSCTNMRKCN,
 | ||
|                             SMASK             => SPRM_MASK_ACC_DC);
 | ||
|           /* Добавляем информацию по "Дата с" */
 | ||
|           MAKE_PRMS_BY_MASK(SPRMS_DESC        => SRESULT,
 | ||
|                             NCOMPANY          => NCOMPANY,
 | ||
|                             NRRPCONFSCTNMRKCN => NRRPCONFSCTNMRKCN,
 | ||
|                             SMASK             => SPRM_MASK_DATE_FROM);
 | ||
|           /* Добавляем информацию по "Дата по" */
 | ||
|           MAKE_PRMS_BY_MASK(SPRMS_DESC        => SRESULT,
 | ||
|                             NCOMPANY          => NCOMPANY,
 | ||
|                             NRRPCONFSCTNMRKCN => NRRPCONFSCTNMRKCN,
 | ||
|                             SMASK             => SPRM_MASK_DATE_TO);
 | ||
|         /* Расчёты с дебиторами/кредиторами */
 | ||
|         when 'DebitorsCreditorsAccounts' then
 | ||
|           /* Получаем информацию по "Счет" */
 | ||
|           MAKE_PRMS_BY_MASK(SPRMS_DESC        => SRESULT,
 | ||
|                             NCOMPANY          => NCOMPANY,
 | ||
|                             NRRPCONFSCTNMRKCN => NRRPCONFSCTNMRKCN,
 | ||
|                             SMASK             => SPRM_MASK_ACC);
 | ||
|           /* Добавляем информацию по "Дата с" */
 | ||
|           MAKE_PRMS_BY_MASK(SPRMS_DESC        => SRESULT,
 | ||
|                             NCOMPANY          => NCOMPANY,
 | ||
|                             NRRPCONFSCTNMRKCN => NRRPCONFSCTNMRKCN,
 | ||
|                             SMASK             => SPRM_MASK_DATE_FROM);
 | ||
|           /* Добавляем информацию по "Дата по" */
 | ||
|           MAKE_PRMS_BY_MASK(SPRMS_DESC        => SRESULT,
 | ||
|                             NCOMPANY          => NCOMPANY,
 | ||
|                             NRRPCONFSCTNMRKCN => NRRPCONFSCTNMRKCN,
 | ||
|                             SMASK             => SPRM_MASK_DATE_TO);
 | ||
|         /* Остатки средств по счетам */
 | ||
|         when 'AccountsRemnants' then
 | ||
|           /* Получаем информацию по "Счет" */
 | ||
|           MAKE_PRMS_BY_MASK(SPRMS_DESC        => SRESULT,
 | ||
|                             NCOMPANY          => NCOMPANY,
 | ||
|                             NRRPCONFSCTNMRKCN => NRRPCONFSCTNMRKCN,
 | ||
|                             SMASK             => SPRM_MASK_ACC);
 | ||
|           /* Добавляем информацию по "Дата с" */
 | ||
|           MAKE_PRMS_BY_MASK(SPRMS_DESC        => SRESULT,
 | ||
|                             NCOMPANY          => NCOMPANY,
 | ||
|                             NRRPCONFSCTNMRKCN => NRRPCONFSCTNMRKCN,
 | ||
|                             SMASK             => SPRM_MASK_DATE_FROM);
 | ||
|         /* Остатки товарно-материальных ценностей */
 | ||
|         when 'ValuesRemnants' then
 | ||
|           /* Получаем информацию по "Счет" */
 | ||
|           MAKE_PRMS_BY_MASK(SPRMS_DESC        => SRESULT,
 | ||
|                             NCOMPANY          => NCOMPANY,
 | ||
|                             NRRPCONFSCTNMRKCN => NRRPCONFSCTNMRKCN,
 | ||
|                             SMASK             => SPRM_MASK_ACC);
 | ||
|           /* Добавляем информацию по "Дата с" */
 | ||
|           MAKE_PRMS_BY_MASK(SPRMS_DESC        => SRESULT,
 | ||
|                             NCOMPANY          => NCOMPANY,
 | ||
|                             NRRPCONFSCTNMRKCN => NRRPCONFSCTNMRKCN,
 | ||
|                             SMASK             => SPRM_MASK_DATE_FROM);
 | ||
|         /* Дебиторская/кредиторская задолженность */
 | ||
|         when 'DebitorsCreditorsRemnants' then
 | ||
|           /* Получаем информацию по "Счет" */
 | ||
|           MAKE_PRMS_BY_MASK(SPRMS_DESC        => SRESULT,
 | ||
|                             NCOMPANY          => NCOMPANY,
 | ||
|                             NRRPCONFSCTNMRKCN => NRRPCONFSCTNMRKCN,
 | ||
|                             SMASK             => SPRM_MASK_ACC);
 | ||
|           /* Добавляем информацию по "Дата с" */
 | ||
|           MAKE_PRMS_BY_MASK(SPRMS_DESC        => SRESULT,
 | ||
|                             NCOMPANY          => NCOMPANY,
 | ||
|                             NRRPCONFSCTNMRKCN => NRRPCONFSCTNMRKCN,
 | ||
|                             SMASK             => SPRM_MASK_DATE_FROM);
 | ||
|           /* Добавляем информацию по "Дата по" */
 | ||
|           MAKE_PRMS_BY_MASK(SPRMS_DESC        => SRESULT,
 | ||
|                             NCOMPANY          => NCOMPANY,
 | ||
|                             NRRPCONFSCTNMRKCN => NRRPCONFSCTNMRKCN,
 | ||
|                             SMASK             => SPRM_MASK_DATE_TO);
 | ||
|         /* Инвентарная картотека */
 | ||
|         when 'Inventory' then
 | ||
|           /* Получаем информацию по "Счет" */
 | ||
|           MAKE_PRMS_BY_MASK(SPRMS_DESC        => SRESULT,
 | ||
|                             NCOMPANY          => NCOMPANY,
 | ||
|                             NRRPCONFSCTNMRKCN => NRRPCONFSCTNMRKCN,
 | ||
|                             SMASK             => SPRM_MASK_ACC);
 | ||
|           /* Добавляем информацию по "Дата с" */
 | ||
|           MAKE_PRMS_BY_MASK(SPRMS_DESC        => SRESULT,
 | ||
|                             NCOMPANY          => NCOMPANY,
 | ||
|                             NRRPCONFSCTNMRKCN => NRRPCONFSCTNMRKCN,
 | ||
|                             SMASK             => SPRM_MASK_DATE_FROM);
 | ||
|           /* Добавляем информацию по "Дата по" */
 | ||
|           MAKE_PRMS_BY_MASK(SPRMS_DESC        => SRESULT,
 | ||
|                             NCOMPANY          => NCOMPANY,
 | ||
|                             NRRPCONFSCTNMRKCN => NRRPCONFSCTNMRKCN,
 | ||
|                             SMASK             => SPRM_MASK_DATE_TO);
 | ||
|         /* Картотека МБП */
 | ||
|         when 'ItemsCards' then
 | ||
|           /* Получаем информацию по "Счет" */
 | ||
|           MAKE_PRMS_BY_MASK(SPRMS_DESC        => SRESULT,
 | ||
|                             NCOMPANY          => NCOMPANY,
 | ||
|                             NRRPCONFSCTNMRKCN => NRRPCONFSCTNMRKCN,
 | ||
|                             SMASK             => SPRM_MASK_ACC_WO_ANL);
 | ||
|           /* Добавляем информацию по "Дата с" */
 | ||
|           MAKE_PRMS_BY_MASK(SPRMS_DESC        => SRESULT,
 | ||
|                             NCOMPANY          => NCOMPANY,
 | ||
|                             NRRPCONFSCTNMRKCN => NRRPCONFSCTNMRKCN,
 | ||
|                             SMASK             => SPRM_MASK_DATE_FROM);
 | ||
|         /* Картотека операций будущих периодов */
 | ||
|         when 'OperCards' then
 | ||
|           /* Получаем информацию по "Счет" */
 | ||
|           MAKE_PRMS_BY_MASK(SPRMS_DESC        => SRESULT,
 | ||
|                             NCOMPANY          => NCOMPANY,
 | ||
|                             NRRPCONFSCTNMRKCN => NRRPCONFSCTNMRKCN,
 | ||
|                             SMASK             => SPRM_MASK_ACC);
 | ||
|           /* Добавляем информацию по "Дата с" */
 | ||
|           MAKE_PRMS_BY_MASK(SPRMS_DESC        => SRESULT,
 | ||
|                             NCOMPANY          => NCOMPANY,
 | ||
|                             NRRPCONFSCTNMRKCN => NRRPCONFSCTNMRKCN,
 | ||
|                             SMASK             => SPRM_MASK_DATE_FROM);
 | ||
|           /* Добавляем информацию по "Дата по" */
 | ||
|           MAKE_PRMS_BY_MASK(SPRMS_DESC        => SRESULT,
 | ||
|                             NCOMPANY          => NCOMPANY,
 | ||
|                             NRRPCONFSCTNMRKCN => NRRPCONFSCTNMRKCN,
 | ||
|                             SMASK             => SPRM_MASK_DATE_TO);
 | ||
|         /* Регламентированный отчет */
 | ||
|         when 'RRPDocuments' then
 | ||
|           /* Добавляем информацию по настройке */
 | ||
|           MAKE_PRMS_BY_MASK(SPRMS_DESC        => SRESULT,
 | ||
|                             NCOMPANY          => NCOMPANY,
 | ||
|                             NRRPCONFSCTNMRKCN => NRRPCONFSCTNMRKCN,
 | ||
|                             SMASK             => SPRM_MASK_RRPCONF);
 | ||
|           /* Добавляем информацию по "Дата с" */
 | ||
|           MAKE_PRMS_BY_MASK(SPRMS_DESC        => SRESULT,
 | ||
|                             NCOMPANY          => NCOMPANY,
 | ||
|                             NRRPCONFSCTNMRKCN => NRRPCONFSCTNMRKCN,
 | ||
|                             SMASK             => SPRM_MASK_DATE_FROM);
 | ||
|           /* Добавляем информацию по "Дата по" */
 | ||
|           MAKE_PRMS_BY_MASK(SPRMS_DESC        => SRESULT,
 | ||
|                             NCOMPANY          => NCOMPANY,
 | ||
|                             NRRPCONFSCTNMRKCN => NRRPCONFSCTNMRKCN,
 | ||
|                             SMASK             => SPRM_MASK_DATE_TO);
 | ||
|         /* Декларация по налогу на прибыль */
 | ||
|         when 'DeclarationIncome' then
 | ||
|           /* Добавляем информацию по настройке */
 | ||
|           MAKE_PRMS_BY_MASK(SPRMS_DESC        => SRESULT,
 | ||
|                             NCOMPANY          => NCOMPANY,
 | ||
|                             NRRPCONFSCTNMRKCN => NRRPCONFSCTNMRKCN,
 | ||
|                             SMASK             => SPRM_MASK_RRPCONF);
 | ||
|           /* Добавляем информацию по "Дата с" */
 | ||
|           MAKE_PRMS_BY_MASK(SPRMS_DESC        => SRESULT,
 | ||
|                             NCOMPANY          => NCOMPANY,
 | ||
|                             NRRPCONFSCTNMRKCN => NRRPCONFSCTNMRKCN,
 | ||
|                             SMASK             => SPRM_MASK_DATE_FROM);
 | ||
|           /* Добавляем информацию по "Дата по" */
 | ||
|           MAKE_PRMS_BY_MASK(SPRMS_DESC        => SRESULT,
 | ||
|                             NCOMPANY          => NCOMPANY,
 | ||
|                             NRRPCONFSCTNMRKCN => NRRPCONFSCTNMRKCN,
 | ||
|                             SMASK             => SPRM_MASK_DATE_TO);
 | ||
|         /* Неизвестный раздел */
 | ||
|         else
 | ||
|           SRESULT := null;
 | ||
|       end case;
 | ||
|       /* Убираем лишний знак */
 | ||
|       SRESULT := RTRIM(SRESULT, ',');
 | ||
|       /* Закрываем параметры */
 | ||
|       SRESULT := SRESULT || ')';
 | ||
|       /* Возвращаем результат */
 | ||
|       return SRESULT;
 | ||
|     end SOURCE_UNIT_GET_PRMS;   
 | ||
|   begin
 | ||
|     /* Считывание записи состава показателя регламентированного отчета */
 | ||
|     RREC := GET_RRPCONFSCTNMRKCN_ID(NFLAG_SMART => 0, NCOMPANY => NCOMPANY, NRN => NRRPCONFSCTNMRKCN);
 | ||
|     /* Формируем представление состава показателя в виде формулы */
 | ||
|     case RREC.SOURCE_TYPE
 | ||
|       /* Учетный раздел */
 | ||
|       when 0 then
 | ||
|         /* Собираем представление из параметров составов */
 | ||
|         SCN_DESC := SOURCE_UNIT_GET_PRMS(NCOMPANY          => NCOMPANY,
 | ||
|                                          NRRPCONFSCTNMRKCN => RREC.RN,
 | ||
|                                          SSOURCE_UNIT      => RREC.SOURCE_UNIT);
 | ||
|       /* Расчетный показатель */
 | ||
|       when 1 then
 | ||
|         /* Считываем запись расчетного показателя */
 | ||
|         RRRPCONFSCTNMRK := GET_RRPCONFSCTNMRK_ID(NFLAG_SMART => 0, NCOMPANY => NCOMPANY, NRN => RREC.RRPCONFSCTNMRK);
 | ||
|         /* Указываем мнемокод показателя */
 | ||
|         SCN_DESC := '(' || RRRPCONFSCTNMRK.CODE || ')';
 | ||
|       /* Хранимая процедура */
 | ||
|       when 2 then
 | ||
|         /* Формируем из пакета и процедуры */
 | ||
|         SCN_DESC := '(' || PKG_OBJECT_DESC.STORED_NAME(SPACKAGE_NAME => RREC.PKG, SSTORED_NAME => RREC.PRC) || ')';
 | ||
|       /* Статическое значение */
 | ||
|       when 3 then
 | ||
|         /* Указываем статическое значение */
 | ||
|         SCN_DESC := '(' || COALESCE(RREC.STATIC_STR,
 | ||
|                                     COALESCE(TO_CHAR(RREC.STATIC_NUM), TO_CHAR(RREC.STATIC_DATE, 'dd.mm.yyyy'))) || ')';
 | ||
|       /* Формула */
 | ||
|       when 4 then
 | ||
|         /* Указываем формулу */
 | ||
|         SCN_DESC := '(' || RREC.FORMULA || ')';
 | ||
|       else
 | ||
|         SCN_DESC := null;
 | ||
|     end case;
 | ||
|     /* Формируем описатель */
 | ||
|     SRESULT := RRPCONFSCTNMRKCN_GET_SIGN(NSIGN => RREC.SIGN) || ' ' ||
 | ||
|                RRPCONFSCTNMRKCN_GET_ST(NSOURCE_TYPE => RREC.SOURCE_TYPE, SSOURCE_UNIT => RREC.SOURCE_UNIT) || SCN_DESC;
 | ||
|     /* Возвращаем результат */
 | ||
|     return SRESULT;
 | ||
|   end RRPCONFSCTNMRKCN_GET_DESC;
 | ||
|   
 | ||
|   /* Поиск рег. номера показателя по разделу РО/строке/графе */
 | ||
|   function RRPCONFSCTNMRK_GET_ROWCOL
 | ||
|   (
 | ||
|     NRRPCONFSCTN            in number,    -- Рег. номер раздела
 | ||
|     NRRPROW                 in number,    -- Рег. номер строки
 | ||
|     NRRPCOLUMN              in number     -- Рег. номер графы
 | ||
|   ) return                  number        -- Рег. номер показателя
 | ||
|   is
 | ||
|     NRESULT                 PKG_STD.TREF; -- Рег. номер показателя
 | ||
|   begin
 | ||
|     /* Считываем запись показателя */
 | ||
|     begin
 | ||
|       select T.RN
 | ||
|         into NRESULT
 | ||
|         from RRPCONFSCTNMRK T
 | ||
|        where T.PRN = NRRPCONFSCTN
 | ||
|          and T.RRPROW = NRRPROW
 | ||
|          and T.RRPCOLUMN = NRRPCOLUMN;
 | ||
|     exception
 | ||
|       when others then
 | ||
|         NRESULT := null;
 | ||
|     end;
 | ||
|     /* Возвращаем результат */
 | ||
|     return NRESULT;
 | ||
|   end RRPCONFSCTNMRK_GET_ROWCOL;
 | ||
|   
 | ||
|   /* Формирование описания показателя */
 | ||
|   function RRPCONFSCTNMRK_GET_DESC
 | ||
|   (
 | ||
|     NCOMPANY                in number,        -- Рег. номер организации
 | ||
|     NRRPCONFSCTN            in number,        -- Рег. номер раздела
 | ||
|     NRRPROW                 in number,        -- Рег. номер строки
 | ||
|     NRRPCOLUMN              in number         -- Рег. номер графы    
 | ||
|   ) return                  varchar2          -- Сериализованное описание показателя
 | ||
|   is
 | ||
|     SRES                    PKG_STD.TLSTRING; -- Буфер для результата
 | ||
|     NRRPCONFSCTNMRK         PKG_STD.TREF;     -- Рег. номер показателя настройки
 | ||
|   begin
 | ||
|     /* Найдём показатель */
 | ||
|     NRRPCONFSCTNMRK := RRPCONFSCTNMRK_GET_ROWCOL(NRRPCONFSCTN => NRRPCONFSCTN,
 | ||
|                                                  NRRPROW      => NRRPROW,
 | ||
|                                                  NRRPCOLUMN   => NRRPCOLUMN);
 | ||
|     /* Начинаем формирование */
 | ||
|     PKG_XFAST.PROLOGUE(ITYPE => PKG_XFAST.CONTENT_);
 | ||
|     /* Показатель */
 | ||
|     PKG_XFAST.DOWN_NODE(SNAME => 'XMARK');
 | ||
|     /* Атрибуты со сведениями о строке и графе */
 | ||
|     PKG_XFAST.ATTR(SNAME => 'NRRPROW', NVALUE => NRRPROW);
 | ||
|     PKG_XFAST.ATTR(SNAME => 'NRRPCOLUMN', NVALUE => NRRPCOLUMN);
 | ||
|     /* Обратимся к показателю */
 | ||
|     for MARK in (select T.RN    NRN,
 | ||
|                         T.CODE  SCODE,
 | ||
|                         T.NAME  SNAME,
 | ||
|                         R.CODE  SRRPROW,
 | ||
|                         RV.CODE SRRPVERSION_ROW,
 | ||
|                         C.CODE  SRRPCOLUMN,
 | ||
|                         CV.CODE SRRPVERSION_COLUMN
 | ||
|                    from RRPCONFSCTNMRK T,
 | ||
|                         RRPROW         R,
 | ||
|                         RRPCOLUMN      C,
 | ||
|                         RRPVERSION     RV,
 | ||
|                         RRPVERSION     CV
 | ||
|                   where T.RN = NRRPCONFSCTNMRK
 | ||
|                     and T.RRPROW = R.RN
 | ||
|                     and T.RRPCOLUMN = C.RN
 | ||
|                     and R.RRPVERSION = RV.RN(+)
 | ||
|                     and C.RRPVERSION = CV.RN(+))
 | ||
|     loop
 | ||
|       /* Атрибуты со сведениями о показателе */
 | ||
|       PKG_XFAST.ATTR(SNAME => 'NRN', NVALUE => MARK.NRN);
 | ||
|       PKG_XFAST.ATTR(SNAME => 'SCODE', SVALUE => MARK.SCODE);
 | ||
|       PKG_XFAST.ATTR(SNAME => 'SNAME', SVALUE => MARK.SNAME);
 | ||
|       PKG_XFAST.ATTR(SNAME => 'SRRPROW', SVALUE => MARK.SRRPROW);
 | ||
|       PKG_XFAST.ATTR(SNAME => 'SRRPVERSION_ROW', SVALUE => MARK.SRRPVERSION_ROW);
 | ||
|       PKG_XFAST.ATTR(SNAME => 'SRRPCOLUMN', SVALUE => MARK.SRRPCOLUMN);
 | ||
|       PKG_XFAST.ATTR(SNAME => 'SRRPVERSION_COLUMN', SVALUE => MARK.SRRPVERSION_COLUMN);
 | ||
|       /* Цикл по составам показателей раздела */
 | ||
|       for CN in (select T.PRN,
 | ||
|                         T.RN,
 | ||
|                         T.NUMB
 | ||
|                    from RRPCONFSCTNMRKCN T
 | ||
|                   where T.PRN = NRRPCONFSCTNMRK
 | ||
|                   order by T.NUMB asc)
 | ||
|       loop
 | ||
|         /* Добавляем состав */
 | ||
|         PKG_XFAST.DOWN_NODE(SNAME => 'CONSTITUTION');
 | ||
|         PKG_XFAST.ATTR(SNAME => 'NPRN', NVALUE => CN.PRN);
 | ||
|         PKG_XFAST.ATTR(SNAME => 'NRN', NVALUE => CN.RN);
 | ||
|         PKG_XFAST.ATTR(SNAME => 'SNUMB', SVALUE => CN.NUMB);
 | ||
|         PKG_XFAST.ATTR(SNAME  => 'SDESC',
 | ||
|                        SVALUE => RRPCONFSCTNMRKCN_GET_DESC(NCOMPANY => NCOMPANY, NRRPCONFSCTNMRKCN => CN.RN));
 | ||
|         PKG_XFAST.UP();
 | ||
|       end loop;
 | ||
|     end loop;
 | ||
|     PKG_XFAST.UP();
 | ||
|     /* Сериализуем описание */
 | ||
|     SRES := PKG_XFAST.SERIALIZE_TO_VARCHAR();
 | ||
|     /* Завершаем формирование */
 | ||
|     PKG_XFAST.EPILOGUE();
 | ||
|     /* Возвращаем сформированное */
 | ||
|     return SRES;
 | ||
|   end RRPCONFSCTNMRK_GET_DESC;
 | ||
|   
 | ||
|   /* Автоматическое формирование мнемокода и наименования показателя, если не указаны */
 | ||
|   procedure RRPCONFSCTNMRK_BUILD_CODE_NAME
 | ||
|   (
 | ||
|     NCOMPANY                in number,           -- Рег. номер организации
 | ||
|     NRRPCONFSCTN            in number,           -- Рег. номер раздела отчета
 | ||
|     NRRPROW                 in number,           -- Рег. номер строки показателя
 | ||
|     NRRPCOLUMN              in number,           -- Рег. номер графы показателя
 | ||
|     SCODE                   in out varchar2,     -- Мнемокод показателя раздела (null - будет сформировано автоматически, иначе - вернётся без изменений)
 | ||
|     SNAME                   in out varchar2      -- Наименование показателя раздела (null - будет сформировано автоматически, иначе - вернётся без изменений)
 | ||
|   )
 | ||
|   is
 | ||
|     RRRPCONFSCTN            RRPCONFSCTN%rowtype; -- Запись раздела настройки
 | ||
|     RRRPROW                 RRPROW%rowtype;      -- Запись строки показателя
 | ||
|     RRRPCOLUMN              RRPCOLUMN%rowtype;   -- Запись графы показателя
 | ||
|   begin
 | ||
|     /* Сформируем автоматический мнемокод, если пользователь не указал его */
 | ||
|     if (SCODE is null) then
 | ||
|       /* Считаем указанные раздел, строку и графу */
 | ||
|       RRRPCONFSCTN := GET_RRPCONFSCTN_ID(NFLAG_SMART => 0, NCOMPANY => NCOMPANY, NRN => NRRPCONFSCTN);
 | ||
|       RRRPROW      := GET_RRPROW_ID(NFLAG_SMART => 0, NCOMPANY => NCOMPANY, NRN => NRRPROW);
 | ||
|       RRRPCOLUMN   := GET_RRPCOLUMN_ID(NFLAG_SMART => 0, NCOMPANY => NCOMPANY, NRN => NRRPCOLUMN);
 | ||
|       /* Формируем мнемокод */
 | ||
|       P_RRPCONFSCTNMRK_MAKE_CODE(SRRPCONFSCTN => RRRPCONFSCTN.CODE,
 | ||
|                                  SRRPROW      => RRRPROW.CODE,
 | ||
|                                  SRRPCOLUMN   => RRRPCOLUMN.CODE,
 | ||
|                                  SCODE        => SCODE);
 | ||
|     end if;
 | ||
|     /* Сформируем автоматическое наименование, если пользователь не указал его */
 | ||
|     if (SNAME is null) then
 | ||
|       P_RRPCONFSCTNMRK_MAKE_NAME(NCOMPANY            => NCOMPANY,
 | ||
|                                  NRRPROW             => NRRPROW,
 | ||
|                                  NRRPCOLUMN          => NRRPCOLUMN,
 | ||
|                                  NCHANGE_NAME        => 1,
 | ||
|                                  NCHANGE_NAME_PARENT => 0,
 | ||
|                                  SNAME               => SNAME);
 | ||
|     end if;
 | ||
|   end RRPCONFSCTNMRK_BUILD_CODE_NAME;
 | ||
|   
 | ||
|   /* Разыменовывание ссылок показателя, переданных пользователем */
 | ||
|   procedure RRPCONFSCTNMRK_JOINS
 | ||
|   (
 | ||
|     NCOMPANY                in number,              -- Рег. номер организации
 | ||
|     NRRPROW                 in number,              -- Рег. номер строки
 | ||
|     SRRPROW                 in varchar2,            -- Код строки (игнорируется, если указан рег. номер строки)
 | ||
|     SRRPVERSION_ROW         in varchar2,            -- Код редакции строки (игнорируется, если указан рег. номер строки)
 | ||
|     NRRPCOLUMN              in number,              -- Рег. номер графы
 | ||
|     SRRPCOLUMN              in varchar2,            -- Код графы (игнорируется, если указан рег. номер графы)
 | ||
|     SRRPVERSION_COLUMN      in varchar2,            -- Код редакции графы (игнорируется, если указан рег. номер графы)
 | ||
|     RRRPROW                 out RRPROW%rowtype,     -- Запись строки регламентированного отчета
 | ||
|     RRRPVERSION_ROW         out RRPVERSION%rowtype, -- Запись редакции строки регламентированного отчета
 | ||
|     RRRPCOLUMN              out RRPCOLUMN%rowtype,  -- Запись графы регламентированного отчета
 | ||
|     RRRPVERSION_COLUMN      out RRPVERSION%rowtype  -- Запись редакции графы регламентированного отчета
 | ||
|   )
 | ||
|   is
 | ||
|     NRRPVERSION             PKG_STD.TREF;           -- Рег. номер редакции строки/графы
 | ||
|     NRRPROW_                PKG_STD.TREF;           -- Буфер для рег. номера строки
 | ||
|     NRRPCOLUMN_             PKG_STD.TREF;           -- Буфер для рег. номера графы
 | ||
|   begin
 | ||
|     /* Считываем запись строки и редакции строки регламентированного отчета */
 | ||
|     if (NRRPROW is null) then
 | ||
|       FIND_RRPVERSION_CODE(NFLAG_SMART  => 0,
 | ||
|                            NFLAG_OPTION => 1,
 | ||
|                            NCOMPANY     => NCOMPANY,
 | ||
|                            SCODE        => SRRPVERSION_ROW,
 | ||
|                            NRN          => NRRPVERSION);
 | ||
|       FIND_RRPROW_CODE(NFLAG_SMART  => 0,
 | ||
|                        NFLAG_OPTION => 0,
 | ||
|                        NCOMPANY     => NCOMPANY,
 | ||
|                        NRRPVERSION  => NRRPVERSION,
 | ||
|                        SCODE        => SRRPROW,
 | ||
|                        NRN          => NRRPROW_);
 | ||
|     else
 | ||
|       NRRPROW_ := NRRPROW;
 | ||
|     end if;
 | ||
|     RRRPROW         := GET_RRPROW_ID(NFLAG_SMART => 0, NCOMPANY => NCOMPANY, NRN => NRRPROW_);
 | ||
|     RRRPVERSION_ROW := GET_RRPVERSION_ID(NFLAG_SMART => 1, NCOMPANY => NCOMPANY, NRN => RRRPROW.RRPVERSION);
 | ||
|     /* Считываем запись графы и редакции графы регламентированного отчета */
 | ||
|     if (NRRPCOLUMN is null) then
 | ||
|       FIND_RRPVERSION_CODE(NFLAG_SMART  => 0,
 | ||
|                            NFLAG_OPTION => 1,
 | ||
|                            NCOMPANY     => NCOMPANY,
 | ||
|                            SCODE        => SRRPVERSION_COLUMN,
 | ||
|                            NRN          => NRRPVERSION);
 | ||
|       FIND_RRPCOLUMN_CODE(NFLAG_SMART  => 0,
 | ||
|                           NFLAG_OPTION => 0,
 | ||
|                           NCOMPANY     => NCOMPANY,
 | ||
|                           NRRPVERSION  => NRRPVERSION,
 | ||
|                           SCODE        => SRRPCOLUMN,
 | ||
|                           NRN          => NRRPCOLUMN_);
 | ||
|     else
 | ||
|       NRRPCOLUMN_ := NRRPCOLUMN;
 | ||
|     end if;
 | ||
|     RRRPCOLUMN         := GET_RRPCOLUMN_ID(NFLAG_SMART => 0, NCOMPANY => NCOMPANY, NRN => NRRPCOLUMN_);
 | ||
|     RRRPVERSION_COLUMN := GET_RRPVERSION_ID(NFLAG_SMART => 1, NCOMPANY => NCOMPANY, NRN => RRRPCOLUMN.RRPVERSION);
 | ||
|   end RRPCONFSCTNMRK_JOINS;
 | ||
|     
 | ||
|   /* Добавление показателя раздела регламентированного отчёта */
 | ||
|   procedure RRPCONFSCTNMRK_INSERT
 | ||
|   (
 | ||
|     NPRN                    in number,                             -- Рег. номер раздела
 | ||
|     SCODE                   in varchar2,                           -- Мнемокод показателя раздела
 | ||
|     SNAME                   in varchar2,                           -- Наименование показателя раздела
 | ||
|     NRRPROW                 in number,                             -- Рег. номер строки
 | ||
|     SRRPROW                 in varchar2,                           -- Код строки (игнорируется, если указан рег. номер строки)
 | ||
|     SRRPVERSION_ROW         in varchar2,                           -- Код редакции строки (игнорируется, если указан рег. номер строки)
 | ||
|     NRRPCOLUMN              in number,                             -- Рег. номер графы
 | ||
|     SRRPCOLUMN              in varchar2,                           -- Код графы (игнорируется, если указан рег. номер графы)
 | ||
|     SRRPVERSION_COLUMN      in varchar2,                           -- Код редакции графы (игнорируется, если указан рег. номер графы)
 | ||
|     NRN                     out number                             -- Рег. номер созданной записи
 | ||
|   )
 | ||
|   is
 | ||
|     NCOMPANY                PKG_STD.TREF := GET_SESSION_COMPANY(); -- Рег. номер организации
 | ||
|     RRRPROW                 RRPROW%rowtype;                        -- Запись строки регламентированного отчета
 | ||
|     RRRPVERSION_ROW         RRPVERSION%rowtype;                    -- Запись редакции строки регламентированного отчета
 | ||
|     RRRPCOLUMN              RRPCOLUMN%rowtype;                     -- Запись графы регламентированного отчета
 | ||
|     RRRPVERSION_COLUMN      RRPVERSION%rowtype;                    -- Запись редакции графы регламентированного отчета
 | ||
|     SCODE_                  PKG_STD.TSTRING;                       -- Буфер для фактического мнемокода
 | ||
|     SNAME_                  PKG_STD.TSTRING;                       -- Буфер для фактического наименования
 | ||
|   begin
 | ||
|     /* Получим НСИ (строки, графы, редакции и т.п.) по данным, полученным от пользователя */
 | ||
|     RRPCONFSCTNMRK_JOINS(NCOMPANY           => NCOMPANY,
 | ||
|                          NRRPROW            => NRRPROW,
 | ||
|                          SRRPROW            => SRRPROW,
 | ||
|                          SRRPVERSION_ROW    => SRRPVERSION_ROW,
 | ||
|                          NRRPCOLUMN         => NRRPCOLUMN,
 | ||
|                          SRRPCOLUMN         => SRRPCOLUMN,
 | ||
|                          SRRPVERSION_COLUMN => SRRPVERSION_COLUMN,
 | ||
|                          RRRPROW            => RRRPROW,
 | ||
|                          RRRPVERSION_ROW    => RRRPVERSION_ROW,
 | ||
|                          RRRPCOLUMN         => RRRPCOLUMN,
 | ||
|                          RRRPVERSION_COLUMN => RRRPVERSION_COLUMN);
 | ||
|     /* Сформируем автоматические мнемокод и наименование, если пользователь не указал их */
 | ||
|     SCODE_ := SCODE;
 | ||
|     SNAME_ := SNAME;
 | ||
|     RRPCONFSCTNMRK_BUILD_CODE_NAME(NCOMPANY     => NCOMPANY,
 | ||
|                                    NRRPCONFSCTN => NPRN,
 | ||
|                                    NRRPROW      => RRRPROW.RN,
 | ||
|                                    NRRPCOLUMN   => RRRPCOLUMN.RN,
 | ||
|                                    SCODE        => SCODE_,
 | ||
|                                    SNAME        => SNAME_);
 | ||
|     /* Добавим показатель */
 | ||
|     P_RRPCONFSCTNMRK_INSERT(NCOMPANY           => NCOMPANY,
 | ||
|                             NPRN               => NPRN,
 | ||
|                             NNUMB              => F_RRPCONFSCTNMRK_NEXT_NUMB(NCOMPANY => NCOMPANY, NPRN => NPRN),
 | ||
|                             SCODE              => SCODE_,
 | ||
|                             SNAME              => SNAME_,
 | ||
|                             SRRPROW            => RRRPROW.CODE,
 | ||
|                             SRRPVERSION_ROW    => RRRPVERSION_ROW.CODE,
 | ||
|                             SRRPCOLUMN         => RRRPCOLUMN.CODE,
 | ||
|                             SRRPVERSION_COLUMN => RRRPVERSION_COLUMN.CODE,
 | ||
|                             SPKG_ROW           => null,
 | ||
|                             SPRC_ROW           => null,
 | ||
|                             SPKG_COL           => null,
 | ||
|                             SPRC_COL           => null,
 | ||
|                             SRRPPRM            => null,
 | ||
|                             NIGNORE_ZOOM       => 0,
 | ||
|                             NIGNORE_SHARP      => 0,
 | ||
|                             SCLSF_CODE         => null,
 | ||
|                             SNOTE              => null,
 | ||
|                             NDUP_RN            => null,
 | ||
|                             NRN                => NRN);
 | ||
|   end RRPCONFSCTNMRK_INSERT;
 | ||
|   
 | ||
|   /* Исправление показателя раздела регламентированного отчёта */
 | ||
|   procedure RRPCONFSCTNMRK_UPDATE
 | ||
|   (
 | ||
|     NRN                     in number,                             -- Рег. номер показателя раздела            
 | ||
|     SCODE                   in varchar2,                           -- Мнемокод показателя раздела
 | ||
|     SNAME                   in varchar2,                           -- Наименование показателя раздела
 | ||
|     SRRPROW                 in varchar2,                           -- Код строки
 | ||
|     SRRPVERSION_ROW         in varchar2,                           -- Код редакции строки
 | ||
|     SRRPCOLUMN              in varchar2,                           -- Код графы
 | ||
|     SRRPVERSION_COLUMN      in varchar2                            -- Код редакции графы
 | ||
|   )
 | ||
|   is
 | ||
|     NCOMPANY                PKG_STD.TREF := GET_SESSION_COMPANY(); -- Рег. номер организации
 | ||
|     RMRK                    RRPCONFSCTNMRK%rowtype;                -- Запись настройки показателя регламентированного отчета
 | ||
|     RRRPPRM                 RRPPRM%rowtype;                        -- Запись типового параметра регламентированного отчета
 | ||
|     RRRPROW                 RRPROW%rowtype;                        -- Запись строки регламентированного отчета
 | ||
|     RRRPVERSION_ROW         RRPVERSION%rowtype;                    -- Запись редакции строки регламентированного отчета
 | ||
|     RRRPCOLUMN              RRPCOLUMN%rowtype;                     -- Запись графы регламентированного отчета
 | ||
|     RRRPVERSION_COLUMN      RRPVERSION%rowtype;                    -- Запись редакции графы регламентированного отчета
 | ||
|     SCODE_                  PKG_STD.TSTRING;                       -- Буфер для фактического мнемокода
 | ||
|     SNAME_                  PKG_STD.TSTRING;                       -- Буфер для фактического наименования
 | ||
|   begin
 | ||
|     /* Получение записи параметра раздела */
 | ||
|     RMRK := GET_RRPCONFSCTNMRK_ID(NFLAG_SMART => 0, NCOMPANY => NCOMPANY, NRN => NRN);
 | ||
|     /* Получим НСИ (строки, графы, редакции и т.п.) по данным, полученным от пользователя */
 | ||
|     RRPCONFSCTNMRK_JOINS(NCOMPANY           => NCOMPANY,
 | ||
|                          NRRPROW            => null,
 | ||
|                          SRRPROW            => SRRPROW,
 | ||
|                          SRRPVERSION_ROW    => SRRPVERSION_ROW,
 | ||
|                          NRRPCOLUMN         => null,
 | ||
|                          SRRPCOLUMN         => SRRPCOLUMN,
 | ||
|                          SRRPVERSION_COLUMN => SRRPVERSION_COLUMN,
 | ||
|                          RRRPROW            => RRRPROW,
 | ||
|                          RRRPVERSION_ROW    => RRRPVERSION_ROW,
 | ||
|                          RRRPCOLUMN         => RRRPCOLUMN,
 | ||
|                          RRRPVERSION_COLUMN => RRRPVERSION_COLUMN);
 | ||
|     /* Сформируем автоматические мнемокод и наименование, если пользователь не указал их */
 | ||
|     SCODE_ := SCODE;
 | ||
|     SNAME_ := SNAME;
 | ||
|     RRPCONFSCTNMRK_BUILD_CODE_NAME(NCOMPANY     => NCOMPANY,
 | ||
|                                    NRRPCONFSCTN => RMRK.PRN,
 | ||
|                                    NRRPROW      => RRRPROW.RN,
 | ||
|                                    NRRPCOLUMN   => RRRPCOLUMN.RN,
 | ||
|                                    SCODE        => SCODE_,
 | ||
|                                    SNAME        => SNAME_);
 | ||
|     /* Считаем код типового параметра, если задан в показателе (чтобы не затереть существующий, т.к. пользователь нам его не передает сейчас) */
 | ||
|     if (RMRK.RRPPRM is not null) then
 | ||
|       RRRPPRM := GET_RRPPRM_ID(NFLAG_SMART => 0, NCOMPANY => NCOMPANY, NRN => RMRK.RRPPRM);
 | ||
|     else
 | ||
|       RRRPPRM.CODE := null;
 | ||
|     end if;
 | ||
|     /* Исправим показатель */
 | ||
|     P_RRPCONFSCTNMRK_UPDATE(NRN                => RMRK.RN,
 | ||
|                             NCOMPANY           => NCOMPANY,
 | ||
|                             NNUMB              => RMRK.NUMB,
 | ||
|                             SCODE              => SCODE_,
 | ||
|                             SNAME              => SNAME_,
 | ||
|                             SRRPROW            => SRRPROW,
 | ||
|                             SRRPVERSION_ROW    => SRRPVERSION_ROW,
 | ||
|                             SRRPCOLUMN         => SRRPCOLUMN,
 | ||
|                             SRRPVERSION_COLUMN => SRRPVERSION_COLUMN,
 | ||
|                             SPKG_ROW           => RMRK.PKG_ROW,
 | ||
|                             SPRC_ROW           => RMRK.PRC_ROW,
 | ||
|                             SPKG_COL           => RMRK.PKG_COL,
 | ||
|                             SPRC_COL           => RMRK.PRC_COL,
 | ||
|                             SRRPPRM            => RRRPPRM.CODE,
 | ||
|                             NIGNORE_ZOOM       => RMRK.IGNORE_ZOOM,
 | ||
|                             NIGNORE_SHARP      => RMRK.IGNORE_SHARP,
 | ||
|                             SCLSF_CODE         => RMRK.CLSF_CODE,
 | ||
|                             NFORMULA_UPDATE    => 1,
 | ||
|                             SNOTE              => RMRK.NOTE);
 | ||
|   end RRPCONFSCTNMRK_UPDATE;
 | ||
|   
 | ||
|   /* Удаление показателя раздела регламентированного отчёта */
 | ||
|   procedure RRPCONFSCTNMRK_DELETE
 | ||
|   (        
 | ||
|     NRN                     in number   -- Рег. номер показателя раздела
 | ||
|   )
 | ||
|   is
 | ||
|   begin
 | ||
|     /* Удалим показатель */
 | ||
|     P_RRPCONFSCTNMRK_DELETE(NCOMPANY => GET_SESSION_COMPANY(), NRN => NRN);
 | ||
|   end RRPCONFSCTNMRK_DELETE;
 | ||
| 
 | ||
|   /* Получение раздела регламентированного отчёта */
 | ||
|   procedure RRPCONFSCTN_GET
 | ||
|   (
 | ||
|     NRRPCONFSCTN            in number,                             -- Рег. номер раздела настройки форм регламентированного отчёта
 | ||
|     NROW_ORDER              in number := 0,                        -- Порядок сортировки строк (0 - по номеру, 1 - по коду, 2 - по мнемокоду)
 | ||
|     NCOL_ORDER              in number := 0,                        -- Порядок сортировки граф (0 - по номеру, 1 - по коду, 2 - по мнемокоду)
 | ||
|     COUT                    out clob                               -- Данные раздела
 | ||
|   )
 | ||
|   is
 | ||
|     NCOMPANY                PKG_STD.TREF := GET_SESSION_COMPANY(); -- Организация сеанса
 | ||
|     RDG                     PKG_P8PANELS_VISUAL.TDG;               -- Описание таблицы
 | ||
|     RDG_ROW                 PKG_P8PANELS_VISUAL.TDG_ROW;           -- Строка таблицы    
 | ||
|     ICURSOR                 integer;                               -- Курсор для исполнения запроса
 | ||
|     NROW_RN                 PKG_STD.TREF;                          -- Рег. номер строки
 | ||
|     SROW_NAME               PKG_STD.TSTRING;                       -- Наименование строки
 | ||
|     NCOL_RN                 PKG_STD.TREF;                          -- Рег. номер графы
 | ||
|     
 | ||
|     /* Получение наименования колонки таблицы "Код" для строк/граф */
 | ||
|     function TABCOL_ROWCOL_CODE_GET
 | ||
|     (
 | ||
|       STABLE                in varchar2 -- Таблица (RRPROW - по строкам, RRPCOLUMN - по графам)
 | ||
|     ) return                varchar2    -- Наименование колонки таблицы для хранения "Кода"
 | ||
|     is
 | ||
|     begin
 | ||
|       /* Смотрим от имени таблицы */
 | ||
|       if (STABLE = 'RRPCOLUMN') then
 | ||
|         /* Код графы */
 | ||
|         return 'COLUMN_CODE';
 | ||
|       elsif (STABLE = 'RRPROW') then
 | ||
|         /* Код строки */
 | ||
|         return 'ROW_CODE';
 | ||
|       else
 | ||
|         /* Неизвестная таблица */
 | ||
|         P_EXCEPTION(0,
 | ||
|                     'Таблица "%s" не поддерживается.',
 | ||
|                     COALESCE(STABLE, '<НЕ УКАЗАНА>'));
 | ||
|       end if;
 | ||
|     end TABCOL_ROWCOL_CODE_GET;
 | ||
|     
 | ||
|     /* Формирование условия сортировки для SQL-запроса по строкам/графам */
 | ||
|     function ORDER_CLAUSE_GET
 | ||
|     (
 | ||
|       STABLE                in varchar2,     -- Таблица (RRPROW - по строкам, RRPCOLUMN - по графам)
 | ||
|       NORDER                in number,       -- Порядок сортировки (0 - по номеру, 1 - по коду, 2 - по мнемокоду)      
 | ||
|       SALIAS                in varchar2      -- Алиас таблицы в формируемом запросе
 | ||
|     ) return                varchar2         -- Текстовое представление сортировки
 | ||
|     is
 | ||
|       SRESULT               PKG_STD.TSTRING; -- Текстовое представление сортировки
 | ||
|       STABLE_COLUMN_CODE    PKG_STD.TSTRING; -- Наименование колонки таблицы, содержащую код
 | ||
|     begin
 | ||
|       /* Определяем наименование колонки, содержающую код */
 | ||
|       STABLE_COLUMN_CODE := TABCOL_ROWCOL_CODE_GET(STABLE => STABLE);
 | ||
|       /* Формируем представление сортировки */
 | ||
|       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_CLAUSE_GET;
 | ||
|     
 | ||
|     /* Открытие курсора по строкам/графам раздела */
 | ||
|     procedure OPEN_ROWS_COLS_CUR
 | ||
|     (
 | ||
|       NRRPCONFSCTN          in number,       -- Рег. номер раздела настройки форм регламентированного отчёта
 | ||
|       STABLE                in varchar2,     -- Таблица (RRPROW - по строкам, RRPCOLUMN - по графам)
 | ||
|       NORDER                in number,       -- Порядок сортировки (0 - по номеру, 1 - по коду, 2 - по мнемокоду)
 | ||
|       ICURSOR               in out integer   -- Открытый курсор
 | ||
|     ) 
 | ||
|     is
 | ||
|       CSQL                  clob;            -- Запрос
 | ||
|       SORDERS               PKG_STD.TSTRING; -- Условия сортировки
 | ||
|     begin
 | ||
|       /* Закроем курсор если открыт */
 | ||
|       if (PKG_SQL_DML.IS_OPEN(ICURSOR => ICURSOR)) then
 | ||
|         PKG_SQL_DML.CLOSE_CURSOR(ICURSOR => ICURSOR);
 | ||
|       end if;
 | ||
|       /* Определим условия сортировки */
 | ||
|       SORDERS := ORDER_CLAUSE_GET(STABLE => STABLE, NORDER => NORDER, SALIAS => 'T');
 | ||
|       /* Соберем запрос */
 | ||
|       CSQL := PKG_SQL_BUILD.COMPATIBLE();
 | ||
|       PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => 'select T.RN,');
 | ||
|       PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => '       T.NAME');
 | ||
|       PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => '  from RRPCONFSCTNMRK M,');
 | ||
|       PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => '       ' || STABLE || ' T');
 | ||
|       PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' where M.PRN = ' || TO_CHAR(NRRPCONFSCTN));
 | ||
|       PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => '   and T.RN = M.' || STABLE);
 | ||
|       PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' group by T.RN,');
 | ||
|       PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => '          T.CODE,');
 | ||
|       PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => '          T.NAME,');
 | ||
|       PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => '          T.' || TABCOL_ROWCOL_CODE_GET(STABLE => STABLE) || ',');
 | ||
|       PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => '          T.SORT_NUMB');
 | ||
|       PKG_SQL_BUILD.APPEND(SSQL => CSQL, SELEMENT1 => ' order by ' || SORDERS);
 | ||
|       /* Разбираем его */
 | ||
|       ICURSOR := PKG_SQL_DML.OPEN_CURSOR(SWHAT => 'SELECT');
 | ||
|       PKG_SQL_DML.PARSE(ICURSOR => ICURSOR, SQUERY => CSQL);
 | ||
|       /* Описываем структуру записи курсора */
 | ||
|       PKG_SQL_DML.DEFINE_COLUMN_NUM(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;
 | ||
|     end OPEN_ROWS_COLS_CUR;
 | ||
|        
 | ||
|     /* Формирование наименования колонки таблицы данных по рег. номеру графы показателя */
 | ||
|     function DG_COL_NAME_BY_RRPCOLUMN
 | ||
|     (
 | ||
|       NRRPCOLUMN            in number   -- Рег. номер графы
 | ||
|     ) return                varchar2    -- Имя колонки для таблицы данных
 | ||
|     is
 | ||
|     begin
 | ||
|       return 'SCOL_' || TO_CHAR(NRRPCOLUMN);
 | ||
|     end DG_COL_NAME_BY_RRPCOLUMN;
 | ||
|     
 | ||
|     /* Получение рег. номера графы показателя по наименованию колонки таблицы данных */
 | ||
|     function RRPCOLUMN_BY_DG_COL_NAME
 | ||
|     (
 | ||
|       SDG_COL_NAME          in varchar2 -- Имя колонки таблицы данных
 | ||
|     ) return                number      -- Рег. номер графы
 | ||
|     is
 | ||
|     begin
 | ||
|       return TO_NUMBER(replace(SDG_COL_NAME, 'SCOL_', ''));
 | ||
|     end RRPCOLUMN_BY_DG_COL_NAME;
 | ||
|     
 | ||
|     /* Инициализация колонок выходной таблицы */
 | ||
|     procedure COLUMNS_INIT
 | ||
|     (
 | ||
|       RDG                   in out nocopy PKG_P8PANELS_VISUAL.TDG, -- Описание таблицы
 | ||
|       NRRPCONFSCTN          in number,                             -- Рег. номер раздела
 | ||
|       NCOL_ORDER            in number,                             -- Порядок сортировки граф (0 - по номеру, 1 - по коду, 2 - по мнемокоду)
 | ||
|       NCOL_WIDTH            in number                              -- Ширина колонки (пикселей)
 | ||
|     )
 | ||
|     is
 | ||
|       ICURSOR               integer;                               -- Курсор для исполнения запроса по графам показателей раздела
 | ||
|       NCOL_RN               PKG_STD.TREF;                          -- Рег. номер графы
 | ||
|       SCOL_NAME             PKG_STD.TSTRING;                       -- Наименование графы
 | ||
|     begin
 | ||
|       /* Наименование строки будет отображаться в первой колонке */
 | ||
|       PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG,
 | ||
|                                           SNAME      => 'SROW_NAME',
 | ||
|                                           SCAPTION   => 'Наименование строки',
 | ||
|                                           SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR,
 | ||
|                                           NWIDTH     => NCOL_WIDTH);
 | ||
|       /* Остальные колонки это графы настройки РО - строим запрос по графам показателей */
 | ||
|       OPEN_ROWS_COLS_CUR(NRRPCONFSCTN => NRRPCONFSCTN, STABLE => 'RRPCOLUMN', NORDER => NCOL_ORDER, ICURSOR => ICURSOR);
 | ||
|       /* Обходим графы показателей раздела */
 | ||
|       while (PKG_SQL_DML.FETCH_ROWS(ICURSOR => ICURSOR) > 0)
 | ||
|       loop
 | ||
|         /* Считываем рег. номер строки */
 | ||
|         PKG_SQL_DML.COLUMN_VALUE_NUM(ICURSOR => ICURSOR, IPOSITION => 1, NVALUE => NCOL_RN);
 | ||
|         /* Считываем наименование строки */
 | ||
|         PKG_SQL_DML.COLUMN_VALUE_STR(ICURSOR => ICURSOR, IPOSITION => 2, SVALUE => SCOL_NAME);
 | ||
|         /* Наименование графы */
 | ||
|         PKG_P8PANELS_VISUAL.TDG_ADD_COL_DEF(RDATA_GRID => RDG,
 | ||
|                                             SNAME      => DG_COL_NAME_BY_RRPCOLUMN(NRRPCOLUMN => NCOL_RN),
 | ||
|                                             SCAPTION   => SCOL_NAME,
 | ||
|                                             SDATA_TYPE => PKG_P8PANELS_VISUAL.SDATA_TYPE_STR,
 | ||
|                                             NWIDTH     => NCOL_WIDTH);
 | ||
|       end loop;
 | ||
|       /* Освобождаем курсор */
 | ||
|       PKG_SQL_DML.CLOSE_CURSOR(ICURSOR => ICURSOR);
 | ||
|     exception
 | ||
|       when others then
 | ||
|         if (PKG_SQL_DML.IS_OPEN(ICURSOR => ICURSOR)) then
 | ||
|           PKG_SQL_DML.CLOSE_CURSOR(ICURSOR => ICURSOR);
 | ||
|         end if;
 | ||
|         raise;
 | ||
|     end COLUMNS_INIT;
 | ||
|   begin
 | ||
|     /* Обращаемся к настройке */
 | ||
|     for S in (select T.RN NRN
 | ||
|                 from RRPCONFSCTN T
 | ||
|                where T.RN = NRRPCONFSCTN
 | ||
|                  and exists (select null from RRPCONFSCTNMRK M where M.PRN = T.RN)
 | ||
|                  and exists (select null from V_USERPRIV UP where UP.CATALOG = T.CRN))
 | ||
|     loop
 | ||
|       /* Инициализируем таблицу данных */
 | ||
|       RDG := PKG_P8PANELS_VISUAL.TDG_MAKE(BFIXED_HEADER => true, NFIXED_COLUMNS => 1);
 | ||
|       /* Инициализируем колонки таблицы данных */
 | ||
|       COLUMNS_INIT(RDG => RDG, NRRPCONFSCTN => S.NRN, NCOL_ORDER => NCOL_ORDER, NCOL_WIDTH => NMRKS_DG_COL_WIDTH);
 | ||
|       /* Открываем запрос по составу уникальных строк раздела */
 | ||
|       OPEN_ROWS_COLS_CUR(NRRPCONFSCTN => NRRPCONFSCTN, STABLE => 'RRPROW', NORDER => NROW_ORDER, ICURSOR => ICURSOR);
 | ||
|       /* Обходим выбранные записи строк */
 | ||
|       while (PKG_SQL_DML.FETCH_ROWS(ICURSOR => ICURSOR) > 0)
 | ||
|       loop
 | ||
|         /* Считываем рег. номер строки */
 | ||
|         PKG_SQL_DML.COLUMN_VALUE_NUM(ICURSOR => ICURSOR, IPOSITION => 1, NVALUE => NROW_RN);
 | ||
|         /* Считываем наименование строки */
 | ||
|         PKG_SQL_DML.COLUMN_VALUE_STR(ICURSOR => ICURSOR, IPOSITION => 2, SVALUE => SROW_NAME);
 | ||
|         /* Заполняем наименование строки */
 | ||
|         PKG_P8PANELS_VISUAL.TDG_ROW_ADD_COL(RROW => RDG_ROW, SNAME => 'SROW_NAME', SVALUE => SROW_NAME, BCLEAR => true);
 | ||
|         /* Обходим сформированные колонки таблицы данных */
 | ||
|         for I in RDG.RCOL_DEFS.FIRST .. RDG.RCOL_DEFS.LAST
 | ||
|         loop
 | ||
|           /* Первую пропускаем - она зарезервирована под наименование строки */
 | ||
|           if (I > RDG.RCOL_DEFS.FIRST) then
 | ||
|             /* Определим рег. номер графы по её наименованию */
 | ||
|             NCOL_RN := RRPCOLUMN_BY_DG_COL_NAME(SDG_COL_NAME => RDG.RCOL_DEFS(I).SNAME);
 | ||
|             /* Заполняем графу описанием показателя */
 | ||
|             PKG_P8PANELS_VISUAL.TDG_ROW_ADD_COL(RROW   => RDG_ROW,
 | ||
|                                                 SNAME  => RDG.RCOL_DEFS(I).SNAME,
 | ||
|                                                 SVALUE => RRPCONFSCTNMRK_GET_DESC(NCOMPANY     => NCOMPANY,
 | ||
|                                                                                   NRRPCONFSCTN => S.NRN,
 | ||
|                                                                                   NRRPROW      => NROW_RN,
 | ||
|                                                                                   NRRPCOLUMN   => NCOL_RN));
 | ||
|           end if;
 | ||
|         end loop;
 | ||
|         /* Добавим строку для раздела */
 | ||
|         PKG_P8PANELS_VISUAL.TDG_ADD_ROW(RDATA_GRID => RDG, RROW => RDG_ROW);
 | ||
|       end loop;
 | ||
|       /* Освобождаем курсор */
 | ||
|       PKG_SQL_DML.CLOSE_CURSOR(ICURSOR => ICURSOR);
 | ||
|       /* Сериализуем описание */
 | ||
|       COUT := PKG_P8PANELS_VISUAL.TDG_TO_XML(RDATA_GRID => RDG, NINCLUDE_DEF => 1);
 | ||
|     end loop;
 | ||
|   exception
 | ||
|     when others then
 | ||
|       if (PKG_SQL_DML.IS_OPEN(ICURSOR => ICURSOR)) then
 | ||
|         PKG_SQL_DML.CLOSE_CURSOR(ICURSOR => ICURSOR);
 | ||
|       end if;
 | ||
|       raise;
 | ||
|   end RRPCONFSCTN_GET;
 | ||
| 
 | ||
|   /* Добавление раздела регламентированного отчёта */
 | ||
|   procedure RRPCONFSCTN_INSERT
 | ||
|   (
 | ||
|     NPRN                    in number,                             -- Рег. номер настройки форм регламентированного отчёта
 | ||
|     SCODE                   in varchar2,                           -- Мнемокод
 | ||
|     SNAME                   in varchar2,                           -- Наименование
 | ||
|     NRN                     out number                             -- Рег. номер созданной записи
 | ||
|   )
 | ||
|   is
 | ||
|     NCOMPANY                PKG_STD.TREF := GET_SESSION_COMPANY(); -- Рег. номер организации
 | ||
|   begin
 | ||
|     /* Добавим раздел */
 | ||
|     P_RRPCONFSCTN_INSERT(NCOMPANY            => NCOMPANY,
 | ||
|                          NPRN                => NPRN,
 | ||
|                          SCODE               => SCODE,
 | ||
|                          SNAME               => SNAME,
 | ||
|                          SRRPCONFSCTN        => null,
 | ||
|                          SRRPPRMGRP          => null,
 | ||
|                          SNOTE               => null,
 | ||
|                          NHTML_HIDE          => 0,
 | ||
|                          NHTML_HIDE_NAME_COL => 0,
 | ||
|                          NHTML_MAKE_HIER_GRP => 0,
 | ||
|                          SCLSF_CODE          => null,
 | ||
|                          NLINKS_UPDATE       => 0,
 | ||
|                          NDUP_RN             => null,
 | ||
|                          NRN                 => NRN);
 | ||
|   end RRPCONFSCTN_INSERT;
 | ||
|   
 | ||
|   /* Исправление раздела регламентированного отчёта */
 | ||
|   procedure RRPCONFSCTN_UPDATE
 | ||
|   (
 | ||
|     NRN                     in number,                             -- Рег. номер раздела
 | ||
|     SCODE                   in varchar2,                           -- Мнемокод раздела
 | ||
|     SNAME                   in varchar2                            -- Наименование раздела
 | ||
|   )
 | ||
|   is
 | ||
|     NCOMPANY                PKG_STD.TREF := GET_SESSION_COMPANY(); -- Рег. номер организации
 | ||
|     RRES                    RRPCONFSCTN%rowtype;                   -- Запись раздела настройки формы регламентированного отчета
 | ||
|     RRRPCONFSCTN            RRPCONFSCTN%rowtype;                   -- Запись родительского раздела настройки регламентированного отчета
 | ||
|     RRRPPRMGRP              RRPPRMGRP%rowtype;                     -- Запись группы параметров регламентированного отчета
 | ||
|   begin
 | ||
|     /* Считаем исправляемую запись */
 | ||
|     RRES := GET_RRPCONFSCTN_ID(NFLAG_SMART => 0, NCOMPANY => NCOMPANY, NRN => NRN);
 | ||
|     /* Считаем запись родительского этапа */
 | ||
|     if (RRES.RRPCONFSCTN is not null) then
 | ||
|       RRRPCONFSCTN := GET_RRPCONFSCTN_ID(NFLAG_SMART => 0, NCOMPANY => NCOMPANY, NRN => RRES.RRPCONFSCTN);
 | ||
|     end if;
 | ||
|     /* Считаем запись группы параметров */
 | ||
|     if (RRES.RRPPRMGRP is not null) then
 | ||
|       RRRPPRMGRP := GET_RRPPRMGRP_ID(NFLAG_SMART => 0, NCOMPANY => NCOMPANY, NRN => RRES.RRPPRMGRP);
 | ||
|     end if;
 | ||
|     /* Исправим раздел */
 | ||
|     P_RRPCONFSCTN_UPDATE(NRN                 => RRES.RN,
 | ||
|                          NCOMPANY            => NCOMPANY,
 | ||
|                          SCODE               => SCODE,
 | ||
|                          SNAME               => SNAME,
 | ||
|                          SRRPCONFSCTN        => RRRPCONFSCTN.CODE,
 | ||
|                          SRRPPRMGRP          => RRRPPRMGRP.CODE,
 | ||
|                          SNOTE               => RRES.NOTE,
 | ||
|                          NHTML_HIDE          => RRES.HTML_HIDE,
 | ||
|                          NHTML_HIDE_NAME_COL => RRES.HTML_HIDE_NAME_COL,
 | ||
|                          NHTML_MAKE_HIER_GRP => RRES.HTML_MAKE_HIER_GRP,
 | ||
|                          SCLSF_CODE          => RRES.CLSF_CODE,
 | ||
|                          NFORMULA_UPDATE     => 1,
 | ||
|                          NMARK_UPDATE        => 1);
 | ||
|   end RRPCONFSCTN_UPDATE;
 | ||
|   
 | ||
|   /* Удаление раздела регламентированного отчёта */
 | ||
|   procedure RRPCONFSCTN_DELETE
 | ||
|   (
 | ||
|     NRN                     in number   -- Рег. номер раздела
 | ||
|   )
 | ||
|   is
 | ||
|   begin
 | ||
|     /* Удалим раздел */
 | ||
|     P_RRPCONFSCTN_DELETE(NCOMPANY => GET_SESSION_COMPANY(), NRN => NRN);
 | ||
|   end RRPCONFSCTN_DELETE;
 | ||
| 
 | ||
|   /* Получение описания настройки регламентированного отчета */
 | ||
|   procedure RRPCONF_GET
 | ||
|   (
 | ||
|     NRRPCONF                in number,                             -- Рег. номер настройки форм регламентированного отчёта
 | ||
|     COUT                    out clob                               -- Описание настройки
 | ||
|   )
 | ||
|   is
 | ||
|     NCOMPANY                PKG_STD.TREF := GET_SESSION_COMPANY(); -- Организация сеанса
 | ||
|     SNAME_SHORT             PKG_STD.TSTRING;                       -- Краткое наименование раздела
 | ||
|   begin
 | ||
|     /* Формируем XML с данными */
 | ||
|     PKG_XFAST.PROLOGUE(ITYPE => PKG_XFAST.CONTENT_);
 | ||
|     PKG_XFAST.DOWN_NODE(SNAME => 'XDATA');
 | ||
|     /* Обратимся к настройке */
 | ||
|     for CONF in (select C.RN   NRN,
 | ||
|                         C.NAME SNAME
 | ||
|                    from RRPCONF C
 | ||
|                   where C.RN = NRRPCONF
 | ||
|                     and exists (select null from V_USERPRIV UP where UP.CATALOG = C.CRN))
 | ||
|     loop
 | ||
|       /* Добавим в выдачу сведения о настройке */
 | ||
|       PKG_XFAST.DOWN_NODE(SNAME => 'XCONF');
 | ||
|       PKG_XFAST.ATTR(SNAME => 'SNAME', SVALUE => CONF.SNAME);
 | ||
|       PKG_XFAST.UP();
 | ||
|       /* Обходим разделы настройки */
 | ||
|       for C in (select T.RN   NRN,
 | ||
|                        T.CODE SCODE,
 | ||
|                        T.NAME SNAME
 | ||
|                   from RRPCONFSCTN T
 | ||
|                  where T.PRN = CONF.NRN
 | ||
|                    and exists (select null from V_USERPRIV UP where UP.CATALOG = T.CRN)
 | ||
|                  order by T.CODE,
 | ||
|                           T.NAME)
 | ||
|       loop
 | ||
|         /* Составим краткое наименование */
 | ||
|         SNAME_SHORT := SUBSTR(C.SNAME, 1, NSECTION_NAME_MAX_LEN);
 | ||
|         if (LENGTH(C.SNAME) > NSECTION_NAME_MAX_LEN) then
 | ||
|           SNAME_SHORT := SNAME_SHORT || '...';
 | ||
|         end if;
 | ||
|         /* Формирование элемента XML с данными о разделе */
 | ||
|         PKG_XFAST.DOWN_NODE(SNAME => 'XSECTIONS');
 | ||
|         PKG_XFAST.ATTR(SNAME => 'NRN', NVALUE => C.NRN);
 | ||
|         PKG_XFAST.ATTR(SNAME => 'SCODE', SVALUE => C.SCODE);
 | ||
|         PKG_XFAST.ATTR(SNAME => 'SNAME', SVALUE => C.SNAME);
 | ||
|         PKG_XFAST.ATTR(SNAME => 'SNAME_SHORT', SVALUE => SNAME_SHORT);
 | ||
|         PKG_XFAST.ATTR(SNAME  => 'NDELETE_ALLOW',
 | ||
|                        NVALUE => UTL_UNIT_ACTION_GET_ALLOW(NCOMPANY => NCOMPANY,
 | ||
|                                                            NRN      => C.NRN,
 | ||
|                                                            SUNIT    => SUNIT_RRPCONFSCTN,
 | ||
|                                                            SACTION  => SACTION_DELETE));
 | ||
|         PKG_XFAST.UP();
 | ||
|       end loop;
 | ||
|     end loop;
 | ||
|     /* Закрываем описание */
 | ||
|     PKG_XFAST.UP();
 | ||
|     /* Сериализуем описание */
 | ||
|     COUT := PKG_XFAST.SERIALIZE_TO_CLOB();
 | ||
|     /* Завершаем формирование XML */
 | ||
|     PKG_XFAST.EPILOGUE();
 | ||
|   end RRPCONF_GET;
 | ||
|   
 | ||
| end PKG_P8PANELS_RRPCONFED;
 | ||
| /
 |