Съдържание

Константи и функции за формули и параметри за дата и час

Константи

CURRENT_DATE, DATE, TODAY - връща текущата дата с час 00:00:00.000 като дата и час (DM_DATETIME)
CURRENT_TIME, TIME - връща текущия час (без дата) като час (DM_TIME)
CURRENT_TIMESTAMP, NOW - връща текущата дата и час като дата и час (DM_DATETIME)
YESTERDAY - връща вчерашната дата с час 00:00:00.000 като дата и час (DM_DATETIME)
TOMORROW - връща утрешната дата с час 00:00:00.000 като дата и час (DM_DATETIME)
CURRENT_WEEK_START - връща първия ден от текущата седмица с час 00:00:00.000 като дата и час (DM_DATETIME)
CURRENT_WEEK_END - връща последния ден от текущата седмица с час 23:59:59:999 като дата и час (DM_DATETIME)
CURRENT_MONTH_START - връща първия ден от текущия месец с час 00:00:00.000 като дата и час (DM_DATETIME)
CURRENT_MONTH_END - връща последния ден от текущия месец с час 23:59:59:999 като дата и час (DM_DATETIME)
CURRENT_YEAR_START - връща първия ден от текущата година с час 00:00:00.000 като дата и час (DM_DATETIME)
CURRENT_YEAR_END - връща последния ден от текущата година с час 23:59:59:999 като дата и час (DM_DATETIME)
CURRENT_DAY_START - връща началото на текущата дата с час 00:00:00.000 като дата и час (DM_DATETIME)
CURRENT_DAY_END - връща края на текущата дата с час 23:59:59:999 като дата и час (DM_DATETIME)
LAST_WEEK_START - връща първия ден от предишната седмица с час 00:00:00.000 като дата и час (DM_DATETIME)
LAST_WEEK_END - връща последния ден от предишната седмица с час 23:59:59:999 като дата и час (DM_DATETIME)
LAST_MONTH_START - връща първия ден от предишния месец с час 00:00:00.000 като дата и час (DM_DATETIME)
LAST_MONTH_END - връща последния ден от предишния месец с час 23:59:59:999 като дата и час (DM_DATETIME)
LAST_YEAR_START - връща първия ден от предишната година с час 00:00:00.000 като дата и час (DM_DATETIME)
LAST_YEAR_END - връща последния ден от предишната година с час 23:59:59:999 като дата и час (DM_DATETIME)
NEXT_WEEK_START - връща първия ден от следващата седмица с час 00:00:00.000 като дата и час (DM_DATETIME)
NEXT_WEEK_END - връща последния ден от следващата седмица с час 23:59:59:999 като дата и час (DM_DATETIME)
NEXT_MONTH_START - връща първия ден от следващия месец с час 00:00:00.000 като дата и час (DM_DATETIME)
NEXT_MONTH_END - връща последния ден от следващия месец с час 23:59:59:999 като дата и час (DM_DATETIME)
NEXT_YEAR_START - връща първия ден от следващата година с час 00:00:00.000 като дата и час (DM_DATETIME)
NEXT_YEAR_END - връща последния ден от следващата година с час 23:59:59:999 като дата и час (DM_DATETIME)

Функции

ROUND - закръгля зададеното дробно число до цяло число (половинките се закръглят нагоре за положителните числа и надолу за отрицателните)
ROUND(4.5) = 5
ROUND(-4.5) = -5

ROUND1-10 - закръгля зададеното дробно число до посочения брой знаци след дес. точка
ROUND2(4.6666) = 4.67

ROUNDTOCONFIG - закръгля зададеното дробно число до броя знаци след дес. точка, посочен в конфигурацията (поле ROUND_DIGITS)
ROUNDTOCONFIG(4.6666) = 4.67, ако в конфигурацията е зададена точност от 2 знака след дес. точка

INC_CURRENT_DATE, INC_CURRENT_DAY - добавя към текущата дата и час зададения брой дни (цяло число) и връща резултата като дата и час (DM_DATETIME)
INC_CURRENT_DATE(3) = 21.11.2019 08:00:00, ако текущата дата и час е 18.11.2019 08:00:00

INC_CURRENT_WEEK - добавя към текущата дата и час зададения брой седмици (цяло число) и връща резултата като дата и час (DM_DATETIME)
INC_CURRENT_WEEK(2) = 02.12.2019 08:00:00, ако текущата дата и час е 18.11.2019 08:00:00

INC_CURRENT_MONTH - добавя към текущата дата и час зададения брой месеци (цяло число) и връща резултата като дата и час (DM_DATETIME). Деня от месеца се запазва, като ако резултатния месец съдържа по-малко дни, деня се установява на последния ден от резултатния месец.
INC_CURRENT_MONTH(1) = 18.12.2019 08:00:00, ако текущата дата и час е 18.11.2019 08:00:00
INC_CURRENT_MONTH(3) = 29.02.2020 08:00:00, ако текущата дата и час е 30.11.2019 08:00:00

INC_CURRENT_YEAR - добавя към текущата дата и час зададения брой години (цяло число) и връща резултата като дата и час (DM_DATETIME). Деня от месеца се запазва, като ако резултатния месец съдържа по-малко дни, деня се установява на последния ден от резултатния месец.
INC_CURRENT_YEAR(1) = 18.11.2020 08:00:00, ако текущата дата и час е 18.11.2019 08:00:00
INC_CURRENT_YEAR(1) = 28.02.2021 08:00:00, ако текущата дата и час е 29.02.2020 08:00:00

INC_CURRENT_HOUR - добавя към текущата дата и час зададения брой часове (цяло число) и връща резултата като дата и час (DM_DATETIME)
INC_CURRENT_HOUR(3) = 19.11.2019 01:00:00, ако текущия час е 18.11.2019 22:00:00

INC_CURRENT_MINUTE - добавя към текущата дата и час зададения брой минути (цяло число) и връща резултата като дата и час (DM_DATETIME)
INC_CURRENT_MINUTE(90) = 19.11.2019 00:30:00, ако текущия час е 18.11.2019 23:00:00

INC_CURRENT_SECOND - добавя към текущата дата и час зададения брой секунди(цяло число) и връща резултата като дата и час (DM_DATETIME)
INC_CURRENT_SECOND(5400) = 19.11.2019 00:30:00, ако текущия час е 18.11.2019 23:00:00

GET_CURRENT_DATE - добавя към текущата дата (без час) зададения брой дни (дробно число) и връща резултата като дата и час (DM_DATETIME)
GET_CURRENT_DATE(3.5) = 21.11.2019 12:00:00, ако текущата дата и час е 18.11.2019 03:00:00

INC_CURRENT_TIME, GET_CURRENT_TIME - добавя към текущия час (без дата) зададения брой часове (дробно число) и връща резултата като час (DM_TIME)
INC_CURRENT_TIME(3.5) = 11:50:00, ако текущия час е 08:20:00

INC_CURRENT_DATETIME, INC_CURRENT_TIMESTAMP, GET_CURRENT_TIMESTAMP - добавя към текущата дата и час зададения брой дни (дробно число) и връща резултата като дата и час (DM_DATETIME)
INC_CURRENT_DATETIME(3.5) = 21.11.2019 12:00:00, ако текущата и час е 18.11.2019 00:00:00

Допълнителни функции

1. IsFieldValueNull(AFieldIndex: Integer) - връща 1 ако е null или 0
2. IsNull - аналогична на IsFieldValueNull
3. ShowFieldName(AFieldIndex: Integer) - като грешка ще покаже кое е името на полетo зад индекс AFieldIndex

Ако някой иска да зачисти поле трябва да напише: 
FIELD_NAME__CLEAR - където FIELD_NAME е името на полето и завършва с "__CLEAR" 
Аналогично - "__SETNULL"
Aко тази променлива има стойност 1 ще се зачисти полето иначе няма да се случи нищо. 
Ако имаме променлива от вида COPYFROMFIELD__FIELD1__TOFIELD__FIELD2 и има стойност 1,
ще извърши копиране на стойността от поле с име FIELD1 в поле с име FIELD2. 

Примерни формули:

<DISCNT_PCT_WO_VAT>
{Ако поле DISCNT_PCT_WO_VAT = 0 - ще се зачисти (поставя се null) поле DISCNT_VALUE_WO_VAT}
DISCNT_VALUE_WITH_VAT := round3(DISCNT_VALUE_WITH_VAT)
if DISCNT_PCT_WO_VAT = 0 then
   DISCNT_VALUE_WO_VAT__CLEAR := 1
</DISCNT_PCT_WO_VAT>
<DISCNT_PCT_WITH_VAT>
if DISCNT_PCT_WITH_VAT = 0 then
   DISCNT_VALUE_WITH_VAT__SETNULL := 1
</DISCNT_PCT_WITH_VAT>
<QTY1>
{При надвишаване на количество 1 се копира ППT1 в ППT4 !}
if QTY1 > 10 then
  COPYFROMFIELD__USER_FIELD_STRING1__TOFIELD__USER_FIELD_STRING4 := 1
</QTY1>
<USER_FIELD_STRING2>
{Ако се промени ППT2 да покаже с грешка кое е 4-то поле в дейтасета}
 ShowFieldName(4)
</USER_FIELD_STRING2>
<USER_FIELD_STRING1>
{Ако 4-то поле DISCNT_PCT_WO_VAT е празно да се постави празна стойност}
X := IsNull(4)
if X = 1 then DISCNT_VALUE_WO_VAT__CLEAR := 1 else DISCNT_VALUE_WO_VAT := 0
</USER_FIELD_STRING1>

Настройки на ТД/таб Формули
Справки - Източници, изгледи и параметри