Изменения

Перейти к: навигация, поиск

Пользовательские отчеты

206 байт добавлено, 11:20, 17 сентября 2012
Нет описания правки
Пример объявления формы:
{||<pre>input, $zakaz, Введите номер заказа, int
input, $date1, Введите дату начала, date
input, $date2, Введите дату конца, date</pre>
||}
Каждая последующая часть является выполнением запросов к БД. Выполнение запросов бывает 2-х видов: “Query” – просто выполнение запросов без возврата таблицы - для запросов типа insert, update, delete, и “Report” – выполнение запроса и выгрузка результатов его выполнения в Excel.<br />
Каждая часть с запросом должна начинаться с одного из этих ключевых слов – Query или Report, а дальше через пробел пишется запрос, в котором можно использовать переменные, введенные в первой части, а так же зарезервированное выражение «%AddressQuery%», которое подставляет значение SQL-запроса из таблицы адресов на закладке «Адреса», для использования введенных пользователем фильтров<ref>Если запрос «select» возвращает поле, имя которого заканчивается на «_recno», при выгрузке в Excel значения этого поля будут заменены порядковым номером записи</ref>.
Пример полного текста дополнительной возможности:
{||<pre>input, $zakaz, Введите номер заказа, int
input, $date1, Введите дату начала, date
input, $date2, Введите дату конца, date
report select 0 as '№ п/п_recno', target as 'Компания', name as 'ФИО'
from address
where zakaz=$zakaz
and date_put between $date1 and $date2</pre>
||}
Данный код выводит диалоговое окно для ввода пользователем исходных данных, и потом выводит отчет о корреспонденции из указанного заказа, доставленной в указанный промежуток времени.
Пример использования %AddressQuery% (обратите внимание, что перед текстом должна быть пустая строка, обозначающая начало второй части текста):
{||<pre>
report select 0 as '№ п/п_recno', 'Электротовары и аксессуары к ним' as 'Характер груза', case when k.car is not null
then (select concat('Водитель: ',c.number, ' ', ct.name) from cars c join car_types ct on c.type=ct.code where c.code=k.car)
else concat('Пеший: ', k.name) end as 'Вид транспорта', case when (a.number=0) and (a.strbarcode<><nowiki>''</nowiki>) then a.strbarcode
else concat(a.zakaz, '-', a.number) end as 'Номер курьерской накладной', a.address as 'Пункт назначения',
a.rur as 'Страховая сумма в руб.'
from (%addressQuery%) a join kurier k on a.tokurier=k.code</pre>
||}
Данный код выгружает корреспонденцию, выбранную пользователем в «Адресах», добавляя поле нумерации строк, текстовое поле с фиксированным значением, а так же поле, в котором указывается пеший курьер доставляет, или водитель, и, если водитель – то указывается марка и гос. номер автомобиля.
587
правок

Навигация