Форум OlegON > Программы и оборудование для автоматизации торговли > Системы автоматизации торговли > Супермаг Плюс (Супермаг 2000)

Отчет по складским требованиям oracle reports : Супермаг Плюс (Супермаг 2000)

28.03.2024 12:59


24.08.2015 10:41
akonev
 
Цитата:
xray84 вот так решил задачу:
в целом, это неверное и "опасное" условие.
Код:
where tree like ''%''||:P_GROUP_TREE||''%''
1) отчет будет работать, только если в него передали ОДНУ группу.
2) процентик перед параметром может сыграть злую шутку:
мы передали '63.'
отобралась группа '63.' со всеми подгруппами.
И!!!!!
отобрались все вложенные группы с кодом '63.' на любом уровне классификатора. например, '35.63.', '2.45.63.', '65.23.63.',...
24.08.2015 12:53
xray84
 
Да верно (( что же остается? весь запрос переписывать ? или может вместо :P_GROUP_TREE другое условие брать? Что то ум за разум уже заходит.....
24.08.2015 13:03
akonev
 
Цитата:
xray84 Да верно (( что же остается? весь запрос переписывать ? или может вместо :P_GROUP_TREE другое условие брать? Что то ум за разум уже заходит.....
Вот это, объективно, самый правильный путь.

Цитата:
vdm Насчет фильтра по карточкам - посмотри запрос исходного отчета по складским требованиям и вставь в свой запрос в соответствующие места supermag.RepTools.ClassString(). С учетом того, что в ф-ии supermag.RepTools.ClassString(3,'c') строка 'c' - это алиас таблицы smcard, у тебя будет 'crd'.
Либо писать свою процедуру, передавать ей все параметры, в ней разбирать строку со списком групп и формировать отдельные запросы по каждой группе из списка. Результат писать во временную таблицу, в отчете выбирать из неё.
25.08.2015 05:53
xray84
 
спс!!!!! вот рабочий вариант:
Цитата:
supermag.RepTools.LoadClass(:P_Group_All, :P_BGroup, :P_Group_Tree);
if :P_FLAG1 = '0' then
:P_SQL := 'select distinct c.article, c.name, sum (s.quantity)
from supermag.smspec s, supermag.smdocuments d, supermag.smcard c, supermag.sacardclass sp
where d.id = s.docid and d.docstate = 2 and (d.createdat between :P_FIRSTDATE and :P_LASTDATE) and s.doctype= d.doctype and s.doctype= ''SO'' and s.article = c.article ' ||
supermag.RepTools.ClassString(3,'c') ||
' group by c.article, c.name
order by 2;';
end if;
25.08.2015 06:09
xray84
 
почему то правда только на моем компе запускается..на других такая ошибка:
ORA-00904: ''T_CLASS".ARTICLE": invalid identifier and s.article = c.article ==> =t_class.article....

как ее побороть? Появилась после добавления supermag.RepTools.ClassString(3,'c')
25.08.2015 15:09
xray84
 
раздать гранты я так думаю нужно?....
25.08.2015 15:28
vdm
 
Скорее у тебя разные параметры передаются в отчет на своей машине и на других.
Посмотри конечный запрос который формируется у тебя и не у тебя.
В AfterPForm
Код:
srw.message(999,  :P_SQL);
return (TRUE);
25.08.2015 16:07
xray84
 
на моем выдает:
Цитата:
in (select article from supermag.ttidgroup)
на всех остальных:
Цитата:
=t_class.article
25.08.2015 17:33
xray84
 
а в чем причина передачи разных параметров? Звонил сегодня в С+, там посоветовали установить билдер..но это не помогло...запрос в техподдержку отправлял, там ответили что "В Супермаге нет API-функций. Мы не рекомендуем использовать встроенные функции Супермага"
26.08.2015 09:50
vdm
 
Уверен, что в диалоге запуска отчета одинаковые товарные группы и параметры группировки?
t_class подставляет RepTools.ClassString при каких-то условиях товарных групп. Чего-то во from у тебя не хватает.
Техподдержка в принципе имеет право не отвечать по использованию встроенных функций - они недокументированы.
Часовой пояс GMT +3, время: 12:59.

Форум на базе vBulletin®
Copyright © Jelsoft Enterprises Ltd.
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.