Условия 1С. Использование условного оператора

Как и в любом языке программирования, во встроенном языке 1С 8 присутствует условный оператор. Он позволяет выполнять определенный набор операторов, в зависимости от выполнения логического выражения. Использование условия в 1с позволяет организовать ветвление алгоритма, в зависимости от различных параметров работы системы.

Синтаксис условий 1С

В общем виде условный оператор выглядит следующим образом:

Если <Логическое выражение> Тогда
    // Операторы
[ИначеЕсли <Логическое выражение> Тогда]
    // Операторы
[Иначе]
    // Операторы
КонецЕсли;

Из приведенного синтаксиса, можно сказать об основных особенностях оператора:

  1. Логический оператор всегда начинается с ключевой фразы Если и заканчивается фразой КонецЕсли;
  2. Логическое выражение — выражение, результатом которого является значение типа Булево, то есть Истина или Ложь. Если результат выполнения логического выражения — Истина, выполняется блок операторов, идущих после ключевого слова Тогда;
  3. В логическом выражении могут быть использованы операции сравнения: «=», «<>» (не равно), «>», «<«, «>=» (больше или равно), «<=» (меньше или равно);
  4. Также в логическом выражении могут применятся булевы операции: «И», «ИЛИ», «НЕ»;
  5. Можно создавать неограниченное количество блоков ИначеЕсли, выражение которых будет проверяться, если выражения предыдущих блоков Если и ИначеЕсли вернули Ложь;
  6. Также можно использовать один блок Иначе. Он будет выполняться, если не выполнился ни один из предыдущих блоков Если и ИначеЕсли.

Примеры использования условий в 1С

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

Условия 1С. Примеры работы

Простые условия

Пример 1. Пусть у нас есть две числовые переменные Число1 и Число2. Вывести пользователю сообщение, если значения этих переменных равны.

Если Число1 = Число2 Тогда
    Сообщить("Числа равны");
КонецЕсли;

Таким образом мы реализовали простейшее условие в 1с 8. Операция сравнения «=» проверяет равенство переменных расположенных слева и справа от нее. Если значения равны, выполняются операторы после ключевого слова Тогда (в нашем случае оператор один — Сообщить). Если же значения не равны, операторы расположенные в условии не выполнятся.

Пример 2. Немного усложним первый пример. Выведем сообщение в случае неравенства чисел.

Если Число1 = Число2 Тогда
    Сообщить("Числа равны");
Иначе
    Сообщить("Числа не равны");
КонецЕсли;

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

Составные условия

Пример 3. Пусть у нас есть три числовые переменные Число1,Число2 и Число3. Разделить Число1 либо на Число2, либо на Число3. Делить на 0 нельзя, делитель будем выбирать исходя из этого условия.

Если Число2 <> 0 Тогда
		
    Частное = Число1 / Число2;
    Сообщить(Частное);
		
ИначеЕсли Число3 <> 0 Тогда
		
    Частное = Число1 / Число3;
    Сообщить(Частное);
		
Иначе
    Сообщить("Делители равны 0, операция невозможна");
КонецЕсли;

Теперь в условие добавился блок ИначеЕсли. Условный оператор отработает следующим образом:

  • Если Число2 не равно нулю, тогда делим Число1 на Число2;
  • Если первое условие вернуло Ложь (т.е. Число2 оказалось равным нулю.), только в этом случае произойдет проверка следующего условия (в блоке ИначеЕсли). Если Число3 не равно нулю, тогда делим Число1 на Число3;
  • Если ни одно из предыдущих условий не выполнилось (и Число2 и Число3 оказались равны нулю), тогда выполняются операторы после Иначе (выводится сообщение о невозможности деления);

Также этот пример можно выполнить используя вместо операции «<>», комбинацию операции «=» и логической операции «Не»;

Если Не Число2 = 0 Тогда
    ...		
ИначеЕсли Не Число3 = 0 Тогда
    ...	
Иначе
    ...
КонецЕсли;

Логика получается точно такая же — «не равно». Только сначала произойдет проверка на равенство, а потом изменение полученного значение на противоположное (Истина на Ложь, Ложь на Истина).

Условия 1С со сложными логическими выражениями

Пример 4. Разделить Число1 на сумму переменных Число2 и Число3. Чтобы не получить ошибку деления, произвести проверку на 0.

Если Число2 = 0 И Число3 = 0 Тогда
    Сообщить("Нельзя делить на 0");
Иначе
		
    Частное = Число1 / (Число2 + Число3);
    Сообщить(Частное);
		
КонецЕсли;

В логическом выражении используется операция «И». То есть для выполнения условия и Число2 и Число3 должны быть равными нулю. Вычисление логического выражения будет осуществляться в следующем порядке:

  • Вычисляется значение первой части условия (Число2 = 0);
    • Если ее значение Ложь, вычисление второй части (Число3 = 0) производится не будет, выполнятся операторы расположенные после Иначе;
    • Если его значение Истина:
  • Вычисляется значение второй части условия (Число3 = 0);
    • Если ее значение Ложь, выполнятся операторы расположенные после Иначе;
    • Если ее значение Истина, выполнятся операторы расположенные после Тогда.

Для выполнение составного условия 1с, разделенного операцией «И» требуется выполнение каждого под условия. Каждое под условие проверяется по порядку. Если при вычислении какого-то под условия получается Ложь, то следующие проверяться уже не будут.

Пример 5. Разделить Число1 на произведение переменных Число2 и Число3. Чтобы не получить ошибку деления, произвести проверку на 0.

Если Число2 = 0 Или Число3 = 0 Тогда
    Сообщить("Нельзя делить на 0");
Иначе
		
    Частное = Число1 / (Число2 * Число3);
    Сообщить(Частное);
		
КонецЕсли;

В логическом выражении используется операция «ИЛИ». То есть для выполнения условия Число2 или Число3 должно быть равным нулю. При использовании операции «Или» всегда вычисляются все под условия.

Один комментарий

  1. Если Число2 = 0 И Число3 = 0 Тогда
    Сообщить(«Нельзя делить на 0»);
    Иначе

    Частное = Число1 / (Число2 + Число3);
    Сообщить(Частное);

    КонецЕсли;

    Считаю пример нужно немного отредактировать потому, что нельзя делить на сумму этих чисел равную 0.
    Может быть такое, что:
    Число2=2, а Число3=-2 или что-то подобное.

Добавить комментарий

Ваш адрес email не будет опубликован.