мета-данные страницы
Специальные параметры в скриптах ДС-ВДС
Со временем всё больше появляется необходимость в доступе к внутренним данным прорабатываемого скрипта. Например, для определения процента начисления бонусов по заказу.
Скриптер позволяет передать в него внешнюю переменную, которую он сможет спокойно использовать, менять её значение, и по результату выполнения скрипта это значение можно получить во внешних обработках.
Переменная 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;

