[ТЕМА ЗАКРЫТА]
30.10.2012 11:13
Александр-Tyumen
 
Добрый день. Краткая предыстория. Дали задание написать отчет для СуперМага. Запрос написал
Цитата:
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 ((smspec sms LEFT JOIN smdocuments smd
ON (sms.docid = smd.ID AND sms.doctype = smd.doctype))
LEFT JOIN
(((smcard smc LEFT JOIN sacardclass sacc
ON smc.idclass = sacc.ID)
LEFT JOIN
sameasurement sam ON smc.idmeasurement = sam.ID)
LEFT JOIN
(SELECT smaltunits.article, smaltunits.rate,
sameasurement.abbrev
FROM (smaltunits LEFT JOIN sameasurement
ON sameasurement.ID = smaltunits.altunit)
RIGHT JOIN
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'
AND (smd.createdat BETWEEN :createdatn AND :createdatk)
AND smd.locationfrom = :locationfrom
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
Создал отчет в oracle reports (Этот же запрос, Форма параметров и т.д.) сильно углубляться не стал подумал, что для начала хватит пора бы проверить работоспособность в СуперМаг. "Опубликовали" этот отчет. Пробуем открыть. Открывается совсем не моя форма параметров. Далее изучив немного исходники отчетов из хранилища, пришел к выводу, что форма которая у нас открылась куда то видимо записывает параметры отчета и как то их от туда с помощью Супермага извлечь.
Так вот вопросы. Как и куда, и как оттуда извлечь данные параметры? Может быть у кого нибудь есть более легкие отчеты с исходниками для понимания.
30.10.2012 11:22
Mtirt
 
А что мешает документацию почитать по этому поводу?
Там всё подробно описано про настройки форм параметров.
Например, файл RepExample_ReadMe.doc (ставится вместе с Супермагом, если при установке выбрать опцию "Примеры пользовательских отчетов")
30.10.2012 11:48
Александр-Tyumen
 
:l_book: Читаю. Вроде, что то проясняется. Спасибо большое!
30.10.2012 11:54
Mtirt
 
Кстати, в запрос надо как минимум добавить название схемы в названия таблиц.
Иначе точно работать не будет...
30.10.2012 12:01
Александр-Tyumen
 
supermag.smcard вот так? я правильно понял?
31.10.2012 10:26
Александр-Tyumen
 
Добрый день, а как определить когда выбран весь ассортимент товаров? У параметра P_BGROUP в мануале описаны только 2 значения
0 - если выбрана ассортиментная группа товаров;
1 - если выбрана группа классификатора товаров;
31.10.2012 10:55
Mtirt
 
P_BGROUP немного про другой выбор.
Он показывает, на основании какого классификатора надо отбирать карточки товаров: Классификатора ассортиментов товаров (sacardassort) или классификатора групп товаров (sacardclass).
31.10.2012 11:08
Александр-Tyumen
 

То есть выделенный кусок формы не имеет к этому отношения?
31.10.2012 11:18
Mtirt
 
Имеет, к выбору в разделе Только. Там будут две закладки.
31.10.2012 11:21
Александр-Tyumen
 
А как определить, что стоит галочка все?

Добавлено через 1 минуту 5 секунд
Или тогда P_GROUP_TREE пустая строка?
31.10.2012 13:07
Mtirt
 
Цитата:
Александр-Tyumen Или тогда P_GROUP_TREE пустая строка?
Не помню, наверное пустая...
31.10.2012 16:41
svtl
 
:P_GROUP_TREE = null - значит, выбраны все карточки
01.11.2012 11:14
Александр-Tyumen
 
Добрый день, при запуске отчета уже после формы с параметрами появляется вот такая ошибка
Цитата:
rep-1247 отчет содержит не компилированный PL/SQL
хотя он компилировался. В чем может быть загвоздка?
И не совсем понятен момент с ролями
Цитата:
Для отчета с номером 1702 роль будет назваться SUPERMAG_FN_USR_REP1702.
Для работы отчета в примере нужно предоставить роли права на чтение таблиц SmCard, SmSpec, SmDocuments:
Это нужно где то в самом Супермаге назначать? Или в отчете каким то образом сделать?
01.11.2012 11:24
Tema
 
Цитата:
Александр-Tyumen Добрый день, при запуске отчета уже после формы с параметрами появляется вот такая ошибка
хотя он компилировался. В чем может быть загвоздка?
делал подключение к базе? файл - соединить... (CTRL+J)
затем файл - администрирование - откомпилировать отчет (CTRL+T)
в объектном навигаторе сперва надо выбрать тот отчет который будет компилироваться, если вдруг несколько открывал.

Цитата:
Александр-Tyumen И не совсем понятен момент с ролями

Это нужно где то в самом Супермаге назначать? Или в отчете каким то образом сделать?
да, структура разделов - настройка отчетов, там надо новый создать в том разделе в который хочешь его запихать, супермаг укажет какая роль, раздаешь права на селект этой роли к тем таблицам которые участвуют в отчете и всё. Подробно всё это описано в инструкции к отчетам.
01.11.2012 11:28
Mtirt
 
Цитата:
Александр-Tyumen Добрый день, при запуске отчета уже после формы с параметрами появляется вот такая ошибка

хотя он компилировался. В чем может быть загвоздка?
Компилировался с соединением с базой данных?
Скорее всего где-то имя схемы пропущено...
Цитата:
Александр-Tyumen И не совсем понятен момент с ролями

Это нужно где то в самом Супермаге назначать? Или в отчете каким то образом сделать?
В Супермаге надо добавить отчет Разделы - Настройка - Настройка отчетов.
После создания отчета будет заполнена графа Роль.
Потом этой Роли надо дать права на доступ к объектам, используемым в отчете. Для выборки данных.
01.11.2012 11:54
Александр-Tyumen
 
Цитата:
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;
01.11.2012 11:58
Mtirt
 
Мне стала интересна версия Супермага.
01.11.2012 12:15
Александр-Tyumen
 
1.029.1 sp4

Добавлено через 4 минуты 8 секунд
А версия Report Builder
Цитата:
Report Builder 6.0.8.18.0
ORACLE Server Release 8.0.6.0.0
Oracle Procedure Builder 6.0.8.17.0
Oracle ORACLE PL/SQL V8.0.6.3.0 - Production
Oracle CORE Version 4.0.6.0.0 - Production
Oracle Tools Integration Services 6.0.8.17.0
Oracle Tools Common Area 6.0.5.32.1
Èíñòðóìåíòàðèé Oracle 2 äëÿ 32-áèòíûõ ïëàòôîðì Windows 6.0.8.18.0
Resource Object Store 6.0.5.0.1
Oracle Help 6.0.8.18.0
Oracle Sqlmgr 6.0.8.18.0
Oracle Query Builder 6.0.7.1.0 - Production
PL/SQL Editor (c) WinMain Software, v1.0 (Production)
Oracle ZRC 6.0.8.17.0
Oracle Express 6.0.8.3.5
Oracle XML Parser 1.0.2.1.0 Production
Oracle Virtual Graphics System 6.0.5.38.0
Oracle Image 6.0.8.18.1
Oracle Multimedia Widget 6.0.8.18.1
Oracle Tools GUI Utilities 6.0.8.11.0
01.11.2012 12:43
Mtirt
 
Тогда странно.
Мне это напоминало неустановленный патч на oracle reports, но это не ваш случай.
Или вы компилируете на одном компьютере, а Супермаг на другом?

P.S. зачем так мучаться с oracle reports, если в вашей версии можно отлично делать отчеты в FastReports?
01.11.2012 12:46
Александр-Tyumen
 
да компилирую на одном, а запускаю на другом. а что за чудо такое FastReports?
01.11.2012 12:52
Mtirt
 
Цитата:
Александр-Tyumen да компилирую на одном, а запускаю на другом.
Значит на другом компьютере патч на oracle reports не установлен.
Цитата:
Александр-Tyumen а что за чудо такое FastReports?
Среда разработки отчетов и печатных форм.
В том же файлике, который я рекомендовала прочитать в своем первом сообщении и про него должно быть тоже написано.
01.11.2012 13:32
Tema
 
фастрепорт вроде как платный, если Report Builder идет в составе дистрибутива см+, то где взять FastReport® Studio для написания отчетов? На сайте разработчиков есть демо версия с ограничениями, остальное за денежку.
01.11.2012 13:39
Mtirt
 
В составе дистрибутива Супермага идет FastReport.Designer.
Он позволяет создавать свои отчеты.

Добавлено через 4 минуты 9 секунд
Из изменений к версии 1.029
Цитата:
Исполнение отчетов средствами FastReport.

В Торговую Систему встроены коды программы исполнения отчетов FastReport.Net версии 1.5.1.

Для использования FastReport не требуется установка дополнительного программного обеспечения. Все необходимые модули устанавливаются в ходе установки компонентов Торговой Системы.

Отчеты, созданные с использованием среды FastReport, могут использовать в качестве источника данных не прямое соединение с базой данных, а соединение с сервером приложений. Это позволяет исполнять отчеты на удаленных компьютерах, расположенных вне локальной сети базы данных.

Отчеты, созданные в FastReport, могут выводиться в файлы следующих типов:
- Adobe PDF
- Word RTF
- Страница HTML
- Excel XML
- Excel 2007
- OpenOffice Calc
- простой текст (под матричный принтер)

В текущей версии для работы с FastReport переделаны наиболее часто используемые печатные формы документов «Приходная накладная», «Расходная накладная», «Накладная на перемещение», «Инвентаризационная опись», «Сличительная ведомость», «Кассовый документ», «Кассовые чеки».

Полный перечень печатных форм, работающих с FastReport, можно посмотреть в справочнике «Печатные формы документов». Файлы отчетов FastReport имеют расширение «frx».

Печатные формы FastReport и Oracle Reports могут применяться совместно. Процедура старта отчета или печатной формы по расширению файла отчета определяет подходящий исполнитель отчета. Все пользовательские и заказные печатные формы, созданные в среде Oracle Reports, по-прежнему, могут использоваться в тех случаях, когда они заменяют стандартные печатные формы, созданные в среде FastReport.

Отчеты, печатные формы и ценники, созданные в среде FastReport, могут подключаться в качестве пользовательских отчетов, печатных форм и ценников к Торговой Системе. Инструкция по установке и примеры помещаются в каталог .\ rep_example в процессе выполнения программы установки Торговой системы при выборе компонента «Примеры пользовательских отчетов».

Описание и инструкция по созданию отчетов находятся в файле RepExample_ReadMe.doc. Для создания собственных отчетов, печатных форм и ценников необходимо внимательно ознакомится с разделом «Приложение 4. Дизайнер отчетов FastReport.Net».

Компоненты редактора отчетов, поставляемые с Торговой Системой, позволяют создавать отчеты, которые будут работать в среде Торговой Системы, но не будут работать вне нее. Также как и отчеты, созданные без использования компонентов Торговой Системы, не будут работать в её среде без внесения изменения в источник данных отчета. В этом случае при попытке старта отчета будет получено сообщение вида: «Отчёт «название файла отчета» не использует SupermagFastReportConnection».

Использование плагина Sm.FastReports.dll позволяет использовать дополнительные возможности для создания отчетов, такие как выполнение процедур в теле отчета, форматирование выводимых строк и т.д. При создании отчета с использованием SupermagFastReportConnection, для работы дизайнера с базой данных требуется, чтобы был запущен сервер лицензий. Также для работы требуется наличие свободной лицензии пользователя.

При создании отчета без использования плагина Sm.FastReports.dll отчет может работать в среде Торговой Системы, только если у него будет замен источник данных. Это можно осуществить, если в файле отчета заменить тег, описывающий соединение. Например:

<Dictionary>
<OleDbDataConnection Name="Connection" ConnectionString="….">
…..
</OleDbDataConnection>
</Dictionary>

На следующие строки:

<Dictionary>
<SupermagFastReportConnection Name="Connection" LoginPrompt="true">
….
</SupermagFastReportConnection>
</Dictionary>
01.11.2012 13:47
Tema
 
нашел, причем это в изменениях от 1.029 написано, а в инструкциях к версии 1.029.2 нет
01.11.2012 14:14
Evelyn
 
Mtirt, так из описания -включен прокрутчик, а не сам FastReports
01.11.2012 14:18
Mtirt
 
Там ссылка есть на приложение № 4 в RepExample_ReadMe.doc. В нем написано дословно следующее (выделение шрифтом моё):
Цитата:
Приложение 4. Дизайнер отчетов FastReport.Net
В поставку ТС входит дизайнер отчетов, позволяющий создавать пользователям собственные отчеты, печатные формы или ценники в формате FastReport.Net. Установка файлов дизайнера отчета происходит при выборе компонента «Супермаг - Запуск отчетов» или типа установки «Торговая система». Этапы настройки дизайнера отчетов:

1) Найдите в каталоге, куда была установлена ТС (по умолчанию, SM2000\BIN), файл FastReport.Designer.exe и запустите его.
2) Подключите к дизайнеру плагин Sm.FastReports.dll (который расположен в том же каталоге, что и FastReport.Designer.exe) через пункт меню "View – Options - Plugins" ("Вид – Настройки - Плагины").
3) Перезапустите дизайнер отчетов.
4) Откройте в дизайнере отчетов какой-либо файл с расширением FRX, поставляемый в составе ТС (например, пример ценника price_card_example.frx).
5) При открытии файла дизайнер выдаст ошибку вида "Value cannot be null. Parameter name: databaseName". Нужно определить базу, которая будет служить источником данных для разработки отчетов. Для этого в окошке "View - Data" ("Вид - Данные") нужно встать на текущий источник данных (Data Sources (Источники данных) - Connection) и правой клавишей мыши выбрать пункт меню "Edit" ("Редактировать"). В появившемся мастере нажать кнопку "Edit connection" ("Редактировать") и задать базу и пароль пользователя SUPERMAG. Завершить работу мастера. Обратите внимание, что работа с базой возможна, если для нее запущен сервер лицензий Супермага.

Примечание. Для удобства форматирования чисел в отчетах FastReport.Net реализовано управление этим форматированием в клиентской части. Если имя текстового поля начинается с «mText» (или имя ячейки таблицы начинается с «mCell»), то числа в этих полях будут выводиться с точностью базовой валюты ТС. Если имя текстового поля начинается с «qText» (или имя ячейки таблицы начинается с «qCell»), то числа в этих полях будут выводиться с максимальной точностью количества в ТС, т.е. с точностью до трех знаков после запятой. Если имя текстового поля начинается с «pText» (или имя ячейки таблицы начинается с «pCell»), то числа в этих полях будут выводиться с максимальной точностью процентов в ТС, т.е. с точностью до четырех знаков после запятой. Если имя текстового поля начинается с «rText» (или имя ячейки таблицы начинается с «rCell»), то числа в этих полях будут выводиться с точностью до двух знаков после запятой.
Опции темы


Часовой пояс GMT +3, время: 01:44.

 

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