Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Виды программных модулей.Выражения и операторы.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
321.02 Кб
Скачать
  1. Выражения и операторы. Процедуры и функции. Выражения

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

Порядок вычисления выражения:

  • по первому операнду определяется тип выражения;

  • затем выполняется вычисление выражения с учетом круглых скобок и приоритета выполнения операций, при этом значения операндов, имеющих тип, отличный от типа выражения (или вычисляемого в данный момент подвыражения), преобразовываются в значения, тип которых совпадает с типом выражения.

Например, переменная з в операторе

з = "Результат = " + 4 / "2-я строка";

получит символьный тип и значение, равное "Результат = 2". Действительно, операция / имеет более высокий приоритет, чем операция +, поэтому прежде будет вычислено подвыражение 4/"2-я строка", которое, судя по его первому операнду, является числовым и поэтому вернет число 2. Далее это число будет преобразовано в строку "2", которая объединится со строкой "Результат = ".

Результатом выражения будет пустое значение, если первый операнд выражения имеет пустое значение. Например:

перем а; // Объявляем скалярную переменную а

б = 2 + а; // Вернет 2

в = а + 2; //Вернет пустое значение

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

табл = СоздатьОбъект("Таблица");

а = табл + 2; // Вернет пустое значение

б = табл; // Типы переменных б и табл совпадают

Выражение называется логическим, если в нем есть хотя бы одна операция отношения или логическая операция. Например:

2.5 /1.33 > 0 // Вернет 1

(а = 5) и (б = 2) //Вернет 0, если, например, а = 1

Логические выражения употребляются в управляющих конструкциях языка, например

если 2.5 /1.33 > 0 тогда

Сообщить("Да");

иначе

Сообщить("Нет");

конецЕсли;

Замечания:

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

флаг = (а = 5) и (б = 2); // Ошибка! В правой части оператора присваивания логическое выражение

Этот недостаток создает определенные неудобства при записи программ.

2. Тип данных выражения возвращают функции ТипЗначения и ТипЗначенияСтр. Первая возвращает число, по которому определяется тип данных ее параметра, вторая - имя типа данных параметра. Например:

а =1.2;

Сообщить(ТипЗначения(а)); // Напечатает 1

Сообщить(ТипЗначенияСтр(а)); // Напечатает слово «Число»

сСотр = СоздатьОбъект("Справочник.Сотрудники");

Сообщить(ТипЗначенияСтр(сСотр)); // Напечатает слово «Справочник»

Операции

Арифметические операции для числового типа данных

С каждым типом данных связан набор операций. С числовыми данными используются арифметические операции *, /, +, - и операция %, возвращающая остаток от деления операндов, например:

5 % 2 // Вернет 1

5.2 % 2 // Вернет 1

5.8 % 2 // Вернет 0

5.8 % "2-я строка" // Также вернет 0

При вычислении результата выражения с операцией % числовые операнды округляются до целых значений (если второй операнд является нечисловым, то он прежде приводится к числовому типу), а затем вычисляется остаток от деления двух целых чисел.

Операции для строк и дат

В символьных выражениях допустима только операция +, называемая операцией конкатенации. Например:

"1-я строка и " + "строка 2" // Вернет строку "1-я строка и строка 2"

В выражениях типа Дата можно употреблять операции + и -, например

'21.12.01'+11; // Выражение типа Дата, возвращающее дату 01.01.02

'21.12.01' -11; // Выражение типа Дата, возвращающее дату 10.12.01

Следующее выражение ошибочно:

'21.12.01' * 11 // Ошибка! Операция * недопустима в выражениях типа Дата

«Истина» и «ложь» в 1с

Констант со значениями истина и ложь во встроенном языке 1С нет. В то же время понятия истина и ложь используются в 1С при оценке логических выражений, появляющихся в управляющих конструкциях языка.

Операции отношения

В логических выражениях используются приведенные в табл. 1 операции отношения.

Таблица 1 Операции отношения

Операция

Описание

<

Меньше

<=

Меньше или равно

>

Больше

>=

Больше или равно

=

Равно

<>

Не равно

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

2 = 5 // Вернет ложь

"Строка 2">"Строка 1" // Вернет истина

2<'23.12.01'> // Это неверное выражение отношения, так как его операнды имеют разный тип

Также операндами операций = и <> могут быть переменные агрегатного типа. Например:

тЗнач1 = СоздатьОбъект("ТаблицаЗначений");

сСотр = СоздатьОбъект("Справочник.Сотрудники");

тЗнач2 =тЗнач1;

// Круглые скобки в ниже записанном логическом выражении обязательны

если (тЗнач1 = тЗнач2) и (тЗнач1 = сСотр) тогда

Сообщить("Да");

иначе

Сообщить("Нет");

конецЕсли;

Если операция отношения выполняется над строками, то они сравниваются по­символьно до тех пор, пока не будут обнаружены несовпадающие символы.

Символ сим_1 больше сим_2, если код символа сим_1 больше кода символа сим_2.

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

" Строка" > "Строка 1" // Вернет ложь

Логические операции

Применяются следующие логические операции:

  • НЕ - логическое НЕ (отрицание);

  • И - логическое И;

  • ИЛИ - логическое ИЛИ.

Операндами логических операций должны быть логические выражения. В таблице 2 приведены результаты логических операций над логическими выражениями ЛВ1 и ЛВ2, принимающими значения истина (И) или ложь (Л).

Таблица 2 Таблица истинности

ЛВ1

ЛВ2

ЛВ1 И ЛВ2

ЛВ1 ИЛИ ЛВ2

НЕ ЛВ1

И

И

И

И

Л

И

Л

Л

И

Л

Л

И

Л

И

И

Л

Л

Л

Л

И

Операция отрицания является унарной операцией, располагаемой слева от операнда. Все остальные рассмотренные операции являются бинарными.

Приоритет выполнения операций

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

Таблица 3 Приоритет выполнения операций

%

*,/

+, -

НЕ

И

ИЛИ

<, <=, >, >=, =, <>

Пример. Вычислить результат логического выражения (х / а = 1 ) или (б / (а + б) < 1 ) и не (б = а) или (х <> 6) при х = 6.0, а = 2.0 и б=3.0.

Вычислив результат операций подвыражений, заключенных в круглые скобки, получим:

ложь или истина и не ложь или ложь.

Далее выполняем пошагово логические операции с учетом их приоритета. После выполнения не ложь: ложь или истина и истина или ложь.

После выполнения истина и истина: ложь или истина или ложь.

Окончательный результат: истина.