WEB-приложение Сведение отчетности- Ограничения и несовместимости  (раздел целиком)  (26.07.2026)
Ограничения и несовместимости

1. Механизм описателей атрибутов документов
Поддержка механизма "Описателей атрибутов документов" реализована для следующих разделов:
  • Первичные/сводные отчёты
  • Подотчёты
  • Отчёты (состав свода)
  • Отчёты (история состояний)
  • Первичные/сводные отчёты (История статусов)
  • Протоколы проверок
  • Протоколы проверок (спецификация)
Реализация поддержки этого механизма имеет следующие ограничения:
  • Функция-описатель может принимать один или два параметра типа 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()

2. Механизм пользовательских пересчетов

Поддержка механизмов пользовательских пересчетов реализована для раздела "Первичные/сводные отчеты". Поддерживаются только пользовательские пересчеты, основанные на хранимых процедурах (не на пользовательских).

Не забудьте создать псевдоним в схеме PUBLIC для процедуры пересчета, и предоставить пользователю PUBLIС права на вызов процедуры пересчета.


3. Механизм пользовательских приложений

Реализована поддержка механизмов пользовательских приложений.

Поддерживаются пользовательские приложения на основе модулей, разработанных на языке VBscript . Скрипт выполняется в адресном пространстве сервиса. Поддерживаются доступные объекты, переменные, функции, описанные в документации ПП Парус 8 для скриптовых модулей пользовательских приложений, с учетом следующих ограничений и дополнений:

  1. Функции MsgBox, InputBox, ShowDocument и прочие, предполагающие взаимодействие с пользователем, не поддерживаются.
  2. Доступна переменная Silent, всегда имеющая значение True при выполнении сервисом скрипта пользовательского приложения. Вы можете "развязать" поток выполнения вашего скрипта, например, следующим образом:
    Пример
    1if Silent then
    2   Message "Работа пользовательского приложения завершилась с большим успехом."
    3 else
    4   MsgBox "Работа пользовательского приложения завершилась с большим успехом."
    5 end if
  3. Доступна процедура Message с единственным строковым параметром. Вызов этой процедуры обеспечит передачу пользователю сообщения, заданного параметром, после завершения работы скрипта. В тексте сообщения можно использовать html-разметку:
    Пример
    Message "Невозможно обработать. Обратитесь в <a href='http://domain.com/support'>техподдержку</a>."
  4. Доступна процедура DebugString с единственным строковым параметром. Вызов этой процедуры обеспечит передачу сообщения, заданного параметром, в "Отладочный монитор".

Механизм автоматической загрузки и регистрации зависимых модулей не поддерживается. Администратор сервера обязан самостоятельно обеспечить доступность COM-объектов, используемых в скриптах пользовательских приложений, с учетом разрядности редакции сервиса.
Например, вы создали COM-сервер с программным идентификатором "MyProg.MyObj". Для использования библиотеки этого COM-сервера с пользовательскими приложениями ПП Парус 8 вы должны собрать модуль MyProg.DLL в 32-битной редакции, и загрузить его в зависимые модули пользовательского приложения, использующего вызов CreateObject("MyProg.MyObj") (подробности в документации ПП Парус 8). Для использования этого пользовательского приложения в сервисе вам необходимо:

  • Для 32-разрядной редакции - разместить 32-разрядный модуль MyProg.DLL в каталоге, доступном для сервиса, и зарегистрировать COM-сервер вручную командой regsvr32 MyProg.DLL
  • Для 64-разрядной редакции - собрать 64-разрядную редакцию модуля MyProg.DLL, разместить 64-разрядный модуль MyProg.DLL в каталоге, доступном для сервиса, и зарегистрировать COM-сервер вручную командой regsvr32 MyProg.DLL


4. Механизм детального контроля прав доступа
Механизм поддерживается в разделах "Первичные/Сводные очеты", "Формы отчетов" и "Контрагенты". Поддерживаются только предикаты, связанные со следующими объектами:
  1. Представление V_BLREPORTS для раздела "Первичные/Сводные очеты"
  2. Представление V_BLREPFORM для раздела "Формы отчетов"
  3. Представление V_AGNLIST для раздела "Контрагенты"
Для корректной поддержки механизма ни одна из политик детального контроля прав доступа не должна быть назначена (непосредственно или через роль) пользователю - владельцу схемы данных.