Программа для склада, для магазина, для производства |
Vvs "Офис-Склад-Магазин"Редактирование форм документов и отчетов |
П.8.Условия и использование логических выражений И, ИЛИ, НЕ.
Имеется два формата задания условия: условие на одну строку и условие на группу строк. В первом случае в начале строки ставится условное выражение. Формат может быть трех видов:
-
@[выражение]...дальше идет строка для вывода или вычисления переменной
-
@ЕСЛИ[выражение]...дальше идет строка для вывода или вычисления переменной
-
@IF[выражение]...дальше идет строка для вывода или вычисления переменной
Если значение выражения в квадратных скобках равно нулю или пустой строке, то часть строки, стоящая за условием обрабатываться не будет. В качестве выражения может быть формула или поле базы данных.
Например:
1) Если имеется оплата заказа, выдается сумма оплаты
@ЕСЛИ[AP26 ]Заказ оплачен на [AP26 ]
2) Если сумма оплаты заказа меньше суммы заказа печатает сообщение
@IF[ISMNS(AP26-AP25)]Заказ не оплачен !!!
Для того, чтобы распространить условие на группу строк, используются операторы #if и #endif.
#if условие
...
#endif
Ключевые слова #if и #endif должны стоять в начале строки. В качестве условия после оператора #if через пробел может идти любая строка, содержащая выражения в квадратных скобках. Условие будет выполнено, если результатом вычисления условия будет строка, содержащая символы, отличные от "0" и ".". Условие распространяется на все строки, между операторами #if и #endif. Допускаются вложенные условия.
Во фрагменте ниже проверяется остатки товара на складе с помощью функции KOLSKL(0). Эта функция возвращает текущие остатки товара на складах.
#if [KOLSKL(0)]
Товар [DTWR,-1]
есть на складе
#endif
#if [ISNUL(KOLSKL(0))]
Товара [DTWR,-1]
нет на складе
#endif
В программе в качестве логических значений используются числовые значения. Число 0 соответствует значению "ложь", число не равное 0 - "истина". В условиях удобно использовать функции ISNUL, ISPLS, ISMNS. Функция ISNUL возвращает 1, если ее аргументом является нулевое значение и 1, если не нулевое. Таким образом, действие этой функции соответствует логическому оператору "НЕ". В качестве логического "И" можно использовать умножение, для логического "ИЛИ" - сложение.
Например, логическое "И":
#if [KOLSKL(1)* KOLSKL(2)]
Товар [DTWR,-1] есть на 1-ом И на 2-ом складе
#endif
Логическое "ИЛИ". Используется функция ABS - абсолютное значение, которая исключает отрицательные значения.
#if [ABS(KOLSKL(1))+ ABS(KOLSKL(2))]
Товар [DTWR,-1] есть на 1-ом ИЛИ на 2-ом складе
#endif