Калькулировать можно как переменные заголовка документа, так и переменные строк. При калькуляции любых переменных необходимо указать имя калькулируемой переменной (из предлагаемого разработчиками списка), что сделать с результатом калькуляции (= - занести новое значение, + - добавить значение к текущему содержимому переменной, -
- вычесть значение из текущего содержимого переменной) и выражение из предопределенных переменных, расширений и функций пользователя, которое будет занесено в калькулируемую переменную. Таким образом, для одной переменной может быть несколько строк калькуляции, которые выполняются в порядке нумерации. Кроме того, для каждой строки калькуляции может быть задано условие, которое для калькуляции переменных заголовка является условием выполнения строки калькуляции, а для калькуляции переменных строк задает, на какие строки распространяется это условие (на те, для которых условие выполняется).
Необходимо более подробно остановиться на калькуляции строковых переменных. Если не указывается, пропорционально чему разбрасывается значение, то над каждой строкой, удовлетворяющей условию, выполняется действие как над переменной заголовка. Если указывается, то для строк, удовлетворяющих условию, вычисляются весовые коэффициенты
(которые в сумме равны 1), и значение, записываемое в каждую строку, вычисляется как весовой коэффициент умножить на разбрасываемое значение.
Пример: Для накладной на приход импортного товара, существуют расширения заголовка NAKLR (накладные расходы), DISC (скидка) и расширения строк TAMP (таможенная пошлина). Расcмотрим примерную модель калькуляции учетной цены по строкам и суммы в заголовке документа.
N Переменная ? Выражение Условие Пропорционально чему
** Учетная цена состоит из:
1. цены поставщика в национальной валюте (=)
RUCENA = SVAL(HDat, HVal, R1CENA)
2. скидки (-), разбрасываемой пропорционально сумме
RUCENA - XHDISC RKOL*RUCena
3. накладных расходов (+), разбрасываемых пропорционально сумме
RUCENA + XHNAKLR RKOL*RUCena
** Сумма в заголовоке документа:
4. Cумма по строкам сумм в учетных ценах
HSUM = SUMR(RUCena*RKol)
ПРИМЕЧАНИЕ:
Для корректной работы рекомендуется при первой калькуляции переменной использовать не текущее значение этой же переменной, а значение до калькуляции. Простейший способ для этого - вначале калькуляции переменной присвоить значение до калькуляции
Пример:
Некорректно: RUCENA = RUCENA*XRNAC/100
Корректно: RUCENA = R1CENA RUCENA = RUCENA*XRNAC/100