Перейти до основного вмісту

Формули в шаблонах

Формула рахує значення під час друку і ставить результат на своє місце в документі. Вона потрібна, коли готової змінної для потрібного числа немає: аванс у відсотках від суми, вага партії, ціна за одиницю з урахуванням знижки.

Як вставити формулу​

  1. Поставте курсор у потрібне місце тексту або клітинки.
  2. У лівій панелі редактора відкрийте розділ Маркери і натисніть Формула. У текст вставиться SKYNUM_FORMULA{ }.
  3. Усередині дужок запишіть вираз. Змінні вставляйте з панелі, як і в звичайному тексті.
  4. Збережіть шаблон і надрукуйте форму з реального документа.

Приклад: аванс 50% від суми документа.

Аванс: SKYNUM_FORMULA{$DOC_AMOUNT * 0.5} грн

У рядку товарів формула рахується для кожного товару окремо:

SKYNUM_FORMULA{$DOC_ITEM_PRICE * (1 - $DOC_ITEM_DISCOUNT / 100)}

Що можна писати у виразі​

Арифметика: +, -, *, / і дужки. Відсоток записують діленням на 100: $DOC_AMOUNT * 15 / 100.

Числа пишуть із крапкою: 0.5, 1.2. Текст — у лапках: "Відвантажено".

Суми, кількості, відсотки й ваги у виразі є числами. Змінні «Так» / «Ні» є логічними значеннями. Дати є датами, про них — окремий розділ нижче.

Округлення​

Скільки знаків після коми буде в надрукованому результаті, визначає налаштування Знаків після коми в блоці Сторінка та формат. Докладніше: Сторінка, колонтитули і формат PDF.

Якщо в конкретному місці знаків має бути менше, округліть у самій формулі:

  • ROUND(x, 2) — до двох знаків, ROUND(x, 0) — до цілого;
  • ROUNDUP(x, 0) — завжди вгору;
  • ROUNDDOWN(x, 0) — завжди вниз.
SKYNUM_FORMULA{ROUND($DOC_AMOUNT * 0.5, 0)}       аванс цілим числом
SKYNUM_FORMULA{ROUNDUP($DOC_ITEM_QUANTITY / 12, 0)} кількість ящиків по 12 штук

Правила округлення з параметрів системи стосуються сум у самих документах. На результат формули діє лише округлення, записане у формулі.

Дати​

Дати у виразі є датами, а не текстом. Їх можна порівнювати між собою, додавати до них дні й віднімати одну від одної. Різниця двох дат — ціле число днів.

SKYNUM_FORMULA{$TODAY - $DOC_DATE}        днів від дати документа
SKYNUM_FORMULA{$DOC_DATE + 14} дата через два тижні
SKYNUM_FORMULA{$AGREEMENT_DATE_END - $TODAY} днів до кінця договору

Сьогоднішня дата ($TODAY) — день, коли документ друкують; вона є в розділі Маркери.

Конкретний день записують через DATE у звичному форматі:

SKYNUM_FORMULA{IF($DOC_DATE < DATE("01.01.2027"), "за старою ціною", "за новою ціною")}

Дата як результат друкується у вигляді дд.мм.рррр. У змінних, де є час (наприклад, дата створення), у розрахунок іде лише день.

Якщо дата може бути не заповнена, наприклад дата завершення договору, спершу перевірте != "" через AND або IF:

SKYNUM_FORMULA{IF($AGREEMENT_DATE_END != "", $AGREEMENT_DATE_END - $TODAY, "")}

Функції​

Вибір і порівняння:

  • IF(умова, якщо так, якщо ні) — наприклад IF($DOC_AMOUNT_VAT > 0, "з ПДВ", "без ПДВ");
  • AND, OR, NOT — для складених умов;
  • MIN(a, b), MAX(a, b), ABS(x).

Текст:

  • CONTAINS("Київ", $DELIVERY_RECIPIENT_ADDRESS) — чи є перший текст у другому; великі й малі літери різняться;
  • LEN(текст) — довжина;
  • LEFT(текст, 3), RIGHT(текст, 3), MID(текст, 2, 3) — частина тексту;
  • CONCAT(текст1, текст2) — склеювання;
  • SUBSTITUTE(текст, "що", "на що") — заміна.

Сума прописом:

  • WORDS(сума, код валюти) — текст як у змінній Сума прописом, але для будь-якого результату. Код валюти беріть зі змінної документа:
Аванс: SKYNUM_FORMULA{$DOC_AMOUNT * 0.5} грн
(SKYNUM_FORMULA{WORDS($DOC_AMOUNT * 0.5, $DOC_CURRENCY_CODE)})

Як виглядає результат​

  • Ціле число друкується цілим, дробове — з кількістю знаків із налаштування Знаків після коми (див. Округлення). Розділювачі тисяч і десяткова кома беруться з налаштування Формат чисел шаблону.
  • Дата друкується як дд.мм.рррр.
  • Логічний результат друкується як «Так» або «Ні».
  • Текст друкується як є.

Якщо формулу не вдалося обчислити​

Замість результату в документі з'являється червоне повідомлення з текстом формули. Так буває, коли у виразі є помилка в назві функції, ділення на нуль, порівняння тексту з числом або змінна, яку шаблон не знає.

Формули працюють у шаблонах формату Друк.

Коли формула не потрібна​

Для суми документа, суми ПДВ, суми прописом, кількості, ціни і суми рядка є готові змінні — використовуйте їх. Формула для такого значення лише ускладнює шаблон.

Якщо компанія веде ПДВ у Skynum, у документах спирайтеся на стандартні поля ПДВ. Формула показує розрахункове значення в друці, але не замінює облік ПДВ. Докладніше: Облік ПДВ.

Перевірка​

Надрукуйте форму з кількох документів: з одним рядком і з кількома, зі знижкою і без, з нулями в полях, які беруть участь у формулі. Порівняйте результат у PDF із ручним розрахунком.

Важливо

Помилка у формулі потрапить у документ, який отримає клієнт. Для рахунків, актів і договорів перевіряйте формулу на реальних документах перед тим, як передати шаблон у роботу.

Підсумок​

Формула — це SKYNUM_FORMULA{вираз} зі змінними, арифметикою і функціями. Результат друкується у форматі чисел шаблону, дата — як дд.мм.рррр, сума прописом — через WORDS. Якщо вираз не рахується, у документі з'являється червоне повідомлення, яке видно одразу при перевірці друку.