Механизм описателей атрибутов документов

WEB-приложение Сведение отчетности (26.07.2026) | (одним файлом) (cсылка)
Механизм описателей атрибутов документов
- Поддержка механизма "Описателей атрибутов документов" реализована для следующих разделов: Первичные/сводные отчёты Подотчёты Отчёты (состав свода) Отчёты (история состояний) Первичные/сводные отчёты (История статусов) Протоколы проверок Протоколы проверок (спецификация) Реализация поддержки этого механизма имеет следующие ограничения: Функция-описатель может принимать один или два параметра типа number. Если параметр один, то он интерпретируется как регистрационный номер записи раздела, если параметров два, то первый интерпретируется как регистрационный номер организации, второй - как регистрационный номер записи раздела:
  Правильно |
      1create or replace function
      2        F_ATTR_DESCRIPTOR(nRN in number)
      3        ....
      1create or replace function
      2          F_ATTR_DESCRIPTOR(nCOMPANY in number, nRN in number)
      3          ....
  Неправильно |
      1create or replace function
      2          F_ATTR_DESCRIPTOR(nRN in number, nAGENT in number)
      3          ....
      1create or replace function
      2          F_ATTR_DESCRIPTOR(nRN in number, nCOMPANY in number)
      3          ....
- Функция-описатель должна возвращать значение типа varchar2, number или date :
  Правильно |
      1create or replace function
      2          F_ATTR_DESCRIPTOR(nRN in number) return varchar2
      3          ....
      1create or replace function
      2          F_ATTR_DESCRIPTOR(nCOMPANY in number, nRN  in number) return number
      3          ....
  Неправильно |
      1create or replace function
      2          F_ATTR_DESCRIPTOR(nRN  in number) return clob
      3          ....
      1create or replace function
      2          F_ATTR_DESCRIPTOR(nRN  in number) return varchar
      3          ....
Важно! | Если вы пользуетесь СУБД PostgreSQL, то необходимо зарегистрировать функции-описатели в метаданных конвертера PPC. Для этого необходимо выполнить например, такой блок:
    01do$$
    02declare
    03  nfunction numeric;
    04begin
    05
    06select coalesce(max(idx), -1) + 1 into nfunction from ppc$cnv$functions;
    07
    08insert into ppc$cnv$functions(
    09  idx,ppc$name,ppc$packagename,ppc$typename,ppc$functionindex,ppc$triggerindex,
    10  ppc$signatureindex,ppc$resultdatatype,ppc$over100parameters,
    11  ppc$autonomous,ppc$stable,ppc$dynamic,ppc$standard,ppc$public,ppc$frompackagebody,
    12  ppc$current_user,ppc$lostbody,ppc$member,ppc$definition)
    13values(nfunction, 'F_ATTR_DESCRIPTOR','','',-1,-1,0,'varchar2',0,0,1,0,0,0,0,0,0,0,'f_attr_descriptor(numeric)');
    14--                 имя функции                       тип результата                 описатель функции postgres
    15
    16
    17--для первого параметра
    18insert into ppc$cnv$parameters(idx,ppc$functionidx,ppc$cursoridx,ppc$name,ppc$datatype,
    19ppc$inout,ppc$localcontext,ppc$hasdefault,ppc$defaultnode)
    20values(0,nfunction,-1,'nCOMPANY ',     'number',0,0,0,'');
    21---                   имя параметра    тип параметра
    22
    23/*если параметров два, то необходим оператор insert для второго параметра: */
    24insert into ppc$cnv$parameters(idx,ppc$functionidx,ppc$cursoridx,ppc$name,ppc$datatype,
    25ppc$inout,ppc$localcontext,ppc$hasdefault,ppc$defaultnode)
    26values(1,nfunction,-1,'nRN',           'number',0,0,0,'');
    27---    номер          имя параметра    тип параметра
    28
    29end;$$
После регистрации всех функций-описателей необходимо выполнить команду командной строки
    ppcrebuild Пользователь/пароль@[Хост[:Порт]/]БазаДанных
или, если у вас установлено соответствующее расширение, вызвать функцию SQL:
    select ppc$cnv$rebuild()