Значение Булево 1С — это значение Истина или Ложь. В числовом выражении Ложь это ноль, а Истина — число больше нуля (обычно единица).
Выражение (операция) Булево 1С — это математическое выражение, результатов которого является значение типа Булево 1С, например:
a = 0+1;
b = 2-1;
x = (a = b);
//x = Истина
Далее — подробнее о условных операциях 1С, значениях и выражениях булево 1С.
Условная операция 1С ЕСЛИ выглядит следующим образом:
Если ОПЕРАЦИЯ-БУЛЕВО Тогда
//действия1…
ИначеЕсли ОПЕРАЦИЯ-БУЛЕВО Тогда
//действия2…
Иначе
//действия3…
КонецЕсли;
Булево 1С — это результат вычисления со значениями Истина или Ложь, например:
Массив1 = Новый СписокЗначений();
Если Массив1.Количество() > 0 Тогда
//действия…
КонецЕсли;
//другой вариант, полностью аналогичный
Если НЕ Массив1.Количество() = 0 Тогда
//действия…
КонецЕсли;
Многие функции/методы объектов возвращают успешность выполнения операции как булево 1С, например:
Запрос = Новый Запрос();
Выборка = Запрос.Выполнить().Выбрать();
Если Выборка.Следующий() Тогда
//действия…
КонецЕсли;
В условной операции 1С можно объединять несколько условий с использованием И и ИЛИ:
Массив1 = Новый СписокЗначений();
Если (Массив1.Количество() > 0 и Массив1.Количество() < 10) или Массив.Количество() > 100 Тогда
//действия…
КонецЕсли;
Условия булево 1С можно использовать непосредственно в коде программы:
Переменная1 = 5;
флгРезультат = (Переменная1 = 2 + 3); //флгРезультат будет равен ИСТИНА
В условной операции 1С оператор ЕСЛИ ИНАЧЕ ТОГДА можно заменить более кратким выражением. Следующие два варианта равны:
[VIP_CONTENT]
//первый вариант
Переменная1 = 0;
ВвестиЗначение(Переменная1, "Введите значение больше нуля");
Если Переменная1 < 0 Тогда
ТекстСообщения = "Число должно быть больше нуля";
Иначе
ТекстСообщения = "Вы загадали число " + Строка(Переменная1);
КонецЕсли;
Сообщить(ТекстСообщения);
//второй вариант
Переменная1 = 0;
ВвестиЗначение(Переменная1, "Введите значение больше нуля");
ТекстСообщения = ?( Переменная1 < 0, "Число должно быть больше нуля", "Вы загадали число " + Строка(Переменная1));
Сообщить(ТекстСообщения);
[/VIP_CONTENT]
У реквизитов объектов (справочников, документов и т.п.) есть возможность установить тип булево 1С. Также можно создать переменную булево 1С, например:
флгВыполнено = Истина;
Далее, в условиях ЕСЛИ, можно писать равнозначно двумя способами:
//вариант 1
Если флгВыполнено = Истина Тогда
//делаем что-то
КонецЕсли;
//вариант 2
Если флгВыполнено Тогда
//делаем что-то
КонецЕсли;
Второй вариант таит в себе следующую «неприятность»:
[VIP_CONTENT]
в связи с нетипизированностью переменных, созданных в модуле (то есть далее в тексте ей легко установить значение флгВыполнено = "Строка"). Если такое произойдет по недосмотру – второй вариант «упадет с ошибкой».
[/VIP_CONTENT]