Разработка скриптов для системы E.B.A

В качестве языка написания скриптов, с системе E.B.A., применен QtScript (ECMA-script), схожий по синтаксису с языком JavaScript. Более подробная информация размещена на сайте QtSoftware: http://doc.trolltech.com, поэтому в данном документе описаны только специфические объекты, непосредственно связанные с системой.

Объекты системы:

  • table — таблица. Используется для получения данных из базы и отображения их в табличной форме.
  • аuxtable — таблица. Используется для получения данных. НЕ ОТОБРАЖАЕТСЯ! Применяется, исключительно, как инструмент чтения/записи из/в БД.
  • form — форма. Используется для получения данных от пользователя (пока только в плагине табличных отчетов).
  • params — параметры, передаваемые скрипту системой. Не всегда существуют.
  • debug — отладочная консоль. Существует только в плагине «Разработка и отладка скриптов».
  • document — документ (обычно печатная форма). Аналог одноименного объекта JavaScript.

Таблицу доступности объектов в скриптах, согласно функциональному назначению и передаваемым параметрам, смотрите в приложении 1.

Объект table (auxtable)

Методы:

void setScripts(String Select, String Update = "", String Insert = "", String Delete = "", bool Ready = false)
  • установка скриптов для таблицы. Select – выборка, Update – изменения, Delete – удаления, Ready – флаг, обозначающий, что указано тело скрипта, а не их его имя в хранилище системы.

В системе E.B.A. все используемые SQL-скрипты хранятся в БД и доступны по уникальному имени. Это один из способов обеспечения независимости системы от платформы БД. Однако, объект table (auxtable) может принимать на входе не только имена скриптов, но и готовые скрипты.

Пример:

Допустим, в системе есть таблица “table1”, содержащая поля “id” и “b_deleted”, а так же скрипт “TABLE1_SELECT”, имеющий вид “select * from table1 where b_deleted = 0”. Тогда получить данные из этой таблицы можно 2-мя способами:

  1. table.setScripts(“TABLE1_SELECT”);
  2. table.setScripts(“ select * from table1 where b_deleted = 0 ”,””,””,””,true);
bool setSelectParam(String paramName, Variant paramValue);
  • устанавка параметров для запроса Select.

Пример:

table.setScripts(“select * from table1 where b_deleted = :deleted”,””,””,””,true); table.setSelectParam(“deleted”,1);

в результате, при открытии таблицы (метод open() см. ниже) выполнится скрипт “select * from table1 where b_deleted = 1”
ВАЖНО: параметры в запросах имеют вид:
:<ИМЯ ПАРАМЕТРА>
однако, при установке значения параметра двоеточие не указывается.

void addColumn(String FieldName, int DataType = 0, bool Visible = false, String Label= "", 
int AutoInc = 0 , int Width = 100, Variant DefValue=0)
  • добавление колонки в таблицу.

FieldName – имя поля в БД.
DataTypeтип данных.
Visible – признак видимости колонки (для auxtable не актуально).
Label – текст заголовка колонки.
AutoInc – шаг автоинкремента.
Width – ширина колонки на экране (не актуально, если Visible == false)
DefValue – значение по умолчанию (не актуально для числовых полей при AutoInc <> 0)

int rowCount()
  • возвращает чисто строк в таблице.
bool open()
  • открывает таблицу (выполняет запрос Select). После открытия таблица становится доступной для чтения, изменения, дополнения и т.д.
void close()
  • закрывает таблицу. Все данные очищаются
    ВАЖНО: при закрытии не очищается информация о колонках!
bool commit()
  • сохраняет изменения в БД (не актуально, если все скрипты, кроме Select - пустые).
bool rollback()
  • откатывает все изменения.
    ВАЖНО: при вызове rollback() чтение данных из БД не производится. Данные откатываются до состояния на момент открытия таблицы (вызова open())!
bool first()
  • перемещает указатель текущей строки в начало таблицы. Возвращает true, если операция прошла успешно.
bool last()
  • перемещает указатель текущей строки в конец таблицы. Возвращает true, если операция прошла успешно.
bool next()
  • перемещает указатель текущей строки на следующую строку. Возвращает true, если операция прошла успешно, если достигнут конец таблицы – возращает false.
bool prev()
  • перемещает указатель текущей строки на предыдущую строку. Возвращает true, если операция прошла успешно, если достигнуто начало таблицы – возращает false.
Variant getField(String fldName)
  • возвращает значение поля fldName текущей строки
bool setField(String fldName, Variant fldData)
  • устанавливает значение поля fldName текущейстроки в fldData
bool addRow()
  • добавляет в таблицу пустую строку. Производит автоинкремент полей и установку значений по умолчанию (если таковые заданы). Устанавливает указатель текущей строки на новую строку. Возвращает true, если операция прошла успешно.
void dropColumns()
  • очищает информацию о колонках.
    ВАЖНО: если таблица открыта, то вызов dropColumns() будет проигнорирован (не вызывая ошибки или остановки сценария).

Объект params

Методы:

int count()
  • возвращает количество параметров, переданных скрипту
Variant getParam(String Name)
  • возвращает значение параметра с именем Name
Variant getFromUser(String title, String label, int dataType, Variant data)
  • запрашивает значение у пользователя, при этом сценарий останавливается, на экране появляется диалоговое casino online uk окно и система ждет ввода данных от пользоввателя
    title – заголовок диалогового окна
    label – текст вопроса
    dataTypeтип получаемых данных
    data – начальное значение (значение по умолчанию)

Объекты debug и document

Оба этих объекта предствляют собой стандартные виджеты библиотеки Qt класса QTextBrowser. Подробнейшая документация по классу QTextBrowser представлена на сайте http://doc.trolltech.com

ВАЖНО: в теле скрипта доступны только те методы, которые отмечены в документации как [public slot]!

Объект form

Представляет из себя графический прототип (форму), подготовленную при помощи программы QtDesigner или вручную и размещенную в БД или на диске. Форма предоставляет доступ ко всем виджетам, размещенным spielautomaten на ней. Форма (одна или несколько) подготавливается и размещается пользователем, поэтому (а так же по причине многообразия виджетов библиотеки Qt) описать этот объект не представляется возможным. Примеры применения объекта “form” размещены на сайте разработчика.

ВАЖНО: на форме можно размещать только стандартные виджеты библиотеки Qt. Все прочие виджеты работать не будут!

Типы данных

  • VBool - boolean, логический тип
  • VDateTime - дата/время (timestamp)
  • VDouble - double, вещественное 32 или 64 бит (в зависимости от платформы)
  • VString - строка символов
  • VInt - int, целое знаковое 32 бит
  • VLongLong - unsigned int, целое беззнаковое 64 бит.

Приложение 1.
Таблица доступности объектов в скриптах, согластно функциональному назначению и передаваемых параметров

Доступность объектов:

Объекты системы: form debug table auxtable params document
Плагин "разработка и отладка скриптов"
Скрипт автоматизации      
Скрипт формирования отчета      
Скрипт подготовки формы получения данных для отчета      
Скрипт формирования документа    

Передаваемые параметры:

Плагин "разработка и отладка скриптов":
Определяется пользователем

Скрипт системы автоматизации:
id_job - VLongLong, id задания, вызвавшего скрипт
d_last_run - VDateTime, дата/время последнего выполнения ЗАДАНИЯ (не скрипта)

Скрипт формирования документа:
c_html - VString, html-текст шаблона документа
id_reason - VLongLong, id электронной версии документа в БД

 
 
©2009 «IT Развитие»