1.2.1. Методы быстрого доступа к Selection

1.2.1.1. Контекст/Параметры/Данные

GetVar(Name: String): Variant

Возвращает значение атрибута (параметра).

Parameters:Name (String) – Имя параметра.
Return type:Variant
VarExists(Variant: Variant): Boolean

Функция проверяет существование параметра выборки или парамлиста с заданным именем.

Parameters:Variant (Variant) – Имя параметра выборки или парамлиста
Return type:Boolean
ClientSetVar(Name: String; Value: Variant)

Метод работает аналогично SetVar, устанавливает значение атрибута (параметра), но без вызова сеттера.

Parameters:
  • Name (String) – Имя атрибута(параметра).
  • Value (Variant) – Значение атрибута(параметра).
AddVar(Name: String; Value: Variant; Type: TFieldType)

Добавляет параметр в выборку. Если параметр с таким именем уже существут, то изменяются тип данных и значение существующего параметра.

Parameters:
  • Name (String) – Имя создаваемого параметра
  • Value (Variant) – Значение параметра.
  • Type (TFieldType) – Тип данных параметра
SetVarDesc(Name, Value: Variant)

Устанавливает описание параметра (то, что отображается в заголовках грида и т.п.). В Value можно передать заголовок бенда, к которому будет привязан атрибут (через символ |)

Parameters:
  • Name (Variant) – Имя параметра.
  • Value (Variant) – Cтрока описания.
GetSelfVar(VarName: String): Variant

Возвращает значение параметра выборки. В отличае от GetVar не смотрит на выборку мастера, если не находит параметр VarName в текущей выборке. С помощью данной функции можно получить значения:

  • атрибута выборки
  • свойства фрейма
  • параметры добавленные с помощью AddVar
  • параметры добовленные при вызове CreateFormEx или DoLookUpEx.
Parameters:VarName (String) – Имя переменной.
Return type:Variant
GetVarDesc(Name: String): String

Получает описание параметра (то, что отображается в заголовках списка и т.п.)

Parameters:Name (String) – Имя параметра.
Return type:String
SelfVarExists(VarName: Boolean): Variant

Проверяет существование параметра выборки. В отличии от VarExists, не смотрит на выборку мастера, если не находит параметр VarName в текущей выборке. С помощью данной функции можно проверить существование: - атрибута выборки - свойства фрейма - параметры добавленные с помощью AddVar - параметры добовленные при вызове CreateFormEx или DoLookUpEx.

Parameters:VarName (Boolean) – Имя переменной.
Return type:Variant
SetVar(ParamName: String; ParamValue: Variant)

Устанавливает значение атрибута (параметра).

Parameters:
  • ParamName (String) – Имя параметра.
  • ParamValue (Variant) – Строка описания.

1.2.1.2. Макросы

GetMacro(MacroName: String): String

Метод возвращает значение макроса с именем MacroName.

Parameters:MacroName (String) – Имя макроса
Return type:String
IsMacroExists(MacroName: String): Boolean

Проверяет существование макроса c именем MacroName.

Parameters:MacroName (String) – Имя макроса.
Return type:Boolean
Пример использования
<pascal>
  if IsMacroExists('NewMacro') then
    SetMacro('NewMacro', 'Select 2 from dual')
  else
    AddMacro('NewMacro', 'Select 2 from dual');

  ShowMessage(GetMacro('NewMacro'));
  Selection.Active := False;
  Selection.Active := True;
</pascal>
SetMacro(MacroName, MacroValue: String): Variant

Устанавливает макрос с именем MacroName и значение MacroValue. Если при установке значения макроса выборка была открыта (Selection.Active = True), то произойдёт её закрытие. Поэтому после устанвки макроса необходимо открыть выборку самостоятельно.

Parameters:
  • MacroName (String) – Имя макроса
  • MacroValue (String) – Значение макроса
Return type:

Variant

AddMacro(MacroName, MacroValue: String)

Создаёт в выборке макрос с именем MacroName и значением MacroValue. Если макрос с именем MacroName существует, макросу будет установлено значение MacroValue.

Parameters:
  • MacroName (String) – Имя макроса.
  • MacroValue (String) – Значение макроса.

1.2.1.3. Датасет

Commit()

Шорткат метода TbtkScriptSelectionObject.Commit().

Append(F: Variant)

Функция открывает файл на добавление записей в файл.

Parameters:F (Variant) – Файловая переменная.
Change()

Вызов метода указывает форме, что данные на форме менялись, даже если транзакция не была начата

Rollback()

Функция вызывает откат текущей активной транзакции.

BlobOpen(FieldName, Extension, Wait, Save: Variant): Boolean

Запускает приложение, ассоциированное с расширением Extension, передает ему данные из поля выборки FieldName и, если Wait = true, то ожидает завершения запущенного приложения, после чего сохраняет или нет (в зависимости от параметра Save) обратно в БД. Возвращает True если изменения в файле были сохранены в поле.

Parameters:
  • FieldName (Variant) – Имя поля.
  • Extension (Variant) – Расширение файла (с точкой впереди).
  • Wait (Variant) – Ожидать ли завершения запущенного приложения.
  • Save (Variant) –

    Имеет смысл только если параметр Wait = true. Сохранять ли файл в БД если он был изменен:

    stTrue
    сохранить
    stFalse
    не сохранять
Return type:

Boolean

GetFocusedFieldName(): String

Возвращает имя атрибута (параметра), на редакторе которого находится фокус. Для списка (дерева) – это будет активный столбец; для карточки (панели фильтров) – это атрибут (параметр), редактируемый активным контролом. Если что-то не так, вернёт пустую строку.

Метод является алиасом для TbtkScriptSelectionObject.GetFocusedFieldName

Return type:String
BlobOpenEx(FieldName, FileName: String; Selection: TbtkScriptSelectionObject; Operation: String; Mode: TbtkWatcherMode): Boolean

Добавлена возможность открывать на редактирование файлы хранящиеся в blob полях в немодальном режиме. В немодальном режиме файл можно открыть использую метод BlobOpenEx. После завершения приложения будет вызвана операция выборки. Операция выборки вызовется только в случае если файл было измен. Возвращает True если изменения в файле были сохранены в поле.

Parameters:
  • FieldName (String) – Имя поля типа blob с файлом.
  • FileName (String) –

    Имя файла. Можно передать:

    • Полный путь к файлу (C:\Temp\picture.jpg);
    • Имя файла (picture.jpg), тогда приложение попытается создать файл с таким именем во временном каталог пользователя;
    • Расширение файла (.jpg) - приложение попытается создать файл с уникальным именем и указанным расширением во временном каталоге пользователя. В случае, если такой файл уже существует, то будет возбуждено исключение.
  • Selection (TbtkScriptSelectionObject) – Выборка в которой будет вызвана операция на событие завершение редактирования файла.
  • Operation (String) – Имя операции которая будет вызвана при завершении редактирования файла.
  • Mode (TbtkWatcherMode) –

    Режим открытия файла:

    • wmProcess - Определение того, что файл редактируется, производится на основе существования процесса приложения открывшего его. Как только процесс завершается, делается вывод, что редактрование завершено. Данный режим обладает недостатком. Если приложение(например MS Word) для открытия нескольких файлов использует один и тот же процесс, то процесс завершится после закрытия всех открытых файлов, чего следует избегать, и, по возможности, использовать следующий режим;
    • wmFile - Определение того, что файл редактируется, производится на основе того, что многие прилоежния занимают файл при открытии, недопуская его открытия на редактирование другим приложением. Но данный способ применим не ко всем приложениям (Например, приложение “Блокноте” не запрещает редатировать файл при открытии другим приложения).
    • wmAuto - авто-определения режима. В случае, если при вызове уже не запущен процесс приложения которым следует открыть файл, то будет выбран режим wmProcess, иначе режим wmFile
Return type:

Boolean

Пример использования
<PASCAL>
  path := InputBox ('Введите путь файлу', 'Файл:', '');
  selection.blobopenex('blobFile',path ,selection,'SendEmail',wmFile);
</PASCAL>

1.2.1.4. Forms

CreateForm(FormName, EntityName: String; FormType: TFormCreationFlags): TModalResult

Метод создает и показывает форму. Если форма модальная, то функция ожидает её закрытия.

Parameters:
  • FormName (String) – Имя формы.
  • EntityName (String) – Имя выборки которая будет показана на форме.
  • FormType (TFormCreationFlags) – Параметр определяет как будет показана форма (модально или как MDI-child).
Return type:

TModalResult

Returns:

mrOk или mrCancel

если форма модальная (FormType = fcfModal)

mrNone

если форма MDI-ная (FormType = fcfMDI)

Пример использования
<Pascal>
  CreateForm('', 'SEL_RPT_Report.List', fcfMDI);
</Pascal>
CreateFormEx(FormName, EntityName: String; FormType: TFormCreationFlags; PropNames, PropValues: Array): TModalResult

Метод создает и показывает форму. Если форма модальная, то функция ожидает её закрытия. Отличается от CreateForm возможностью передавать дополнительные параметры.

При открытии Built-in формы производит поиск существующей и её активацию (поиск делается по имени выборки, отображению, списку параметров выборки, переданных через CreateFormEx). После активации уже существовавшей формы вызывается операция OnFormActivatedAfterFindWindow. Для того, чтобы всегда открывать форму в новом окне, не проверяя, есть ли уже такая же открытая форма, в списке передаваемых параметров необходимо указать параметр CreatingMode со значением “CreateNewForm”.

Также имеется возможность передавать в выборку макросы в качестве параметров. Макрос передается в списке параметров. Имя макроса должно начинаться с символа ‘&’.

Parameters:
  • FormName (String) – Имя формы.
  • EntityName (String) – Имя выборки которая будет показана на форме.
  • FormType (TFormCreationFlags) – Параметр определяет как будет показана форма (модально или как MDI-child).
  • PropNames (Array) – Массив имен параметров.
  • PropValues (Array) – Массив значений параметров [APropNames].
Return type:

TModalResult

Returns:

mrOk или mrCancel

если форма модальная (FormType = fcfModal)

mrNone

если форма MDI-ная (FormType = fcfMDI)

Примеры использования
<Pascal>
  CreateFormEx('', 'SEL_RPT_Report.List', fcfMDI,
  ['Representation', 'TabVisible','ExParam1'],
  ['RoList', 0, 'Значение']);
</Pascal>

<Pascal>
  CreateFormEx('', 'SEL_RPT_Report.List', fcfMDI,
  ['Representation', '&macros','ExParam1'],
  ['RoList', 'cSum < 100', 'Значение']);
</Pascal>
DoLookup(LookupControlClass, EntityName: String; LocateFieldNames, LocateFieldValues, ResultFieldNames: Array; MultiSelect: Boolean): TbtkLookupData

Отображает выборку в режиме выбора (в lookup-форме), возвращает результат в виде набора записей TbtkLookupData.

Parameters:
  • LookupControlClass (String) – Имя класса формы.
  • EntityName (String) – Системное имя выборки (если пусто, то определяется вызываемой формой).
  • LocateFieldNames (Array) – Массив имен атрибутов выборки по которым ищется запись для начального позиционирования.
  • LocateFieldValues (Array) – Вариантный массив значений для LocateFieldNames.
  • ResultFieldNames (Array) – Массив имен атрибутов выборки, значения которых будут возвращены как результат. В случае, если необходимо вернуть значение атрибута из детальной выборки, в качестве массивов имен атрибутов передаются имена состоящие из: [имя выборки].[имя поля].
  • MultiSelect (Boolean) – Возможен ли выбор нескольких записей из выборки.
Return type:

TbtkLookupData

Пример использования
<Pascal>
  R := DoLookup('TbtkLookupGridForm', 'maintree', ['id'], [2629000], ['id', 'sParentClass'], true);

  if R.LookupResult=lrOk then
    MessageDlg(VarToStr(R.Data(0,1)) + '->' + R.Data(1,1), mtWarning, 'mbYes', 0);
</Pascal>
DoLookupEx(LookupControlClass, EntityName: String; LocateFieldNames, LocateFieldValues, ResultFieldNames: Array; MultiSelect: Boolean; PropNames, PropValues: Array): TbtkLookupData

Отображает выборку в режиме выбора (в lookup-форме), возвращает результат в виде набора записей TbtkLookupData.

Отличается от DoLookUp возможностью дополнительного указания свойств для открываемой формы.

Parameters:
  • LookupControlClass (String) – Имя класса формы.
  • EntityName (String) – Системное имя выборки (если пусто, то определяется вызываемой формой).
  • LocateFieldNames (Array) – Массив имен атрибутов выборки по которым ищется запись для начального позиционирования.
  • LocateFieldValues (Array) – Вариантный массив значений для LocateFieldNames.
  • ResultFieldNames (Array) – Массив имен атрибутов выборки, значения которых будут возвращены как результат. В случае, если необходимо вернуть значение атрибута из детальной выборки, в качестве массивов имен атрибутов передаются имена состоящие из: [имя выборки].[имя поля].
  • MultiSelect (Boolean) – Возможен ли выбор нескольких записей из выборки.
  • PropNames (Array) – Массив имен свойств.
  • PropValues (Array) – Массив значений свойств.
Return type:

TbtkLookupData

Пример использования, в котором рассматривается случай возврата значений из двух выборок.
<SQL>
  <Set>
    begin
      AnyAPI.SetIdContract(:id, :IDContract);
      AnyAPI.SetIdContract(:id, :IDObligation);
    end;
  </Set>
</SQL>

<Pascal>
  S := DoLookupEx('', 'SELRO_CNT_ContractChoose',
  ['SELRO_CNT_ContractChoose.id',
  'SELROCL_CNT_ObligationChoose.id'],
  [GetVar('IDContract'), GetVar('IDObligation')],
  ['SELRO_CNT_ContractChoose.id',
  'SELROCL_CNT_ObligationChoose.id'], false,
  ['Caption'], [GetFmtCaption('CONTRACTOBLFORCHOOSE',
  [GetVar('super$IDSettlerOut_HL'), GetVar('super$IDSettlerIn_HL')])]);

  if S.LookupResult = lrOk then
  begin
    ShowMessage(s.SelectData('SELRO_CNT_ContractChoose').RecCount);
    ShowMessage(s.SelectData('SELROCL_CNT_ObligationChoose').RecCount);

    SetVar('IDContract', S.SelectData('SELRO_CNT_ContractChoose').Data[0,1]);
    SetVar('IDObligation', S.SelectData('SELROCL_CNT_ObligationChoose').Data[0,1]);
    ExecSql('set');
  end;
</Pascal>

Для доступа вернувшимся значениям была использована структура: SelectData([имя выборки]).Data [AttrNo,RecNo]. Её использование необходимо при явном указании имени поля ([имя выборки].[имя поля]), если поле указано неявно ([имя поля]), то вернувшиеся данные будут доступны непосредственно в свойстве Data

CreatePanelEx(FrameName, EntityName: String; ParamNames, ParamValues: Array)

Метод показывает фрейм в виде панели на текущей форме. Передает фрейму параметры. Существуют следующие параметры, позволяюще настроить создаваемый фрейм:

PanelAlign

Задает расположение панели. Допустимые значения:

  • alLeft
  • alTop
  • alBottom
  • alRight

Если не указывать - будет alLeft.

PanelSize
Размер создаваемой панели. Высота, если align = alTop или align = alBottom, и ширина в других случаях. По умолчанию = 1/3 от ширины/высоты экрана.
Parameters:
  • FrameName (String) – Имя фрейма.
  • EntityName (String) – Имя выборки, которой инициализируется внутренний Selection формы.
  • ParamNames (Array) – Массив имен параметров.
  • ParamValues (Array) – Массив значений параметров.
Пример использования
<pascal>
  CreatePanelEx('TBTKLOOKUPGRIDTABFRAME', 'SEL_ObjectClassUnion', [null], [null]);

  CreatePanelEx('TBTKLOOKUPGRIDTABFRAME', 'SEL_ObjectClassUnion', ['PanelAlign', 'PanelSize'], [alTop, 450]);
</pascal>

1.2.1.4.1. TModalResult

class TModalResult

Перечисление

Результат, возвращаемый модальным окном при закрытии.

mrYesToAll

Окно закрыто кнопкой YES TO ALL.

mrNoToAll

Окно закрыто кнопкой NO TO ALL.

mrAll

Окно закрыто кнопкой ALL

mrRetry

Окно закрыто кнопкой RETRY.

mrNo

Окно закрыто кнопкой NO.

mrYes

Окно закрыто кнопкой YES

mrAbort

Окно закрыто кнопкой ABORT.

mrCancel

Окно закрыто кнопкой CANCEL.

mrOk

Окно закрыто кнопкой OK.

mrNone

Значение по-умолчанию. Задается при создании модалного окна.

mrIgnore

Окно закрыто кнопкой IGNORE

1.2.1.4.2. TLookUpResult

class TLookUpResult

Перечисление

Результат выбора записей в lookup-форме.

lrCancel
lrOk

1.2.1.4.3. TFormCreationFlags

class TFormCreationFlags

Перечисление

fcfMDI
fcfModal

1.2.1.5. Фреймы

Scheduler(): TbtkScheduler

Возвращает объект-планировщик Scheduler.

Return type:TbtkScheduler
Gantt(): TbtkGantt

Метод возвращает ссылку на объект “График Гантта”, расположенный на фрейме. Если на фрейме компонента “График Гантта” не существует, метод вернёт null.

Return type:TbtkGantt
Diagram(): TbtkAdvDiagram

Возвращает объект для работы с Adv диаграммой, если он присутствует на фрейме. В противном случае вернёт null.

Return type:TbtkAdvDiagram
Chart(): TCustomChart

Метод возвращает активный объект - график, типа TCustomChart.

Return type:TCustomChart
Olap(): TbtkScriptOLAPObject

Доступ к OLAP интерфейсу фрейма текущей выборки.

Return type:TbtkScriptOLAPObject

1.2.1.6. SQL

ExecSQL(BlockName: String)

Метод выполняет PL/SQL-блок BlockName, объявленный в текущей операции.

Parameters:BlockName (String) – Имя PL/SQL блока.
Пример использования
<SQL>
  <GetCost>
  [Out cost]
    begin
      select price into :cost
      from table
      where code = :id;
    end;
  </GetCost>
</SQL>

<Pascal>
  ExecSQL('GetCost');
  value := GetVar('Cost');
  ShowMessage(IntToStr(Value * 10));
</Pascal>
ExecSQLEx(BlockName: String; ParamNames, ParamTypes, ParamValues: Variant): Variant

Метод выполняет PL/SQL-блок BlockName, объявленный в текущей операции, с возможностью передавать в SQL-блок дополнительные, не участвующие в контексте выборки параметры, а также возвращать их. Имена входящих параметров задаются в ParamNames через точку с запятой. В тексте SQL-запроса можно использовать не только передаваемые в ParamNames параметры, но и использовать параметры, имеющиеся в выборке. В случае совпадения имен параметров, будет использоваться параметр, переданный в вызове ExecSQLEx. Возвращает массив значений параметров, указанных в ParamNames, в том порядке, в котором они перечислены в ParamNames. Если возвращаемый параметр участвует в секции [OUT] sql-запроса, то будет возвращено его новое значение. Если не участвует, то будет возвращено то значение, которое передавалось в ParamValues. Если входящих параметров нет, то можно передавать ParamNames = '' и ParamValues = []. Количество параметров должно совпадать с количеством типов и с количеством значений. Все параметры являются входящими и могут являться возвращаемыми.

Parameters:
  • BlockName (String) – Имя PL\SQL sql-блока.
  • ParamNames (Variant) – Имена входящих параметров, разделенные точкой с запятой.
  • ParamTypes (Variant) –

    Массив типов параметров в формате: [тип1, тип2, …] Доступные константы типов параметров:

  • ParamValues (Variant) – Массив значений параметров в формате: [значение1, значение2].
Return type:

Variant

Пример использования
<SQL>
  <Save>
  [out sNotionReg]
    begin
      :sNotionReg := BTK_Loader.OutNotionToScriptText(:idNotion);
    end;
  </Save>
</SQL>

<Pascal>
begin
  sRes := ExecSQLEx('save', 'idNotion; sNotionReg ',
    [ftInteger, ftString], [GetVar('id'), '']);
  // возвращаемое значение sNotionReg находится в sRes[1].
  // В sRes[0] находится передаваемый параметр idNotion.
  SaveToFile('', sRes[1]);
end;
</Pascal>
ExecSQLWithProgress(BlockName, Caption, Message, EventName: String; FinalValue: Integer): Variant

методы позволяют выполнять SQL-блоки, которые посылают по Pipe каналу сообщения о процессе выполнения. Методы открывают модальное окно с полосой прогресса, которое слушает Pipe канал с заданным именем, и запускаю выполнение SQL-блока. Сообщения, приходящие с сервера должны содержать число в диапазоне [0 .. FinalValue]. По приходу сообщения с числом равным или больше FinalValue, диалог будет закрыт. Если FinalValue = 0, то диалог будет закрыт при получении первого сообщения.

Parameters:
  • BlockName (String) – Имя SQL-блока.
  • Caption (String) – Текст заголовка окна.
  • Message (String) – Cообщение.
  • EventName (String) – Имя Pipe-канала.
  • FinalValue (Integer) – Финальное значение.
Return type:

Variant

Пример использования
<sql>
  <msg>
    declare
      i integer;
      j integer;
    begin
      i := 1;

      loop
        dbms_pipe.pack_message(to_char(i));
        j := dbms_pipe.send_message('TestEvent');
        i := i + 1;
        dbms_lock.sleep(1);

        if i = 11 then
          exit;
        end if;
      end loop;
    end;
  </msg>
</sql>

<pqscal>
  ExecSQLWithProgress('msg', 'Заголовок', 'Сообщение', 'TestEvent', 10 );
</pascal>
ExecSQLExWithProgress(BlockName, ParamNames, ParamTypes, ParamValues, Caption, Message, EventName: String; FinalValue: Integer): Variant

Методы позволяют выполнять SQL-блоки, которые посылают по Pipe каналу сообщения о процессе выполнения. Методы открывают модальное окно с полосой прогресса, которое слушает Pipe канал с заданным именем, и запускаю выполнение SQL-блока. Сообщения, приходящие с сервера должны содержать число в диапазоне [0 .. FinalValue]. По приходу сообщения с числом равным или больше FinalValue, диалог будет закрыт. Если FinalValue = 0, то диалог будет закрыт при получении первого сообщения.

Parameters:
  • BlockName (String) – Имя SQL-блока.
  • ParamNames (String) – Имена входящих параметров, разделенные точкой с запятой.
  • ParamTypes (String) – Массив типов параметров в формате: [тип1, тип2, …] Доступные константы типов параметров: - ftString - ftInteger - ftFloat - ftDateTime - ftOraBlob - ftOraClob
  • ParamValues (String) – Массив значений параметров в формате: [значение1, значение2] Количество параметров должно совпадать с количеством типов и с количеством значений. Все параметры являются входными и могут являться выходными.
  • Caption (String) – Текст заголовка окна.
  • Message (String) – Сообщение.
  • EventName (String) – Имя Pipe-канала.
  • FinalValue (Integer) – Финальное значение.
Return type:

Variant

Пример использования
<sql>
  <msg>
  [OUT idpValue]
    declare
      i integer;
      j integer;
    begin
      i := 1;
      :idpValue := 'Возвращаемое значение';

      loop
        dbms_pipe.pack_message(to_char(i));
        j := dbms_pipe.send_message('TestEvent');
        i := i + 1;
        dbms_lock.sleep(1);

        if i = 11 then
          exit;
        end if;

      end loop;
    end;
  </msg>
</sql>

<pascal>
  R :=  ExecSQLExWithProgress('msg', 'idpValue', [ftString], ['Входящее
  значение'], 'Заголовок', 'Сообщение', 'TestEvent', 10 );
  ShowMessage(R[0]);
</pascal>