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


Пример: Как используется Сложные логические выражения в 1С


Пример 01.

X = 7;
Сообщить( (X >= 5) И (X <= 10) И (X % 2 <> 0) );
// Истина (7 между 5 и 10, и нечётное)

Пример 02.

Имя = "Саша";
Сообщить( ((Имя = "Саша") ИЛИ (Имя = "Маша")) И (СтрДлина(Имя) > 3) );
// Истина

Пример 03.

ДатаЗаказа = '2025-09-15';
Дедлайн = '2025-09-20';
КлиентVIP = Ложь;

Сообщить( (ДатаЗаказа <= Дедлайн) И (НЕ КлиентVIP) );
// Истина

Пример 04.

Возраст = 17;
Город = "Москва";

Сообщить( (Возраст >= 18) ИЛИ (Город = "Москва") );
// Истина (возраст не подошёл, но город "Москва")

Пример 05.

Баланс = 150;
VIP = Ложь;

Сообщить( (Баланс > 100) И (НЕ VIP) );
// Истина

Сложные логические выражения — это такие проверки, где соединяются сразу несколько условий.
Например: одно условие проверяет возраст, другое — город, а третье — статус клиента.
С помощью И, ИЛИ и НЕ мы объединяем их в одно выражение, и программа выдаёт итог: Истина или Ложь.
Это нужно, когда одной проверки недостаточно и важно учесть сразу несколько факторов.


Шпаргалка

  • И — истинно, если обе части истинны.
  • ИЛИ — истинно, если хотя бы одна часть истинна.
  • НЕ — переворачивает результат.
  • Приоритет: НЕ > И > ИЛИ. В реальном коде ставь скобки.

Быстрые примеры (запусти в 1С)

Сообщить( (2 < 3) И (10 = 10) );          // Истина
Сообщить( (2 < 3) И (10 <> 10) );         // Ложь
Сообщить( (2 < 3) ИЛИ (10 = 5) );         // Истина
Сообщить( НЕ (2 < 3) );                   // Ложь

// С датами
A = ДатаВремя(2024, 1, 1);
B = ДатаВремя(2024, 6, 1);
Сообщить( (A < B) И (Год(A) = 2024) );    // Истина

Паттерны из практики

// 1) Число в диапазоне [10..20]
X = 15;
ВДиапазоне = (X >= 10) И (X <= 20);
ОткрытьЗначение(ВДиапазоне);              // Истина

// 2) Строка валидна: не пустая И длина ≥ 3
Имя = "Павел";
ВалидноИмя = (СтрДлина(Имя) > 0) И (СтрДлина(Имя) >= 3);
ОткрытьЗначение(ВалидноИмя);              // Истина

// 3) Обработка заказа: успел по сроку ИЛИ клиент VIP
ДатаЗаказа = ДатаВремя(2025, 9, 1);
Дедлайн    = ДатаВремя(2025, 9, 10);
КлиентVIP  = Истина;
МожноОбработать = (ДатаЗаказа <= Дедлайн) ИЛИ КлиентVIP;
ОткрытьЗначение(МожноОбработать);         // Истина

// 4) Де Морган (проверка эквивалентности)
A = Истина; B = Ложь;
Лево  = НЕ (A И B);
Право = (НЕ A) ИЛИ (НЕ B);
Сообщить(Лево = Право);                   // Истина

Частые ошибки

  • Забытые скобки → двусмысленный код. Всегда группируй: (A) ИЛИ (B И (НЕ C)).
  • Смешивание типов (строка/число/дата). Делай явные преобразования: Число(), ДатаВремя().
  • «Ручные» даты строками для вычислений — избегай, работай через ДатаВремя().

Самопроверка (с ответами)

Сообщить( (1 = 1) И (2 = 2) );                           // Истина
Сообщить( НЕ (10 > 5) );                                 // Ложь
Сообщить( ("Солнце" = "Луна") ИЛИ ("Юпитер" = "Юпитер") ); // Истина
Сообщить( НЕ ("Солнце" = "Луна") );                      // Истина
Сообщить( (10 <> 5) ИЛИ (5 = 5) );                       // Истина
Сообщить( (Истина) ИЛИ (Ложь) );                         // Истина
Сообщить( НЕ (Истина) );                                 // Ложь
Сообщить( (Ложь) И (Истина) );                           // Ложь
Сообщить( (Ложь) ИЛИ (Истина) );                         // Истина

Итог

Сложные логические выражения помогают проверять сразу несколько условий и принимать более «умные» решения в программе.
Главное помнить: И — все условия верны, ИЛИ — хотя бы одно, НЕ — меняет результат.
Скобки нужны для ясности. Это основа любой реальной логики в 1С.

Комментарии

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *