Приоритеты выполнения арифметические операций примитивных типов данных в системе 1С Предприятие 8

Приветствую вас, уважаемые читатели блога SoftMaker.kz! В прошлый раз мы рассматривали вопрос о преобразования значений примитивных типов данных во встроенном языке 1С:Предприятие 8. Сегодня мы поговорим о о приоритетах арифметических операций примитивных типов данных, а также рассмотрим несколько подряд идущих арифметические операций. Давайте, посмотрим!


Встроенный язык 1С:Предприятие для начинающих: приоритеты выполнения арифметических операций примитивных типов данных

Из программы школы, вы знакомы с тем, что наивысшими приоритетом в арифметических операциях являются круглые скобки «()». Если выражение находится в круглых скобках, то прежде всего будет исполняться именно оно. Следующим по приоритету идут унарные операции «+» и «-», унарная операция означает, что указывается операция и одно значение, например «-5». Третьими выполняются операции умножения и деления и в самую последнюю очередь сложение и вычитание. Давайте рассмотрим как это работает:

99+15/5*8

В этом случае вначале 15 будет разделено на 5, полученное число умножено на 6 и третья операция: 99 прибавиться к полученному числу. Далее следующее простое выражение 10+5/2+1. Понятно, что первым будет исполнятся операция деления, дальше будет исполнятся операция сложения. Если использовать скобки:

(90+30)/(7+5)

В этом случае в начале мы сложим 90 и 30 и поделим все это на 7+5 и в этом случае выражение будет равно 10. Рассмотрим другие операции, которые возможны в программном коде 1С:Предприятие 8. Возможно, вы работали в PHP, где возможен такой оператор i++; или i—;. Это инкремент или декремент на одну единицу. Исполнение таких операторов в 1С невозможно, но возможен оператор i++1; и j—1;. Давайте разберём их подробнее. Это вполне нормальный оператор . Откроем модуль любого справочника в Конфигураторе, Конфигурация -> Справочники -> Номенклатура, правой кнопкой мыши вызовем пункт Открыть модуль объекта. Чтобы не было ошибки объявим переменную в этом программном коде:

a=0;
b=a++1;

Если проверить на синтаксические ошибки, то их не будет. Даже если выражение разместить на разных строках:

a=0;
b=a+
+1;

Вообще, переводы строк не оказывают влияния на выполнение операторов . Как будет работать подобный оператор? Компилятор языка 1С вначале выполнит унарную операцию плюса, то есть +1 даст 1 и потом к a прибавит единицу. Это то же самое что сложить a с единицей. Точно так же можно написать:

a=0;
b=a+-1;

Сначала выполняется унарная операция минуса, получается -1, затем складывается минус и плюс и получается -1. Соответственно это тоже самое, что и i-1. Нужно знать о таких специфических операциях и понимать, как они будут выполнятся. Это поможет правильно расставлять приоритеты арифметических операциях в соответствии с тем порядком, о котором мы говорим.

Итак, мы выяснили, что система спокойно отрабатывает операцию где встречается две подряд арифметические операции например ++ , +-, -+, а что будет если мы напишем несколько арифметических операций подряд? Это можно проверить. Для этого откроем 1С:Предприятие из Конфигуратора в режиме отладки, клавиша «F5». Поставим точку останова, клавиша «F9», в конце нашего выражения и введём простое выражение в табло. В Конфигураторе откроем пункт меню Отладка -> Табло.

Запишем в табло выражение 3+++5 , обратите внимание, на выходе у нас получается ошибка в выражении. Платформа такого преобразования сделать не может. Выражение 3++5 срабатывает, а вот с тремя плюсами система уже не понимает, чего конкретно от неё хотят. Но если поставить скобки 1++(+2) , то всё это будет выполнено корректно. Как видим, чтобы правильно организовать работу арифметических операций, необходимо хорошо понимать приоритеты их выполнения. В следующей статье мы рассмотрим приоритеты выполнения различных операций в одном выражении, как арифметических, так и сравнения и булевых операций.

ПОДПИСКА