- Журнал изменений в версиях системы Papyrus
- PAPYRUS (Демо)
- Papyrus: development
- Papyrus: возможности системы
- Papyrus: руководство пользователя
- Введение
- Печать информации
- Бизнес-показатели
- Установка
- Запуск и завершение работы
- Отчетность по расчетам с дебиторами и кредиторами
- Интерфейс пользователя
- Товарная отчетность
- Статистика продаж и прогнозирование спроса
- Интерфейс с сервисом IP-телефонии
- Универсальные концепции
- Географические объекты
- Импорт и экспорт данных
- Настройка и администрирование системы
- Персоналии
- Товары
- Язык описания формул
- Бухгалтерские справочники
- Язык описания данных DL600
- Глоссарий
- Операционные справочники
- Текущие параметры системы
- Документы
- Бухгалтерские документы
- Товарные документы
- Книги продаж и покупок
- Основные средства
- Рента
- Инвентаризация
- Производство
- Персональные карты
- Персональные операции
- Кадры
- Расчет заработной платы
- Управление проектами и задачами
- Отчетность
- Бухгалтерская отчетность
- Язык описания данных DL200
- Розничные продажи и торговое оборудование
- Управление мобильной торговлей
- Разделенные базы данных
- Интеграция со сторонними системами и сервисами
- Специальный процессинг данных
- Job-Server
- Защита и восстановление данных
- COM-интерфейсы
- Приложения
- Библиотека
- Все об обязательной маркировке 2021
- Все об онлайн-кассах
- Презентации
- Руководства
- Свидетельство о регистрации системы Papyrus
- Технологии и функции
Самый простейший пример формулы
5+8/2-4.5*2 Конечно, от такой формулы пользы не много, но она демонстрирует простоту и очевидность синтаксиса.
Чуть более сложный пример
5+8/2-pow(sqrt(9), 2) Здесь, в дополнение к арифметическим операциям, добавилось использование функций. Мы подробно рассмотрим ниже все функции. Касательно данного примере, скажем лишь, что здесь применяются популярные функции возведения в степень (pow) и извлечения квадратного корня (sqrt).
Общие операции, функции и символы
Операции
В формулах могут быть использованы следующие арифметические операции:- *
- Операция умножения.
- /
- Операция деления.
- %
- Операция остатка от целочисленного деления.
- +
- Операция сложения.
- -
- Операция вычитания.
- >
- Больше.
- >=
- Больше или равно.
- <
- Меньше.
- <=
- Меньше или равно.
- =
- Равно.
- !=
- Не равно.
Функции
- abs
- Принимает один аргумент. Возвращает модуль (абсолютное значение) аргумента.
abs(-10) равно 10. abs(31) равно 31.
- sqrt
- Принимает один аргумент. Возвращает квадратный корень аргумента.
sqrt(9) равно 3.
- pow
- Возводит число в степень. Принимает два аргумента: первый - число, которое необходимо возвести в степень, второй - значение степени. Если второй аргумент не задан, то функция возвращает просто первый аргумент (возведение в степень 1).
pow(5, 3) равно 125.
- sin
- Возвращает синус аргумента, заданного в радианах. Принимает один аргумент.
- cos
- Возвращает косинус аргумента, заданного в радианах. Принимает один аргумент.
- tan
- Возвращает тангенс аргумента, заданного в радианах. Принимает один аргумент.
- round
- Округляет первый аргумент до точности, заданной вторым аргументом. Округление осуществляется по бухгалтерскому правилу, то есть, 5 округляется вверх. Принимает два аргумента. У второго аргумента (точность) отбрасывается дробная часть. Отрицательная точность округляет значение до соответствующей позиции перед десятичной точкой. Если задан только один аргумент, то первый округляется до целого значения.
round(15.235, 2) равно 5.24. round(15.235) равно 5. round(15.235, -1) равно 20.
- roundup
- Округляет первый аргумент до точности, заданной вторым аргументом. Округление осуществляется до наибольшего значения. Аргументы этой функции аналогичны round.
- rounddown
- Округляет первый аргумент до точности, заданной вторым аргументом. Округление осуществляется до наименьшего значения. Аргументы этой функции аналогичны round.
- min
- Возвращает минимальное из списка аргументов значение. Принимает любое число аргументов. Если не задано ни одного аргумента, то возвращает 0.
min(-1, 2.3, 0, 5, -2.2) равно -2.2.
- minz
- Возвращает минимальное из списка аргументов значение, не принимая в расчет величины, равные нулю. Принимает любое число аргументов. Если не задано ни одного отличного от нуля аргумента, то возвращает 0.
minz(2.3, 0, 5) равно 2.3.
- max
- Возвращает максимальное из списка аргументов значение. Принимает любое число аргументов. Если не задано ни одного аргумента, то возвращает отрицательное максимально возможное число с плавающей точкой двойной точности (-1.7976931348623158e+308).
max(-1, 2.3, 0, 5, -2.2) равно 5.
- ?
- Функция возвращает второй или третий аргумент в зависимости от результата вычисления первого аргумента.
?(5 > 3, 10, 20) равно 10. ?(5 < 3, 10, 20) равно 20.
- sieve
- Функция (по русски означает “решето”) возвращает величину, зависящую от того, в какой диапазон попадает аргумент. Формат функции несколько необычен: sieve[определитель-решета](аргумент) определитель-решета выглядит так: значение-по-умолчанию; список-диапазонов список-диапазонов представлен произвольным количеством конструкций следующего вида: нижняя-граница-диапазона ? значение
Теперь пример
sieve[1; 5 ? 1.1; 15 ? 1.2; 30 ? 1.3](21) равно 1.2 В этом примере решето представлено следующими компонентами:
определитель-решета
- 1; 5 ? 1.1; 15 ? 1.2; 30 ? 1.3
значение-по-умолчанию
- 1
список-диапазонов
- 5 ? 1.1; 15 ? 1.2; 30 ? 1.3
- диапазоны
- 5 ? 1.1 величинам больше или равным 5 соответствует значение 1.1. Сверху этот диапазон ограничен следующим диапазоном. 15 ? 1.2 величинам больше или равным 15 соответствует значение 1.2. Сверху этот диапазон ограничен следующим диапазоном. 30 ? 1.3 величинам больше или равным 30 соответствует значение 1.3 Сверху этот диапазон не ограничен, так как является последним.
- oid
- Функция возвращает полный идентификатор объекта данных. Под полным идентификатором подразумевается то, что возвращаемое значение содержит и тип объекта и его идентификатор. Функция используется в специальных случаях. Параметры:
oid(UNIT, meter) возвращает идентификатор единицы измерения с символом “meter”. oid(QUOTKIND, 1) возвращает идентификатор вида котировки 1 (если вид котировки с таким идентификатором существует). Пример получения идентификатора динамического объекта. Допустим у нас есть динамический объект “Виды алкогольной продукции” и символом этого типа является ALCTYPE. Тогда для получения идентификатора, скажем, вида “Водка” (предположим, эта запись имеет символ VOD) необходимо вызвать функцию в следующем виде oid(ALCTYPE, VOD).
Контексты исполнения
Важным аспектом применения формул является, так называемый, контекст исполнения. Собственно, именно контекст исполнения делает формулы полезным инструментом, поскольку позволяет оперировать атрибутами документов, товаров и иных сущностей, применяемых системой.Так формулы могут использоваться для расчета сумм бухгалтерских проводок по документам. В этом случае система рассматривает формулы в контексте документа.Вот список контекстов:- Контекст документа
- Используется при расчете сумм документов и формирования бухгалтерских проводок по документам.
- Контекст товара
- Используется при вычислении различных параметров товаров, особенно это относится к классифицированным товарам.
- Контекст расчета зарплаты
- Как следует из названия, используется при расчетах заработной платы.
- Контекст формул DL200
- Применяется в языке описания данных DL200.
- Контекст импорта/экспорта
- Используется при импорте/экспорте.
Контекст документа
Символы
Далее приведены правила распознавания символов документа программой. Правила перечислены в том порядке, в котором система их пытается идентифицировать. Этот порядок важен потому, что определяет результат работы разборщика формулы в случае совпадения символов, имеющих разный смысл.- QTTY
- Суммарное количество торговых единиц товаров в документе.
- PHQTTY
- Суммарное количество физических единиц товаров в документе.
- Символы типов сумм документов
- Если распознается символ типа суммы документа, то результатом подстановки будет являться значение суммы этого типа в документе, связанном с контекстом.
PRICE-DISCOUNT Вычисляет чистую цену продажи по документу (обычно, символом PRICE обозначается сумма документа в учетных ценах реализации, а PRICE - сумма скидки по документу).
- Символы формул
- Извлекается формула, соответствующая символу и вычисляется как подвыражение текущей формулы.
- ALAMT
- Сумма по строке многострочного бухгалтерского документа (например, авансового отчета).
Префиксы символов
Для символов типов сумм документов а также для QTTY и PHQTTY могут применяться специальные префиксы, позволяющие ссылаться на документы, с которым связан документ контекста.Префикс отделяется от символа точкой. Например: LINK.COST здесь LINK - префикс, COST - символ.Допустимы следующие префиксы:- LINK
- Извлекает заданный символ из связанного документа. Связанные документы обычно есть у документов оплаты и привязанного возврата. Так выражение LINK.COST * AMOUNT / LINK.AMOUNT вычислит пропорциональную сумму оплаты в учетных ценах поступления для документа оплаты, привязанной к документу отгрузки.
- RCKN
- Извлекает заданный символ из зачитываемого документа. Зачитываемый документ обычно есть у документов зачетных документов оплаты.
Функции
В контексте документа могут быть использованы следующие специальные функции:- amountbyvat
- Сумма документа по строкам, товары которых облагаются указанной аргументом ставкой НДС.
- amountbygvat
- Сумма документа по строкам, товары которых облагаются указанной первым аргументом ставкой НДС. Отличается от amountbyvat тем, что суммируются строки, по которым не эффективная, но номинальная (то есть, заданная для товара) ставка НДС равна указанной. Другими словами, эта функция игнорирует признаки освобождения поставщика или главной организации от НДС.
- amountbytvat
- Сумма документа по строкам, товары которых принадлежат типу oid(GOODSTYPE, id), заданному первым параметром и облагаются ставкой НДС, заданной вторым параметром. То есть, результат аналогичен amountbyvat с той разницей, что суммирование ограничивается товарами с заданным типом.
amountbytvat(oid(GOODSTYPE, Tare), 18) Вычисляет сумму документа по строкам, товары которых имеют тип с символом Tare и облагаемых 18-процентным НДС.
- costbyvat
- Сумма документа в ценах поступления по строкам, товары которых облагаются указанной аргументом ставкой НДС.
- costvat
- Сумма НДС в ценах поступления по строкам документа, товары которых облагаются указанной аргументом ставкой НДС.
- pricebyvat
- Сумма документа в ценах реализации по строкам, товары которых облагаются указанной аргументом ставкой НДС.
- pricevat
- Сумма НДС в ценах реализации по строкам документа, товары которых облагаются указанной аргументом ставкой НДС.
- haswhitelabel
- Функция не имеет аргументов. То есть, она должна вызываться так: haswhitelabel(). Возвращает 1.0 если у документа установлен признак WhiteLabel и 0.0 в противном случае.
Контекст товара
Этот контекст используется во множестве различных ситуаций, в связи с чем может иметь несколько форм. А именно:Функции
- vat
- Сумма НДС, которое облагается величина, переданная функции в качестве аргумента. По умолчанию предполагается, что значение первого аргумента не содержит в себе сумму НДС, которую необходимо вычленить. Если же в функции задан второй аргумент и его значение не равно нулю, тогда функция считает, что значение первого аргумента содержит в себе сумму НДС.
- vatplus
- Прибавляет сумму НДС, которое облагается величина, переданная функции в качестве аргумента. Предполагается, что величина, переданная в качестве аргумента, не содержит сумму НДС.
- vatminus
- Вычитает сумму НДС из величины, переданной в качестве аргумента. Предполагается, что эта величина, содержит сумму НДС.
- getquot
- Возвращает значение котировки товара. В качестве параметров функции могут быть переданы идентификаторы объектов (oid), определяющих значение котировки. Как минимум, в функцию должен быть передан идентификатор вида котировки, кроме того, опционально, могут быть переданы идентификаторы валюты, аналитической статьи (с которой связана котировка) и склада.
getquot(oid(QUOTKIND, Q01), oid(LOCATION))
- getquotcp
- Возвращает значение котировки товара, возможно, относительно заданных параметров цены поступления и цены реализации (для относительных котировок).
getquotcp(oid(QUOTKIND, Q01), oid(LOCATION), quot.sdeal, quot.sdeal)
Префиксы символов
Префикс уточняет товар, к которому относится символ, следующий за префиксом после точки. Пример: MAIN.X - классификатор X основного товара структуры.- MAIN
- Основной товар структуры. Применяется в случае, если контекст работает с товарной структурой (например, при автоматическом расчете формул в компонентах структур).
- MAINCOM
- Товар главного компонента структуры. По этому префиксу может быть идентифицирован товар только в том случае, если контекст ссылается на структуру и эта структура имеет один компонент с признаком ✓Основной компонент.
- PREV
- Специализированный префикс, применяемый для расчетов по технологическим сессиям перенастройки процессоров. Вместо этого префикса подставляется товар, который производился процессором до сессии перенастройки.
- QUOT
- Этот префикс позволяет получить значение котировки по основному товару контекста. Вслед за этим префиксом должен следовать символ вида котировки. Например: QUOT.BASE возвращает значение базовой (BASE) котировки для основного товара контекста. Если контекст содержит товарный документ, то будет возвращено значение котировки, связанное со складом, валютой и контрагентом документа.
- LOTTAG
- При использовании контекста с товарным документом, этот префикс возвращает значение тега лота, с символом, заданным после точки. Например: LOTTAG.SPCCOST возвращает значение некоторой специализированной цены (SPCCOST), связанной с лотом текущей строки товарного документа.
- TAG
- Префикс возвращает значение тега товара. Символ типа тега определяется строкой, следующей после точки. Например: TAG.MAXPRICE возвращает значение тега товара с символом MAXPRICE.
Префикс введен в релизе 7.5.1.
Символы
- ID
- Возвращает значение идентификатора товара.
Символ введен в релизе 7.5.1.
- X
- Возвращает значение классификатора X товара.
- Y
- Возвращает значение классификатора Y товара.
- Z
- Возвращает значение классификатора Z товара.
- W
- Возвращает значение классификатора W товара.
- KIND
- Возвращает идентификатор перечисляемого объекта Вид товара. Идентификатор возвращается в форме, аналогичной той, что возвращается функцией oid() и может применяться только для сравнения посредством операторов = или !=. Например: KIND==oid(ALCTYPE, VOD)
- GRADE
- Тоже, что и KIND, только для классификатора Сорт.
- ADDPROP
- Тоже, что и KIND, только для классификатора Классификатор.
- ADDPROP2
- Тоже, что и KIND, только для классификатора Классификатор 2.
- TYPE
- Возвращает идентификатор типа товара. Идентификатор возвращается в форме, аналогичной той, что возвращается функцией oid() и может применяться только для сравнения посредством операторов = или !=. Например: TYPE==oid(GOODSTYPE, ASSETS)
- PHUPERU
- Возвращает соотношение физических единиц товара к торговым.
- QTTY
- При использовании контекста с товарным документом возвращает количество в текущей товарной строке документа. Если контекст связан с технологической сессией, то этот символ заменяется на значение количества товара в строках сессии.
- QTY
- Тоже, что и QTTY.
- PHQTTY
- Тоже, что и QTTY только в пересчете на физические единицы измерения.
- PHQTY
- Тоже, что и PHQTTY.
- QTTYCOM
- Применяется для контекста, связанного с товарной структурой. Возвращает количества компонента структуры.
- COST
- При использовании контекста с товарным документом возвращает цену поступления текущей строки документа.
- PRICE
- При использовании контекста с товарным документом возвращает цену реализации текущей строки документа.
- DISCOUNT
- При использовании контекста с товарным документом возвращает скидку текущей строки документа.
- A1
- При ручном расчете значения по формуле этот символ заменяется на первый параметр, введенный пользователем.
- A2
- При ручном расчете значения по формуле этот символ заменяется на второй параметр, введенный пользователем.
- A3
- При ручном расчете значения по формуле этот символ заменяется на третий параметр, введенный пользователем.
- PI
- Константа .