Цитата: Mtirt ➤ Компилировался с соединением с базой данных?
Скорее всего где-то имя схемы пропущено...
Компилировал с соединением с базой, иначе он не компилируется. На наименование схем уже проверил на несколько раз, везде стоит.
Цитата: Mtirt ➤ В Супермаге надо добавить отчет Разделы - Настройка - Настройка отчетов.
После создания отчета будет заполнена графа Роль.
Потом этой Роли надо дать права на доступ к объектам, используемым в отчете. Для выборки данных.
А не установленные права могут повлиять на появление ошибки о компиляции?
На всякий случай приложу код процедуры
AfterPForm может что то не увидел и пропустил.
Цитата: function AfterPForm return boolean is
s_tree varchar2(255);
begin
:P_SQL := 'SELECT doc.namegroup, doc.NAME, doc.article, doc.abbrev, doc.quantity, doc.totalprice' ||
'FROM (SELECT (sacc.tree || ' || ' ' || ' || sacc.NAME) AS namegroup, smc.NAME,' ||
' smc.article, ' ||
' (CASE ' ||
' WHEN smau.rate IS NULL OR smau.rate = 0 ' ||
' THEN sam.abbrev ' ||
' ELSE smau.abbrev ' ||
' END ' ||
' ) AS abbrev, ' ||
' SUM (CASE ' ||
' WHEN smau.rate IS NULL OR smau.rate = 0 ' ||
' THEN sms.quantity ' ||
' ELSE sms.quantity * smau.rate ' ||
' END ' ||
' ) AS quantity, ' ||
' SUM (sms.totalprice) AS totalprice ' ||
' FROM ((supermag.smspec sms inner JOIN supermag.smdocuments smd ' ||
' ON (sms.docid = smd.ID AND sms.doctype = smd.doctype)) ' ||
' inner JOIN ' ||
' (((supermag.smcard smc inner JOIN supermag.sacardclass sacc ' ||
' ON smc.idclass = sacc.ID) ' ||
' LEFT JOIN ' ||
' supermag.sameasurement sam ON smc.idmeasurement = sam.ID) ' ||
' LEFT JOIN ' ||
' (SELECT smaltunits.article, smaltunits.rate, ' ||
' sameasurement.abbrev ' ||
' FROM (supermag.smaltunits smaltunits LEFT JOIN supermag.sameasurement sameasurement ' ||
' ON sameasurement.ID = smaltunits.altunit) ' ||
' RIGHT JOIN ' ||
' supermag.smcardproperties ' ||
' ON smcardproperties.article = smaltunits.article ' ||
' WHERE smcardproperties.propid = TO_CHAR (''0'') ' ||
' AND ( smcardproperties.propval <> 0 ' ||
' OR smcardproperties.propval IS NOT NULL ' ||
' )) smau ON smc.article = smau.article) ' ||
' ON sms.article = smc.article) ' ||
' WHERE sms.doctype = ''CS'' STORE_WHERE GROUP_WHERE ' ||
' GROUP BY sacc.tree, ' ||
' sacc.NAME, ' ||
' smc.NAME, ' ||
' smc.article, ' ||
' CASE ' ||
' WHEN smau.rate IS NULL OR smau.rate = 0 ' ||
' THEN sam.abbrev ' ||
' ELSE smau.abbrev ' ||
' END ' ||
' ORDER BY sacc.tree) doc ';
if (:P_Stored_All = 1) then
:P_SQL := replace(:P_SQL, 'STORE_WHERE', 'and smd.LOCATIONFROM in (' || :P_STORED_Name || ')');
elsif (:P_Stored_All = 2) then
select tree into s_tree
from supermag.SAStoreClass
where id=to_number(:P_Stored_Name);
:P_SQL := replace(:P_SQL, 'STORE_WHERE', 'and smd.LOCATIONFROM in (select * from supermag.SAStoreClass sasc Right join supermag.SMStoreLocations SMSL on sasc.id=SMSL.IDCLASS' ||
'Where sasc.tree like ''' || s_tree || '%)''');
else
:P_SQL := replace(:P_SQL, 'STORE_WHERE', ' ');
end if;
if (:P_Group_Tree IS NOT NULL) Then
supermag.RepTools.LoadClass(2, :P_BGroup, :P_Group_Tree);
if (:P_BGROUP = 0) then
:P_SQL := replace(:P_SQL, 'GROUP_WHERE', 'and smc.article in (Select article From supermag.SMCardAssort where IDASSORT in (SELECT ID FROM supermag.TTIDGROUP))');
elsif (:P_BGROUP = 1) then
:P_SQL := replace(:P_SQL, 'GROUP_WHERE', 'and smc.IDCLASS in (SELECT ID FROM supermag.TTIDGROUP)');
end if;
else
:P_SQL := replace(:P_SQL, 'GROUP_WHERE', ' ');
end if;
return (TRUE);
end;