Тук са показани разликите между избраната и текущата версия на страницата.
Следваща версия | Предходна версия | ||
obsti_komponenti:konstanti_i_funkcii_za_formuli [2019/11/20 12:53] – създадена t.lalova | obsti_komponenti:konstanti_i_funkcii_za_formuli [2021/02/19 09:25] (текуща) – [Допълнителни функции] t.lalova | ||
---|---|---|---|
Ред 1: | Ред 1: | ||
====== Константи и функции за формули и параметри за дата и час ====== | ====== Константи и функции за формули и параметри за дата и час ====== | ||
+ | ===== Константи ===== | ||
+ | |||
+ | **CURRENT_DATE, | ||
+ | **CURRENT_TIME, | ||
+ | **CURRENT_TIMESTAMP, | ||
+ | **YESTERDAY** - връща вчерашната дата с час 00: | ||
+ | **TOMORROW** - връща утрешната дата с час 00: | ||
+ | **CURRENT_WEEK_START** - връща първия ден от текущата седмица с час 00: | ||
+ | **CURRENT_WEEK_END** - връща последния ден от текущата седмица с час 23: | ||
+ | **CURRENT_MONTH_START** - връща първия ден от текущия месец с час 00: | ||
+ | **CURRENT_MONTH_END** - връща последния ден от текущия месец с час 23: | ||
+ | **CURRENT_YEAR_START** - връща първия ден от текущата година с час 00: | ||
+ | **CURRENT_YEAR_END** - връща последния ден от текущата година с час 23: | ||
+ | **CURRENT_DAY_START** - връща началото на текущата дата с час 00: | ||
+ | **CURRENT_DAY_END** - връща края на текущата дата с час 23: | ||
+ | **LAST_WEEK_START** - връща първия ден от предишната седмица с час 00: | ||
+ | **LAST_WEEK_END** - връща последния ден от предишната седмица с час 23: | ||
+ | **LAST_MONTH_START** - връща първия ден от предишния месец с час 00: | ||
+ | **LAST_MONTH_END** - връща последния ден от предишния месец с час 23: | ||
+ | **LAST_YEAR_START** - връща първия ден от предишната година с час 00: | ||
+ | **LAST_YEAR_END** - връща последния ден от предишната година с час 23: | ||
+ | **NEXT_WEEK_START** - връща първия ден от следващата седмица с час 00: | ||
+ | **NEXT_WEEK_END** - връща последния ден от следващата седмица с час 23: | ||
+ | **NEXT_MONTH_START** - връща първия ден от следващия месец с час 00: | ||
+ | **NEXT_MONTH_END** - връща последния ден от следващия месец с час 23: | ||
+ | **NEXT_YEAR_START** - връща първия ден от следващата година с час 00: | ||
+ | **NEXT_YEAR_END** - връща последния ден от следващата година с час 23: | ||
+ | |||
+ | ==== Функции ==== | ||
+ | |||
+ | **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_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, | ||
+ | INC_CURRENT_TIME(3.5) = 11:50:00, ако текущия час е 08:20:00 | ||
+ | |||
+ | **INC_CURRENT_DATETIME, | ||
+ | INC_CURRENT_DATETIME(3.5) = 21.11.2019 12:00:00, ако текущата и час е 18.11.2019 00:00:00 | ||
+ | |||
+ | ==== Допълнителни функции ==== | ||
+ | |||
+ | 1. IsFieldValueNull(AFieldIndex: | ||
+ | 2. IsNull - аналогична на IsFieldValueNull \\ | ||
+ | 3. ShowFieldName(AFieldIndex: | ||
+ | |||
+ | < | ||
+ | FIELD_NAME__CLEAR - където FIELD_NAME е името на полето и завършва с " | ||
+ | |||
+ | < | ||
+ | Aко тази променлива има стойност 1 ще се зачисти полето иначе няма да се случи нищо. </ | ||
+ | |||
+ | < | ||
+ | ще извърши копиране на стойността от поле с име FIELD1 в поле с име FIELD2. </ | ||
+ | |||
+ | |||
+ | Примерни формули: | ||
+ | < | ||
+ | < | ||
+ | {Ако поле 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 | ||
+ | | ||
+ | </ | ||
+ | < | ||
+ | if DISCNT_PCT_WITH_VAT = 0 then | ||
+ | | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | < | ||
+ | < | ||
+ | {При надвишаване на количество 1 се копира ППT1 в ППT4 !} | ||
+ | if QTY1 > 10 then | ||
+ | COPYFROMFIELD__USER_FIELD_STRING1__TOFIELD__USER_FIELD_STRING4 := 1 | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | < | ||
+ | < | ||
+ | {Ако се промени ППT2 да покаже с грешка кое е 4-то поле в дейтасета} | ||
+ | | ||
+ | </ | ||
+ | < | ||
+ | {Ако 4-то поле DISCNT_PCT_WO_VAT е празно да се постави празна стойност} | ||
+ | X := IsNull(4) | ||
+ | if X = 1 then DISCNT_VALUE_WO_VAT__CLEAR := 1 else DISCNT_VALUE_WO_VAT := 0 | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | |||
+ | |||
+ | [[documenti: | ||
+ | [[spravki_new: |