Условный оператор Если ... ИначеЕсли ... Тогда
Оператор Если
управляет выполнением программы, основываясь на результате одного или более логических выражений.
Оператор может содержать любое количество групп операторов, возглавляемых конструкциями ИначеЕсли
... Тогда
.
Синтаксис оператора Если:
1 2 3 4 5 6 7 |
Если <Логическое выражение> Тогда // Операторы [ИначеЕсли <Логическое выражение> Тогда] // Операторы [Иначе] // Операторы КонецЕсли; |
где:
Если
- ключевое слово, которое начинает структуру оператора условного выполнения;<Логическое выражение>
- проверяемое логическое выражение;Тогда // Операторы
- операторы, выполняющиеся, если результатом логического выражения является значениеИстина
;ИначеЕсли <Логическое выражение>
- логическое выражение, следующее за ключевым словомИначеЕсли
, вычисляется только тогда, когда условия вЕсли
и всех предшествующихИначеЕсли
оказались равныЛожь
;Иначе
- операторы, следующие за ключевым словомИначе
, выполняются, если результаты логических выражений в конструкцииЕсли
и всех предшествующих конструкцияхИначеЕсли
оказались равныЛожь
;КонецЕсли
- ключевое слово, которое завершает структуру оператора условного выполнения.
1 2 3 4 5 6 7 8 9 10 11 |
Количество = 74; Сумма = 150; Количество = Количество - 74; Цена = Неопределено; // Проверка деления на 0 Если Количество <> 0 Тогда Цена = Сумма / Количество; Иначе Сообщить("Деление на ноль!"); КонецЕсли; |
Ещё пример:
1 2 3 4 5 6 7 8 9 |
// Разница по модулю Число1 = 7; Число2 = 13; Если Число1 > Число2 Тогда МодульРазницы = Число1 - Число2; Иначе МодульРазницы = Число2 - Число1; КонецЕсли; |
Тернарный условный оператор 1С
Позволяет вычислить одно из двух заданных выражений в зависимости от результата вычисления логического выражения.
Синтаксис тернарного оператора 1С:
1 |
?(<Логическое выражение>, <Выражение 1>, <Выражение 2>) |
где:
<Логическое выражение>
- проверяемое логическое выражение:- если
Истина
, то будет вычисляться<Выражение 1>
; - если
Ложь
, то будет вычисляться<Выражение 2>
.
- если
Возвращает результат вычисления одного из результирующих выражений.
1 2 3 4 5 6 |
// Разница по модулю Число1 = 7; Число2 = 13; МодульРазницы = ?(Число1 > Число2, Число1 - Число2, Число2 - Число1); Сообщить(МодульРазницы); // 6 |
Логические операции в 1С
Приоритет логических операций в 1С:
Логическая операция | Приоритет |
() | 1 |
НЕ | 2 |
И | 3 |
ИЛИ | 4 |
Необходимо выбрать одно совпадение номенклатуры, при этом поиск осуществляется по коду или наименованию (причем приоритет отдается поиску по коду).
Текст запроса:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
ВЫБРАТЬ ПЕРВЫЕ 1 Номенклатура.Ссылка, ВЫБОР КОГДА Номенклатура.Код = &Код ТОГДА 0 КОГДА Номенклатура.Наименование = &Наименование ТОГДА 1 ИНАЧЕ 2 КОНЕЦ КАК Порядок ИЗ Справочник.Номенклатура КАК Номенклатура ГДЕ (Номенклатура.Код = &Код ИЛИ Номенклатура.Наименование = &Наименование) УПОРЯДОЧИТЬ ПО Порядок |
В общем случае использовать ИЛИ в запросе не рекомендуется (подробнее https://its.1c.ru/db/v8std/content/658/hdoc).