Программа для склада, для магазина, для производства |
Vvs "Офис-Склад-Магазин"Редактирование форм документов и отчетов |
П.4. Функции.
В формулах можно использовать функции. Большинство функций обрабатывают числовые значения. Они имеют один параметр и возвращают число. Некоторые функции выполняют вычисления в базе данных. Имеются также функции для сравнения строк. Синтаксис вызова функций следующий: имя функции, затем в круглых скобках параметр функции.
Арифметические функции:
-
ABS - абсолютное значение
-
ACOS - арккосинус
-
ASIN - арксинус
-
ATAN - арктангенс
-
COS - косинус
-
COSH - гиперболический косинус
-
EXP - экспонента
-
LOG - логарифм
-
LOG10 - десятичный логарифм
-
POW10 - возвращает 10 в степени аргумента
-
ROUND -округляет до ближайшего целого
-
SIN - синус
-
SINH - гиперболический синус
-
SQR -квадрат
-
SQRT - квадратный корень
-
TAN - тангенс
-
TANH - гиперболический тангенс
-
TRUNC - возвращает целую часть числа
Логические функции:
-
ISPLS - выражение больше нуля
-
ISMNS - выражение меньше нуля
-
ISNUL - выражение равно нулю
Эти функции возвращают 1 если условие верно, иначе 0. Их удобно использовать в условных выражениях, которые будут описаны ниже.
Функции для работы с датами.
Дата имеет внутреннее числовое значение. С датами можно проводить арифметические операции.
-
TODAY(0) - возвращает текущую дату установленную в компьютере. В качестве аргумента в функцию передается смещение в днях относительно текущей даты.
-
DAY() - возвращает день месяца. Аргументом функции является значение даты.
-
MONTH() - возвращает месяц. Аргументом функции является значение даты.
-
YEAR() возвращает год. Аргументом функции является значение даты.
Специальные функции:
-
KOLSKL() - возвращает количество товара на одном из складов. Аргументом функции должен быть номер склада или 0 - тогда возвращается количество на всех складах.
-
PODKOL() - возвращает количество товара на одном из складов с учетом только подтвержденных накладных. Аргументом функции должен быть номер склада или 0 - тогда возвращается количество на всех складах.
-
BALANCE () - возвращает баланс клиента на произвольную дату. Аргументом функции должна быть дата для расчета. Эта функция работает медленно, так как при ее вызове происходит обсчет всех операций с клиентом. Функция возвращает сальдо клиента на начало дня, переданного в функцию. Сальдо НЕ ВКЛЮЧАЕТ операции за этот день.
-
CUSTOMER() - производит поиск в справочнике клиентов. В качестве параметра в нее передается внутренний номер клиента. Для заказа можно задать "Агента" - одну из записей из справочника клиентов. Для заказа внутренний номер клиента хранится в поле AP6, а номер агента - в ADD.
-
SBSCMP() - для товаров-комплектов возвращает сумму себестоимостей комплектующих. Аргументом функции может быть любое число, его значение не используется.Функция обрабатывает вложенные комплекты, т.е. подсчитывает себестоимость деталей у вложенных комплектов. Глубина вложенности может быть до 10.
Имеются функции, которые рассчитывают возможности производства для товаров - комплектов исходя из остатков сырья и комплектующих на складе. Поддерживается вложенность комплектов. Аргументом функций является номер склада для подсчета остатков. Если задан номер 0, то идет подсчет по всем складам.
При расчетах с учетом резервирования деталей, если задан номер склада, то считается, что все товары зарезервированы для одного склада и вычитаются из остатков на этом складе.
-
KOLCMP() - возвращает возможное количество производства по остаткам на складе.
-
KOLCMPR() - возвращает возможное количество производства по остаткам на складе с учетом резервирования деталей в заказах.
-
PODCMP() - возвращает возможное количество производства по остаткам на складе с учетом только подтвержденных накладных.
-
PODCMPR() - возвращает возможное количество производства по остаткам на складе с учетом только подтвержденных накладных и резервирования деталей в заказах.
Функции с учетом резервирования следует использовать, если детали из состава комплектов резервируются для продажи клиентам отдельно, без комплектов.
Функция для планирования закупок сырья:
-
RESINCMP(0) - для детали возвращает зарезервированное количество в виде комплектов, т.е. какое количество потребуется потратить сырья для производства зарезервированной конечной продукции. Аргумент функции значения не имеет. Скорость выполнения небольшая.
Например:
Баланс на сегодня: [BALANCE(TODAY(1))]
Запрос даты и вывод списка клиентов с балансом на указанную дату (отчет по клиентам):
@XD=TODAY(0)
@XD=?#Введите дату для баланса:
{
[BP2 ]|[BALANCE(XD+1)]
}
Пример использования функции CUSTOMER:
@
сохраняем номер клиента для заказа
@XOLD=AP6
@ переходим к данным агента
@XNEW=CUSTOMER(ADD)
.....
@ здесь выводим данные агента
.....
@ возвращаемся к данным клиента
@XNEW=CUSTOMER(XOLD)
Функции обработки строк.
В макроязыке имеются две функции для обработки строк: сравнения строк и поиска подстроки в строке. В отличие от остальных функций, они имеют два строковых аргумента, разделенных точкой с запятой. В качестве аргумента может быть просто строка или макро-выражение в квадратных скобках.
Формат функций следующий:
-
%cmp(x;y) - функция возвращает 1 если строки x и y одинаковы и 0, если нет.
-
%sub(x;y) - функция возвращает 1 если строка x содержит подстроку y, иначе 0.
Пример:
Функция используется в условии. Если в названии товара содержится слово "водка", то в документ попадает текст "Выписана водка!!!".
@ЕСЛИ[%sub([DTWR,-1];Водка)]Выписана водка!!!