Изменения

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

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

7626 байт добавлено, 09:37, 13 сентября 2012
Новая страница: «Для управления пользователями выберите пункт «Дополнительные возможности» меню «Отчет…»
Для управления пользователями выберите пункт «Дополнительные возможности» меню «Отчеты» главного меню программы. Откроется окно дополнительных возможностей.

Для создания новой дополнительной возможности выберите пункт «Создать» в контекстном меню и введите название новой дополнительной возможности. После этого Вы переходите к редактированию исходного текста пользовательской функции.

Синтаксис дополнительных возможностей:<br />
Код дополнительной возможности состоит из 2-х или более частей, разделяемых пустой строкой.<br />
Первая часть – описание формы ввода данных пользователем. Если она отсутствует (форма не нужна), то перед второй частью все-равно должна быть пустая строка.<br />
Описание формы состоит из описаний полей ввода – одно поле на одной строке. Описание каждого поля ввода состоит из четырех параметров, разделяемых запятыми:
#input – должно присутствовать всегда – признак объявления поля ввода.
#Имя переменной, которой будет присвоен результат – рекомендуется использовать символ доллара в начале переменной для однозначной идентификации.
#Название поля ввода – текстовая строка, которая будет выведена на форме.
#Тип поля ввода. Возможные значения:
::INT – вводит целое число
::STR – вводит строку
::CUSTSTR – вводит строку, но не экранирует ее при подстановке в запрос
::FLOAT – вводит число с плавающей точкой
::CHECK – вводит булево значение (отображается на форме в виде галочки)
::DATE – вводит дату
::'''''Примечание к переменным'''''
::::''Заполнение запроса значениями происходит функцией replace, поэтому нельзя допускать, чтобы название одной переменной было подстрокой названия другой переменной. Например, если Вы создаете 2 переменные: $date и $date1, переменная $date1 может оказаться неработоспособной, поскольку ее название включает в себя название другой переменной.''

Пример объявления формы:
input, $zakaz, Введите номер заказа, int
input, $date1, Введите дату начала, date
input, $date2, Введите дату конца, date

Каждая последующая часть является выполнением запросов к БД. Выполнение запросов бывает 2-х видов: “Query” – просто выполнение запросов без возврата таблицы - для запросов типа insert, update, delete, и “Report” – выполнение запроса и выгрузка результатов его выполнения в Excel.<br />
Каждая часть с запросом должна начинаться с одного из этих ключевых слов – Query или Report, а дальше через пробел пишется запрос, в котором можно использовать переменные, введенные в первой части, а так же зарезервированное выражение «%AddressQuery%», которое подставляет значение SQL-запроса из таблицы адресов на закладке «Адреса», для использования введенных пользователем фильтров.<br />
'''''Примечание'''''
::''Если запрос «select» возвращает поле, имя которого заканчивается на «_recno», при выгрузке в Excel значения этого поля будут заменены порядковым номером записи.''

Пример полного текста дополнительной возможности:

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

Данный код выводит диалоговое окно для ввода пользователем исходных данных, и потом выводит отчет о корреспонденции из указанного заказа, доставленной в указанный промежуток времени.

Пример использования %AddressQuery% (обратите внимание, что перед текстом должна быть пустая строка, обозначающая начало второй части текста):

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<>&rsquo;&rsquo;) 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

Данный код выгружает корреспонденцию, выбранную пользователем в «Адресах», добавляя поле нумерации строк, текстовое поле с фиксированным значением, а так же поле, в котором указывается пеший курьер доставляет, или водитель, и, если водитель – то указывается марка и гос. номер автомобиля.

Описание таблиц: Описание основных таблиц системы находится в таблице log.logfields, общий список таблиц можно посмотреть выполнив запрос «show tables from courier», а структуру конкретной таблицы – «describe table <table_name>»
587
правок

Навигация