мета-данные страницы
Специальные параметры в скриптах ДС-ВДС
Со временем всё больше появляется необходимость в доступе к внутренним данным прорабатываемого скрипта. Например, для определения процента начисления бонусов по заказу.
Скриптер позволяет передать в него внешнюю переменную, которую он сможет спокойно использовать, менять её значение, и по результату выполнения скрипта это значение можно получить во внешних обработках.
Переменная scriptPercent не объявлена локально. Она попадает в скрипт «извне». После отработки скрипта стоит вывод значения этой переменной. Она используется для отображения информации о расчёте бонусов за заказ
Техническая часть
Чтобы подобное реализовать, нужно доработать модуль ScriptFunctions.pas:
- В процедуре TScriptExecutor.PSScriptCompile, являющейся обработчиком PSSCript.OnCompile, регистрируем название новой переменной: Sender.AddRegisteredPTRVariable('scriptItogSum', 'double');
- В процедуре TScriptExecutor.PSScriptExecute, являющейся обработчиком PSSCript.OnExecute, связываем переменную с полем записи ExtScriptResInfo: PSScript.SetPointerToData('scriptItogSum', @ExtScriptResInfo.scriptItogSum, PSScript.FindBaseType(btDouble));
Базовые типы переменных в скриптах
Базовый тип в скриптере | Соответствующий тип Delphi |
---|---|
btU8 | Byte |
btS8 | ShortInt |
btU16 | Word |
btS16 | SmallInt |
btU32 | Longword |
btS32 | LongInt |
btS64 | Int64 |
btSingle | Single |
btDouble | Double |
btExtended | Extended |
btVariant | Variant |
btString | String |
btWideString | WideString |
btChar | Char |
btWideChar | WideChar |
Функции получения данных
Весь список возможных функций получения данных:
- function VGetUInt(const Src: PIFVariant): Cardinal;
- function VGetInt64(const Src: PIFVariant): Int64;
- function VGetReal(const Src: PIFVariant): Extended;
- function VGetCurrency(const Src: PIFVariant): Currency;
- function VGetInt(const Src: PIFVariant): Longint;
- function VGetString(const Src: PIFVariant): String;
- function VGetAnsiString(const Src: PIFVariant): tbtString;
- function VGetWideString(const Src: PIFVariant): tbtWideString;
- function VGetUnicodeString(const Src: PIFVariant): tbtunicodestring;