Изменения

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

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

3670 байт добавлено, 16:11, 2 октября 2020
Нет описания правки
::CHECK – вводит булево значение (отображается на форме в виде галочки)
::DATE – вводит дату
::TIME – вводит время
::COMBO - вводит текст с возможностью выбора из выпадающего списка
::COMBOLIST - вводит текст из выпадающего списка
::UPDOWN - вводит целое число со стрелками уменьшения/увеличения
::FILESTR - вводит имя файла для открытия файла
::SAVEFILESTR - вводит имя файла для сохранения файла
::CHECKLISTBOX - выводит список с галками
5. Значение по-умолчанию
Пример объявления формы:
{||<pre>input, $zakaz, Введите номер заказа, int, 555 input, $date1, Введите дату начала, date input, $date2, Введите дату конца, date</pre>||}
Каждая последующая часть является выполнением запросов к БД. Выполнение запросов бывает 2-х видов: “Query” – просто выполнение запросов без возврата таблицы - для запросов типа insert, update, delete, и “Report” – выполнение запроса и выгрузка результатов его выполнения в Excel.<br />
Каждая часть с запросом должна начинаться с одного из этих ключевых слов – Query или Report, а дальше через пробел или с новой строки пишется запрос, в котором можно использовать переменные, введенные в первой части, а так же также зарезервированное выражение «%AddressQuery%», которое подставляет значение SQL-запроса из таблицы адресов на закладке «Адреса», для использования введенных пользователем фильтров<ref>Если запрос «select» возвращает поле, имя которого заканчивается на «_recno», при выгрузке в Excel значения этого поля будут заменены порядковым номером записи. Поля, имена которых начинаются на тире (-) не будут выведены. Это удобно использовать для полей технического назначения, например, для сортировки</ref>. В строке Report через пробел можно указать название ярлыка листа. Если в нем запятые - текст нужно взять в одинарные кавычки. Если в доп. возможности несколько блоков Report, отчеты будут выведены в один документ Excel на разные листы.
Пример полного текста дополнительной возможности:
{|
|<pre>
input, $zakaz, Введите номер заказа, int
input, $date1, Введите дату начала, date
input, $date2, Введите дату конца, date
input, $zakaz, Введите номер заказа, int input, $date1, Введите дату начала, date input, $date2, Введите дату конца, date report 'Ярлык листа для отчета' 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>
|
|}
Данный код выгружает корреспонденцию, выбранную пользователем в «Адресах», добавляя поле нумерации строк, текстовое поле с фиксированным значением, а также поле, в котором указывается пеший курьер доставляет, или водитель, и, если водитель – то указывается марка и гос. номер автомобиля.
 
Описание таблиц: Описание основных таблиц системы находится в таблице log.logfields, общий список таблиц можно посмотреть выполнив запрос «show tables from courier», а структуру конкретной таблицы – «describe table <table_name>»
 
&nbsp;
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
Данный код выгружает корреспонденциюПример использования типов полей ввода Combo и Combolist. Пример использования Combolist для выбора значения из выпадающего списка приведен ниже: {||<pre>input, $variable, Выберите клиента, combolist, SELECT company FROM CLIENTS where date_p>now() or Date_P is null order by COMPANY <?>showmessage($variable);</pre>||} Пример использования Combo, позволяющего осуществлять выбор из выпадающего списка путем текстового ввода значения приведен ниже: {||<pre>input, $combo1, Выберите клиента, combo, выбранную пользователем SELECT company FROM CLIENTS where date_p>now() or Date_P is null order by COMPANY <?>showmessage($combo1);</pre>||} Пример построения предустановленного списка значений вместо запроса рассмотрен в «Адресах»следующем примере. Значения списка необходимо перечислить через запятую. Пример синтаксиса рассмотрен ниже: {||<pre>input, $combo1, Выберите клиента, combo, 'Выбор 1, добавляя поле нумерации строкВыбор 2, текстовое поле ''Выбор с фиксированным значением, а так же полезапятой'', ''Выбор с ''' апострофом'''</pre>||}  Пример использования символа 'запятой' в исходном коде рассмотрен на примере ее использования дважды в коде. Первое - в названии поля ввода, второе - в котором указывается пеший курьер доставляетсамом Select-запросе для разделения двух полей "company" и "code". {||<pre>input, $combo1, 'Выберите клиента, какого хотите!', combo, или водитель'SELECT company, иcode FROM CLIENTS where date_p>now() or Date_P is null order by COMPANY, если водитель – то указывается марка и гос. номер автомобиляcode' <?>showmessage('Выбрали клиента с кодом:'+$combo1.codes);</pre>||}  
Описание таблиц: Описание основных таблиц системы находится в таблице log.logfields, общий список таблиц можно посмотреть выполнив запрос «show tables from courier», а структуру конкретной таблицы – «describe table <table_name>»
=Примечания=
<references/>

Навигация