Навигация:  Быстрый старт > Фундаментальные объекты > Формулы >

Редактор формул (новый механизм)

ПредыдущаяВернуться к началу главыСледующая

Данный редактор формул удобен и прост в использовании, не требует сложных настроек и глубоких познаний. Его преимуществом является то, что он представляет формулы в удобном для пользователя виде, а обрабатывает их в обратной форме, что резко повышает скорость и эффективность расчета. В редакторе можно с помощью элементарных математических действий, функций и ссылок на уже существующие реквизиты задать формулу расчета любых финансово-экономических коэффициентов.

Рассмотрим редактор формул для реквизита Сумма без НДС вида проформы Начисление расходов. Для этого откроем справочник Виды проформ (Меню: Моделирование>> Финансы>> Виды проформ) и требуемый вид проформы для редактирования.

 

Форма Вид проформы: Начисление расходов. Закладка Реквизиты

Форма Вид проформы: Начисление расходов. Закладка Реквизиты

 

На вкладке Реквизиты, дважды щелкнув по реквизиту Сумма без НДС, откроем форму данного реквизита.

 

Форма Реквизит Виды проформ: Начисление расходов: Сумма без НДС

Форма Реквизит Виды проформ: Начисление расходов: Сумма без НДС

 

На вкладке Настройки отображается формула для реквизита. Для того чтобы открыть редактор формул, необходимо нажать кнопку с пиктограммой Функция ( ).

 

Окно Формулы

Окно Формулы

 

Окно редактора состоит из двух основных областей:

области настройки формулы;
области отображения формулы.

 

Область настройки формулы - предназначена непосредственно для ввода и редактирования формулы, по которой будет вычисляться реквизит.

Настройка формулы основана на принципе постепенного ввода каждого компонента формулы в специальную колонку, которая выделяется для него динамически при нажатии стрелки управления курсором вправо либо щелчке левой кнопкой мыши рядом с последним введенным элементом.

Каждый элемент формулы называется квантом.
Далее с помощью нажатия клавиши <Enter> либо двойного щелчка левой кнопкой мыши на выделенной колонке в правой ее части появляется панель , дающая возможность пользователю выбрать вид кванта и непосредственно установить значение элемента.

При нажатии кнопки с пиктограммой появится выпадающий список для быстрого выбора значения элемента формулы. Значения в этом списке разбиты на определенные блоки пунктирными линиями. Так, в самом верхнем блоке предлагается выбрать тип Строка для ввода строковых данных.

 

Стоит заметить, что все объекты, введенные в формулу вручную, на момент ввода воспринимаются редактором формул как строка, а затем после ввода величины производится ее анализ, и, если возможно, приведение к определенному типу данных (числовому, логическому и т.д.).

 

Следующий блок в выпадающем списке быстрого выбора – это примитивные типы данных (Число, Булево, Дата) для ввода фиксированных значений в формулу. Третий блок значений содержит реквизиты шапки и табличной части документа (аналог содержимого ветки Параметры дерева квантов). Четвертый (и последний) блок в списке быстрого выбора содержит логические и математические функции (возведение в степень, логические операторы И, ИЛИ, НЕ, функции Минимум, Максимум, Среднее, Показатель, оператор условия Если и т. д.), а также знаки математических операций.

 

Окно Формулы,  выбор значения элемента формулы

Окно Формулы, выбор значения элемента формулы

 

При нажатии кнопки с пиктограммой будет открыто дерево квантов, предоставляющее еще более широкие возможности выбора.

 

Форма Кванты формулы

Форма Кванты формулы


Кнопка с пиктограммой дает возможность очистить введенное ранее значение.
Кроме возможностей быстрого выбора и выбора из дерева квантов пользователь также может вводить элементы формулы вручную с клавиатуры. В данном случае работают механизмы автоподбора и автоподстановки. Например, если ввести несколько символов и приостановиться на несколько секунд (либо сразу нажать на клавишу <Enter>), то система произведет поиск по всем возможным значениям параметров и операций, и далее возможны следующие варианты:
1.Введенные символы совпадают с первыми символами одного и только одного реквизита (параметра либо операции) – тогда полное имя найденного реквизита автоматически подставляется на место введенных пользователем первых символов.
2.Введенные символы совпадают с первыми символами названий сразу нескольких реквизитов – в данном случае возможны варианты: если нажать клавишу <Enter>, то введенные пользователем символы будут просто зафиксированы как строка символов и останутся в формуле в таком виде; если же нажать стрелку управления курсором Вниз на клавиатуре или кнопку быстрого выбора в редакторе формул, то появится выпадающий список быстрого выбора значений для выбора нужного элемента.

 

Окно Формулы. Выбор значения элемента формулы с помощью механизма автоподбора

Окно Формулы. Выбор значения элемента формулы с помощью механизма автоподбора

 

Во время поиска не учитывается регистр введенных символов.

 

Если в структуре формулы между какими-либо ее объектами не установлено действие либо задана какая-либо функция или оператор, но не заданы объекты действия (то есть, параметры функции), то в окне сообщений в нижней части экрана отобразится соответствующее служебное сообщение.

 

Окно Формулы, отображение служебного сообщения

Окно Формулы, отображение служебного сообщения

 

В структуре формулы можно использовать функции, скобки, операторы больше, меньше, равно и не равно. Операторы задаются, соответственно, при помощи символов >, <, =, <> либо с помощью выбора из списка или дерева квантов.

Внутри одной функции можно использовать другие функции. Например: Если (А>0;Макс(В;С);Мин(В;С)) .

Внутри формулы возможно редактировать кванты вида Параметры и Значения. Кванты же вида Операции (знаки арифметических действий и математические функции) редактировать внутри формулы нельзя.

Удалить элемент формулы можно с помощью клавиши <Delete>. При этом нужно иметь в виду, что при удалении скобки в функции удаляется и вся функция со всеми параметрами. В случае удаления точки, будет удалено все, что находится справа от нее в рамках данного элемента.

Вставить элемент перед существующим элементом можно с помощью клавиши <Insert>.

 

Область отображения формулы - предназначена для отображения всей формулы целиком в удобном для пользователя виде. Это особенно удобно при настройке длинных формул с большим количеством составляющих.

Очистить - очищает структуру формулы.

 

Окно Формулы

Окно Формулы


Дерево квантов
Каждый элемент формулы называется квантом формулы. В дереве квантов содержатся все возможные аргументы для формулы (кванты).  Фактический состав дерева зависит от объекта, к которому относится формула. Пользователю достаточно просто выбрать из дерева необходимый элемент, и он добавится в формулу.

 

Форма Кванты формулы

Форма Кванты формулы

 

Кванты разделены на три основных вида:

Параметры - кванты типа: СправочникСсылка.Инт_РеквизитыОбъектовФормирования или ПВХ.Инт_ФормулыОперации; данная ветка дерева квантов содержит реквизиты шапки и табличной части документа.

- С помощью данной пиктограммы отображаются реквизиты документа, которые имеются в нем по умолчанию и не настраиваются пользователем.
- С таким значком отображаются настраиваемые реквизиты шапки и табличной части, то есть те реквизиты, которые были добавлены пользователем.
- С данной пиктограммой отображаются настройки показателей управленческой отчетности. Важно иметь в виду, что если в настройке фильтра показателя используется реквизит табличной части документа, то показатель является фактически реквизитом табличной части.
T - С помощью данной пиктограммы в ветке Параметры отображаются типы.

Значения - кванты типа: Булево, Число, Строка, Дата, любая ссылка (т.е. любое фиксированное значение).

Операции - кванты вида: ( ) . , + - / * ^ = < > <= >= <> И ИЛИ НЕ Если (т.е. все возможные арифметические операции и математические функции).

Рассмотрим подробно каждую операцию, находящуюся в ветке Операции редактора формул:

1.^ - Возведение числа в степень - возводит значение первого операнда (левой части) в степень, равную значению второго операнда (правой части).

Синтаксис операции: Число ^ Число. Тип результата выполнения операции: Число.

2.- - Минус - арифметическое вычитание, вычитание из даты секунд, разность дат. Варианты синтаксиса:

Число - Число - вычисляется разность двух чисел. Тип результата выполнения: Число.

Дата - Число - дата уменьшается на необходимое число секунд. Тип результата выполнения операции: Дата.

Дата - Дата - вычисляется разность дат в секундах. Тип результата выполнения операции: Число.

 

Арифметическое вычитание может использоваться без указания первого операнда. В этом случае подразумевается, что он равен нулю.

 

3.; - Точка с запятой - разделение параметров операций внутри скобок.

 

4. : - Двоеточие - деление, допускающее деление на ноль (в этом случае результатом вычисления будет число 0). Синтаксис операции: Число : Число. Тип результата выполнения операции: Число.

 

5. . - Точка Получение значения реквизита объекта - в этом случае вычисляется значение реквизита.

Получение значения периодического реквизита объекта - в этом случае необходимо в скобках указать период, исходя из которого будет вычисляться значение реквизита. Варианты синтаксиса:

Ссылочный тип . Произвольный тип. Тип результата выполнения операции: Произвольный тип.
Ссылочный тип . Произвольный тип(Период: Дата). Тип результата выполнения операции: Произвольный тип.

 

6.() - Круглые скобки - регулирование приоритетов вычисления операций.

 

7. * - Умножение -  арифметическое умножение. Синтаксис операции: Число * Число. Тип результата выполнения операции: Число.

 

8. / - Деление - арифметическое деление, не допускающее деления на ноль (в этом случае вычисление формулы прерывается с выводом соответствующего сообщения).

Синтаксис операции: Число / Число. Тип результата выполнения операции: Число.

 

9.+ - Плюс - арифметическое сложение, добавление к дате секунд, конкатенация (слияние) строк. Варианты синтаксиса:
Число + Число - в этом случае складываются два числа.  Тип результата: Число.
Дата + Число - этом случае к дате прибавляется необходимое число секунд. Тип результата: Дата.
Строка + Произвольный тип - в этом случае к строке прибавляется произвольное значение, которое преобразуется в строку. Тип результата: Строка.

 

10.< - Меньше - сравнивает между собой значения одинаковых типов на признак меньше. Варианты синтаксиса:
Число < Число. Тип результата: Булево.
Дата < Дата. Тип результата: Булево.
Строка < Строка. Тип результата: Булево.

 

11. <= - Меньше или равно - сравнивает между собой значения одинаковых типов на признак меньше или равно. Варианты синтаксиса:
Число <= Число. Тип результата: Булево.
Дата <= Дата. Тип результата: Булево.
Строка <= Строка. Тип результата: Булево.

 

12.<> - Не равно - сравнивает значения любых типов на неравенство.

Синтаксис операции: Произвольный тип <> Произвольный тип. Тип результата: Булево.

 

13. = - Равно - сравнивает значения любых типов на равенство.

Синтаксис операции: Произвольный тип = Произвольный тип. Тип результата: Булево.

 

14. > - Больше - сравнивает значения одинаковых типов на признак больше. Варианты синтаксиса:
Число > Число. Тип результата: Булево.
Дата > Дата. Тип результата: Булево.
Строка > Строка. Тип результата: Булево.

 

15. >= - Больше или равно - сравнивает значения одинаковых типов на признак больше или равно. Варианты синтаксиса:
Число >= Число. Тип результата: Булево.
Дата >= Дата. Тип результата: Булево.
Строка >= Строка. Тип результата: Булево.

 

16. В - определяет принадлежность значения первого операнда значению второго по иерархии. Синтаксис операции:

Ссылочный тип В Ссылочный тип. Тип результата: Булево.

 

17.ДНИВСЕКУНДЫ - возвращает количество секунд в указанном количестве суток. Допускается дробное количество суток. Синтаксис операции:

ДНИВСЕКУНДЫ(Число). Тип результата: Число.

 

18.ДОБАВИТЬМЕСЯЦ - добавляет (или вычитает) к указанной в первом операнде дате переданное во втором операнде число месяцев. Если значение второго операнда больше нуля, то к дате добавляется необходимое число месяцев, если меньше - вычитается. Синтаксис операции:

ДОБАВИТЬМЕСЯЦ(Дата; Число). Тип результата: Дата.

 

19.ЕСЛИ - операция условного выполнения:
В случае истинности условия возвращает значение второго операнда.
В случае ложности условия возвращает значение третьего операнда.

Синтаксис операции: ЕСЛИ(Булево; Произвольный тип; Произвольный тип). Тип результата: Произвольный тип.

 

Все операнды вычисляются полностью вне зависимости от условия.

 

20.И - логическое умножение, конъюнкция. Допускает использование значений типа Число (в этом случае преобразует ноль в ложь, а все другие значения - в истину). Варианты синтаксиса:
Число И Число. Тип результата: Булево.
Булево И Булево. Тип результата: Булево.
Число И Булево. Тип результата: Булево.
Булево И Число. Тип результата: Булево.

 

21.ИЛИ - логическое сложение, дизъюнкция. Допускает использование значений типа Число(в этом случае преобразует ноль в ложь, а все другие значения - в истину). Варианты синтаксиса:
Число ИЛИ Число. Тип результата: Булево.
Булево ИЛИ Булево. Тип результата: Булево.
Число ИЛИ Булево. Тип результата: Булево.
Булево ИЛИ Число. Тип результата: Булево.

 

22.ИТОГМАКС - вычисляет максимум из значений всех строк таблицы для переданной колонки. Варианты синтаксиса:
ИТОГМАКС(Значение: Параметр контекста типа Число). Тип результата: Число.
ИТОГМАКС(Значение: Параметр контекста типа Дата). Тип результата: Дата.
ИТОГМАКС(Значение: Параметр контекста типа Булево). Тип результата: Булево.
ИТОГМАКС(Значение: Параметр контекста типа Строка). Тип результата: Строка.

 

23.ИТОГМИН - вычисляет минимум из значений всех строк таблицы для переданной колонки. Варианты синтаксиса:
ИТОГМИН(Значение: Параметр контекста типа Число). Тип результата: Число.
ИТОГМИН(Значение: Параметр контекста типа Дата). Тип результата: Дата.
ИТОГМИН(Значение: Параметр контекста типа Булево). Тип результата: Булево.
ИТОГМИН(Значение: Параметр контекста типа Строка). Тип результата: Строка.

 

24.ИТОГСУММА - вычисляет сумму значений из переданной в первом параметре колонки в пределах указанного отбора по произвольному количеству колонок. Сумма нарастает в порядке возрастания значений из переданной колонки сортировки. Суммируются значения только тех строк, значение в колонке сортировки которых меньше или равно значению из колонки сортировки строки, для которой производится вычисление. При этом, в зависимости от флага свёртки, строки с одинаковыми значениями в колонке сортировки могут сворачиваться. Таким образом, если свёртка будет включена, то суммы в строках с одинаковыми значениями в колонке сортировки будут совпадать и включать в себя сумму всех значений этих строк. Если же свёртка будет отключена, то суммы будут нарастать так-же как и для строк, в которых значения в колонке сортировки различаются. Синтаксис операции:

ИТОГСУММА(Значение: Параметр контекста; Свертка: Булево; Сортировка: Параметр контекста; Отбор: Параметр контекста; ...). Тип результата: Произвольный тип.

 

При перемещении строк в табличной части документа (проформы, задачи или сессии) пересчет значения реквизита, для которогозадана формула с использованием операции ИТОГСУММА, автоматически не происходит.  Для пересчета значения такого реквизита необходимо воспользоваться кнопкой Рассчитать.

 

25.КОНЕЦГОДА - определяет дату и время конца года для указанной даты.

Синтаксис операции: КОНЕЦГОДА(Дата). Тип результата: Дата.

 

26.КОНЕЦДНЯ - определяет дату и время конца дня для указанной даты.

Синтаксис операции: КОНЕЦДНЯ(Дата). Тип результата: Дата.

 

27.КОНЕЦКВАРТАЛА - определяет дату и время конца квартала для указанной даты.

Синтаксис операции: КОНЕЦКВАРТАЛА(Дата). Тип результата: Дата.

 

28.КОНЕЦМЕСЯЦА - определяет дату и время окончания месяца для указанной даты.

Синтаксис операции: КОНЕЦМЕСЯЦА(Дата). Тип результата: Дата.

 

29.КОНЕЦНЕДЕЛИ - определяет дату и время конца недели для указанной даты.

Синтаксис операции: КОНЕЦНЕДЕЛИ(Дата). Тип результата: Дата.

 

30.МАКС - вычисляет максимум из произвольного числа переданных значений, разделённых операцией ";". Важно: Типы значений должны совпадать. Варианты синтаксиса:
МАКС(Число; ...). Тип результата: Число.
МАКС(Дата; ...). Тип результата: Дата.
МАКС(Булево; ...). Тип результата: Булево.
МАКС(Строка; ...). Тип результата: Строка.

 

31.МИН - вычисляет минимум из произвольного числа переданных значений, разделённых операцией ";". Важно: типы значений должны совпадать. Варианты синтаксиса:
МИН(Число; ...). Тип результата: Число.
МИН(Дата; ...). Тип результата: Дата.
МИН(Булево; ...). Тип результата: Булево.
МИН(Строка; ...). Тип результата: Строка.

 

32.МОДУЛЬ - вычисляет модуль числа. Отрицательные значения делает положительными, а остальные не изменяет.

Синтаксис операции: МОДУЛЬ(Число). Тип результата: Число.

 

33.НАЧАЛОГОДА - определяет дату и время начала года для указанной даты.

Синтаксис операции: НАЧАЛОГОДА(Дата). Тип результата: Дата.

 

34.НАЧАЛОДНЯ - определяет дату и время начала дня для указанной даты.

Синтаксис операции: НАЧАЛОДНЯ(Дата). Тип результата: Дата.

 

35.НАЧАЛОКВАРТАЛА - определяет дату и время начала квартала для указанной даты.

Синтаксис операции: НАЧАЛОКВАРТАЛА(Дата). Тип результата: Дата.

 

36.НАЧАЛОМЕСЯЦА - определяет дату и время начала месяца для указанной даты.

Синтаксис операции: НАЧАЛОМЕСЯЦА(Дата). Тип результата: Дата.

 

37.НАЧАЛОНЕДЕЛИ - определяет дату и время начала недели для указанной даты.

Синтаксис операции: НАЧАЛОНЕДЕЛИ(Дата). Тип результата: Дата.

 

38.НЕ - логическое отрицание. Допускает использование значений типа Число (в этом случае ноль преобразуется в ложь, а все другие значения - в истину). Варианты синтаксиса:
НЕ Число. Тип результата: Булево.
НЕ Булево. Тип результата: Булево.

 

39.НЕ В - определяет принадлежность значения первого операнда значению второго по иерархии. То есть, если значение первого операнда не принадлежит значению второго операнда по иерархии, то результат будет Истина. Если значение первого операнда принадлежит значению второго операнда по иерархии, то результат будет Ложь. Таким образом, данная операция является обратной для операции В.

Синтаксис операции: Произвольный тип НЕ В Произвольный тип. Тип результата: Булево.

 

40.ОКРУГЛ - возвращает число, полученное в результате округления значения первого операнда. Значение второго операнда определяет число знаков дробной части, до которых производится округление. Если параметр отрицательный, то число округляется до соответствующего разряда в целой части, начиная с младших разрядов.Синтаксис операции: ОКРУГЛ(Число; Число). Тип результата: Число.

 

41.ПОКАЗАТЕЛЬ - возвращает значение показателя исходя из переданной настройки и периода.Синтаксис операции:

ПОКАЗАТЕЛЬ(Настройка: Справочник "Настройки показателей"; ПериодНачало: Дата; ПериодОкончание: Дата). Тип результата: Число.

 

42.СЕГОДНЯ - возвращает текущую дату с текущим временем.

Синтаксис операции: СЕГОДНЯ. Тип результата: Дата.

 

В случае когда необходима дата без времени следует дополнительно воспользоваться операцией НАЧАЛОДНЯ;

 

43.СЕКУНДЫВДНИ - возвращает количество суток по указанному количеству секунд. Может вернуть дробное количество суток.

Синтаксис операции: СЕКУНДЫВДНИ(Число). Тип результата: Число.

 

43.СРЗНАЧ - вычисляет среднее арифметическое из произвольного числа переданных значений, разделённых операцией ";".

Синтаксис операции: СРЗНАЧ(Число; ...). Тип результата: Число.

 

Валидация
Под понятием Валидация подразумевается контроль правильности введенной формулы. Такой механизм является очень важной частью редактора формул, так как он отслеживает корректность настройки формулы и уменьшает вероятность возникновения ошибок. Основные направления контроля:

Последовательность элементов формулы (механизм следит за чередованием значений и операций, корректностью введенных параметров и т. д.);
Типы параметров (валидатор проверяет соответствие типа введенного параметра типу результата формулы. В случае несоответствия типов или некорректных операций над определенными типами (например, сложение объектов типа Ссылка) механизм валидации не позволит сохранить формулу).

 

Окно Формулы. Служебное сообщение о некорректной операции над объектами типа Ссылка

Окно Формулы. Служебное сообщение о некорректной операции над объектами типа Ссылка

 

Пример

Рассмотрим пример настройки формулы для реквизита Сумма без НДС вида проформы Начисление расходов.

На форме Виды проформы: Начисление расходов зайдем на вкладку Реквизиты и дважды щелкнем левой кнопкой мыши по реквизиту Сумма без НДС. В результате откроется форма реквизита.

На вкладке Настройки можно ввести формулу для расчета реквизита Сумма без НДС. Для этого нажмем кнопку с пиктограммой Функция ().

 

Форма реквизита

Форма реквизита

 

Откроется окно Формулы.

 

Окно Формулы

Окно Формулы

 

Сумма без НДС рассчитывается  следующим образом:

([Сумма с НДС]/(100+[Ставки НДС].[Ставка]))*100

 

Для того чтобы ввести данную формулу, нужно дважды щелкнуть левой кнопкой мыши в области настройки формулы. Элементы формулы можно вводить как при помощи выпадающего меню со списком типов элементов и видов операций, так и непосредственно с клавиатуры. Первый элемент "(" введем с клавиатуры. Для ввода второго элемента воспользуемся выпадающем списком.

 

Окно Формулы, ввод элемента Сумма с НДС

Окно Формулы, ввод элемента Сумма с НДС

 

Математическую операцию деление "/" и скобку  введем с клавиатуры.

Для ввода числового значения можно воспользоваться выпадающем списком: выберем тип Число.

 

Окно Формулы, выбор типа элемента

Окно Формулы, выбор типа элемента

 

Панель элемента формулы изменится и станет удобной для ввода числовых значений. Введем следующий элемент формулы (число 100) и нажмем кнопку ОК.

 

Окно Формулы, ввод числового значения

Окно Формулы, ввод числового значения

 

Аналогично вводятся оставшиеся элементы формулы. В результате получим готовую формулу.

 

Окно Формулы

Окно Формулы

 

После нажатия кнопки ОК формула отразится на вкладке Настройки.

 

Форма реквизита

Форма реквизита

 

Для сохранения изменений, которые были внесены для реквизита Сумма без НДС, нажмем кнопку ОК или Записать.

 

См. также:

Редактор формул (в показателях)