Разработка и Конфигурация · 9 мин
Что такое булево в 1С простыми словами
Булево в 1С — тип данных с двумя значениями: Истина и Ложь. Разбираем простыми словами, как объявить переменную, использовать в условиях и избежать типичных ошибок.
Булево в 1С — это примитивный тип данных, который может принимать только два значения: Истина или Ложь. Название происходит от английского «Boolean» и встречается во всех языках программирования. Во встроенном языке 1С эти значения записываются русскими словами Истина и Ложь (или английскими True и False — оба варианта работают одинаково).
Проще всего представить булево как выключатель: он либо включён, либо выключен, третьего состояния нет. Такой тип идеально подходит для ответов на вопросы вида «да/нет»: проведён ли документ, является ли клиент юридическим лицом, включена ли скидка, прошла ли проверка.
Булевы значения встречаются в 1С повсюду: в условиях «Если...Тогда», в реквизитах справочников и документов (флажки на формах), в отборах динамических списков, в запросах и в результатах функций проверки. Понимание этого типа — базовый навык для любого, кто пишет или дорабатывает код в 1С.
Как объявить булеву переменную в 1С
Создать булеву переменную в 1С очень просто — достаточно присвоить ей значение Истина или Ложь. Явно объявлять тип не нужно: платформа сама определит его по присвоенному значению.
ПроверкаПройдена = Истина;
ЕстьСкидка = Ложь;
ДокументПроведен = Истина;
Обратите внимание: значения Истина и Ложь пишутся без кавычек. Если написать Переменная = "Истина";, то это будет уже строка, а не булево — и сравнение с Истиной даст неожиданный результат. Это одна из самых частых ошибок начинающих.
Булево значение часто появляется как результат сравнения. Например, выражение Сумма > 1000 само по себе возвращает Истину или Ложь, и его можно сохранить в переменную:
КрупнаяПокупка = (СуммаДокумента > 100000);
// КрупнаяПокупка теперь содержит Истина или Ложь
Где используется булево: основные сценарии
Первый и самый частый сценарий — условия. Конструкция «Если...Тогда» проверяет именно булево выражение: если оно равно Истине, выполняется блок кода, если Ложь — блок пропускается.
Если ДокументПроведен Тогда
Сообщить("Документ уже проведён");
Иначе
Сообщить("Документ можно изменять");
КонецЕсли;
Второй сценарий — реквизиты объектов конфигурации. Когда в справочнике или документе на форме вы видите флажок (галочку), за ним почти всегда стоит реквизит типа Булево. Например, флажок «Архивный» у контрагента или «Не использовать в заказах» у номенклатуры.
Третий сценарий — возвращаемые значения функций. Функции-проверки принято называть со слов «Это», «Есть», «Можно»: ЭтоЮридическоеЛицо(), ЕстьОстатокНаСкладе(). Такая функция возвращает Истину или Ложь, и её можно вставлять прямо в условие без промежуточной переменной.
- 1Откройте конфигуратор и найдите нужный объект (справочник или документ)
- 2Добавьте новый реквизит и в свойстве «Тип» выберите «Булево»
- 3Задайте понятное имя, например «Отключен» или «ТребуетПроверки»
- 4Обновите конфигурацию базы данных (F7) и подтвердите изменения
- 5Добавьте реквизит на форму — он отобразится как флажок
Логические операции: И, ИЛИ, НЕ
Булевы значения можно комбинировать с помощью логических операторов. Оператор И возвращает Истину только когда оба условия истинны. Оператор ИЛИ — когда истинно хотя бы одно. Оператор НЕ переворачивает значение: Истина становится Ложью и наоборот.
Если Сумма > 50000 И КлиентПостоянный Тогда
ПрименитьСкидку();
КонецЕсли;
Если НЕ ДокументПроведен Тогда
Сообщить("Сначала проведите документ");
КонецЕсли;
При нескольких условиях используйте скобки, чтобы явно задать порядок вычисления. Выражение А И Б ИЛИ В без скобок читается трудно и легко приводит к ошибкам логики. Форма (А И Б) ИЛИ В однозначна и безопаснее.
Булево в запросах 1С
В языке запросов 1С булевы поля участвуют в условиях отбора. Если у справочника есть реквизит типа Булево, по нему можно фильтровать записи напрямую:
ВЫБРАТЬ
Номенклатура.Наименование
ИЗ
Справочник.Номенклатура КАК Номенклатура
ГДЕ
НЕ Номенклатура.ВАрхиве
Кроме реквизитов, в запросах есть конструкция ВЫБОР, которая позволяет сформировать булево значение вычислительно — например, пометить строки, где остаток меньше минимального. Учтите: в запросах значения пишутся как ИСТИНА и ЛОЖЬ, регистр не важен.
Также булево неявно присутствует в предопределённых свойствах: ПометкаУдаления и Проведен у документов — это тоже булевы поля, и отбор по ним в запросах используется постоянно.
Типичные ошибки при работе с булево
Самая распространённая ошибка — сравнение булева значения с Истиной через знак равенства: Если Флаг = Истина Тогда. Технически это работает, но избыточно: само значение Флаг уже является условием. Пишите просто Если Флаг Тогда — так короче и читается легче.
Вторая ошибка — путаница между булево и строкой. Значение "Истина" в кавычках — строка, и сравнение "Истина" = Истина даст Ложь. Особенно часто это всплывает при обмене данными, когда булево приходит из файла или веб-сервиса в виде текста и его забывают преобразовать.
Третья ошибка — использование булево там, где состояний больше двух. Если у объекта есть статусы «Новый», «В работе», «Завершён», «Отменён», то пытаться закодировать их набором флажков — плохое решение. Для этого существуют перечисления.
Когда булево подходит, а когда нужна альтернатива
Булево — правильный выбор, когда признак действительно двоичен и не расширится в будущем: «Активен/Неактивен», «Облагается налогом/Не облагается». Если есть вероятность, что появится третье состояние («На модерации», «Частично»), лучше сразу заложить перечисление.
Булево или альтернативы
Подходит для строго двух состояний: да/нет, включено/выключено. Не расширяется, если появится третье состояние
Для трёх и более статусов: «Новый», «В работе», «Завершён». Легко дополняется новыми значениями
Когда нужно хранить не факт, а величину или произвольное значение. Для флажков не используйте
Ещё одна граница: булево не хранит «неизвестно». Если бизнес-логика требует различать «да», «нет» и «не заполнено», одним булевым полем не обойтись — понадобится либо составной тип, либо перечисление со значением «Не указано».
Как проверить, что логика с булево работает правильно
Простейший способ проверки — отладчик конфигуратора. Поставьте точку останова на строке с условием, запустите отладку и посмотрите значение переменной в табло (Shift+F9). Вы увидите, чему равно выражение: Истина или Ложь.
Как проверить результат
Отображается «Булево», значение Истина или Ложь
Тип «Строка» — значение пришло извне и не преобразовано
Ветка «Если» выполняется при ожидаемых данных
Условие всегда Истина или всегда Ложь — ошибка в логике или в операторах
Флажок отображает реальное состояние объекта
Флажок не связан с реквизитом данных формы
При работе с составными условиями полезно временно вывести каждую часть через Сообщить() и убедиться, что каждое подусловие даёт ожидаемый результат. Это быстрее, чем гадать, почему итоговое выражение не срабатывает.
Что важно запомнить
Булево в 1С — тип с двумя значениями: Истина и Ложь. Пишется без кавычек, используется в условиях, флажках и запросах. Для более чем двух состояний применяйте перечисление.
Частые вопросы о булево в 1С
Чем отличается Истина от "Истина" в кавычках?
Истина без кавычек — это булево значение. "Истина" в кавычках — обычная строка текста. Сравнение строки с булевым значением даст Ложь, поэтому такая путаница ломает условия. При получении данных из файлов или веб-сервисов строку нужно явно преобразовывать в булево.
Можно ли писать True и False вместо Истина и Ложь?
Да, встроенный язык 1С поддерживает оба варианта: Истина/Ложь и True/False работают одинаково. В русскоязычных конфигурациях принято использовать русские синонимы — так код единообразнее.
Нужно ли писать «Если Флаг = Истина Тогда»?
Нет, это избыточно. Переменная типа Булево сама является условием, поэтому достаточно написать «Если Флаг Тогда». Для проверки на Ложь используйте «Если НЕ Флаг Тогда».
Какое значение у булева реквизита по умолчанию?
Новый реквизит типа Булево по умолчанию имеет значение Ложь. Если нужно, чтобы флажок был установлен по умолчанию, задайте это в коде — например, в обработчике «ПриСозданииНаСервере» или «ОбработкаЗаполнения».
Как отфильтровать список по булеву полю в запросе?
В секции ГДЕ укажите условие по полю: «ГДЕ НЕ Таблица.ПометкаУдаления» или «ГДЕ Таблица.ВАрхиве = ЛОЖЬ». Оба варианта корректны, первый короче. Значения в запросах пишутся как ИСТИНА и ЛОЖЬ.
Когда вместо булево нужно перечисление?
Когда возможных состояний больше двух или может появиться третье в будущем. Например, статус заказа («Новый», «В работе», «Отгружен», «Отменён») нельзя корректно выразить одним флажком — используйте перечисление, чтобы логика оставалась расширяемой.