К статье
Практический материал

Разработка и Конфигурация · 9 мин

Что такое булево в 1С простыми словами

Булево в 1С — тип данных с двумя значениями: Истина и Ложь. Разбираем простыми словами, как объявить переменную, использовать в условиях и избежать типичных ошибок.

Булево в 1С — это примитивный тип данных, который может принимать только два значения: Истина или Ложь. Название происходит от английского «Boolean» и встречается во всех языках программирования. Во встроенном языке 1С эти значения записываются русскими словами Истина и Ложь (или английскими True и False — оба варианта работают одинаково).

Проще всего представить булево как выключатель: он либо включён, либо выключен, третьего состояния нет. Такой тип идеально подходит для ответов на вопросы вида «да/нет»: проведён ли документ, является ли клиент юридическим лицом, включена ли скидка, прошла ли проверка.

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

Как объявить булеву переменную в 1С

Создать булеву переменную в 1С очень просто — достаточно присвоить ей значение Истина или Ложь. Явно объявлять тип не нужно: платформа сама определит его по присвоенному значению.

ПроверкаПройдена = Истина;

ЕстьСкидка = Ложь;

ДокументПроведен = Истина;

Обратите внимание: значения Истина и Ложь пишутся без кавычек. Если написать Переменная = "Истина";, то это будет уже строка, а не булево — и сравнение с Истиной даст неожиданный результат. Это одна из самых частых ошибок начинающих.

Булево значение часто появляется как результат сравнения. Например, выражение Сумма > 1000 само по себе возвращает Истину или Ложь, и его можно сохранить в переменную:

КрупнаяПокупка = (СуммаДокумента > 100000);

// КрупнаяПокупка теперь содержит Истина или Ложь

Где используется булево: основные сценарии

Первый и самый частый сценарий — условия. Конструкция «Если...Тогда» проверяет именно булево выражение: если оно равно Истине, выполняется блок кода, если Ложь — блок пропускается.

Если ДокументПроведен Тогда

Сообщить("Документ уже проведён");

Иначе

Сообщить("Документ можно изменять");

КонецЕсли;

Второй сценарий — реквизиты объектов конфигурации. Когда в справочнике или документе на форме вы видите флажок (галочку), за ним почти всегда стоит реквизит типа Булево. Например, флажок «Архивный» у контрагента или «Не использовать в заказах» у номенклатуры.

Третий сценарий — возвращаемые значения функций. Функции-проверки принято называть со слов «Это», «Есть», «Можно»: ЭтоЮридическоеЛицо(), ЕстьОстатокНаСкладе(). Такая функция возвращает Истину или Ложь, и её можно вставлять прямо в условие без промежуточной переменной.

Как создать булев реквизит в конфигураторе
  1. 1
    Откройте конфигуратор и найдите нужный объект (справочник или документ)
  2. 2
    Добавьте новый реквизит и в свойстве «Тип» выберите «Булево»
  3. 3
    Задайте понятное имя, например «Отключен» или «ТребуетПроверки»
  4. 4
    Обновите конфигурацию базы данных (F7) и подтвердите изменения
  5. 5
    Добавьте реквизит на форму — он отобразится как флажок

Логические операции: И, ИЛИ, НЕ

Булевы значения можно комбинировать с помощью логических операторов. Оператор И возвращает Истину только когда оба условия истинны. Оператор ИЛИ — когда истинно хотя бы одно. Оператор НЕ переворачивает значение: Истина становится Ложью и наоборот.

Если Сумма > 50000 И КлиентПостоянный Тогда

ПрименитьСкидку();

КонецЕсли;

Если НЕ ДокументПроведен Тогда

Сообщить("Сначала проведите документ");

КонецЕсли;

При нескольких условиях используйте скобки, чтобы явно задать порядок вычисления. Выражение А И Б ИЛИ В без скобок читается трудно и легко приводит к ошибкам логики. Форма (А И Б) ИЛИ В однозначна и безопаснее.

Булево в запросах 1С

В языке запросов 1С булевы поля участвуют в условиях отбора. Если у справочника есть реквизит типа Булево, по нему можно фильтровать записи напрямую:

ВЫБРАТЬ

Номенклатура.Наименование

ИЗ

Справочник.Номенклатура КАК Номенклатура

ГДЕ

НЕ Номенклатура.ВАрхиве

Кроме реквизитов, в запросах есть конструкция ВЫБОР, которая позволяет сформировать булево значение вычислительно — например, пометить строки, где остаток меньше минимального. Учтите: в запросах значения пишутся как ИСТИНА и ЛОЖЬ, регистр не важен.

Также булево неявно присутствует в предопределённых свойствах: ПометкаУдаления и Проведен у документов — это тоже булевы поля, и отбор по ним в запросах используется постоянно.

Типичные ошибки при работе с булево

Самая распространённая ошибка — сравнение булева значения с Истиной через знак равенства: Если Флаг = Истина Тогда. Технически это работает, но избыточно: само значение Флаг уже является условием. Пишите просто Если Флаг Тогда — так короче и читается легче.

Вторая ошибка — путаница между булево и строкой. Значение "Истина" в кавычках — строка, и сравнение "Истина" = Истина даст Ложь. Особенно часто это всплывает при обмене данными, когда булево приходит из файла или веб-сервиса в виде текста и его забывают преобразовать.

Третья ошибка — использование булево там, где состояний больше двух. Если у объекта есть статусы «Новый», «В работе», «Завершён», «Отменён», то пытаться закодировать их набором флажков — плохое решение. Для этого существуют перечисления.

Типичные ошибки
01
Запись значения в кавычках: "Истина" — это строка, а не булево, сравнения работают неожиданно
02
Избыточное сравнение «Если Флаг = Истина Тогда» вместо простого «Если Флаг Тогда»
03
Использование флажков вместо перечисления, когда состояний больше двух
04
Отсутствие скобок в сложных условиях с И, ИЛИ и НЕ — логика вычисляется не так, как ожидалось

Когда булево подходит, а когда нужна альтернатива

Булево — правильный выбор, когда признак действительно двоичен и не расширится в будущем: «Активен/Неактивен», «Облагается налогом/Не облагается». Если есть вероятность, что появится третье состояние («На модерации», «Частично»), лучше сразу заложить перечисление.

Булево или альтернативы

Булево

Подходит для строго двух состояний: да/нет, включено/выключено. Не расширяется, если появится третье состояние

Перечисление

Для трёх и более статусов: «Новый», «В работе», «Завершён». Легко дополняется новыми значениями

Число или строка

Когда нужно хранить не факт, а величину или произвольное значение. Для флажков не используйте

Ещё одна граница: булево не хранит «неизвестно». Если бизнес-логика требует различать «да», «нет» и «не заполнено», одним булевым полем не обойтись — понадобится либо составной тип, либо перечисление со значением «Не указано».

Как проверить, что логика с булево работает правильно

Простейший способ проверки — отладчик конфигуратора. Поставьте точку останова на строке с условием, запустите отладку и посмотрите значение переменной в табло (Shift+F9). Вы увидите, чему равно выражение: Истина или Ложь.

Контрольные точки

Как проверить результат

Тип переменной в отладчике
Норма

Отображается «Булево», значение Истина или Ложь

Тревожный признак

Тип «Строка» — значение пришло извне и не преобразовано

Срабатывание условия
Норма

Ветка «Если» выполняется при ожидаемых данных

Тревожный признак

Условие всегда Истина или всегда Ложь — ошибка в логике или в операторах

Значение реквизита на форме
Норма

Флажок отображает реальное состояние объекта

Тревожный признак

Флажок не связан с реквизитом данных формы

При работе с составными условиями полезно временно вывести каждую часть через Сообщить() и убедиться, что каждое подусловие даёт ожидаемый результат. Это быстрее, чем гадать, почему итоговое выражение не срабатывает.

Итог

Что важно запомнить

Булево в 1С — тип с двумя значениями: Истина и Ложь. Пишется без кавычек, используется в условиях, флажках и запросах. Для более чем двух состояний применяйте перечисление.

Частые вопросы о булево в 1С

Чем отличается Истина от "Истина" в кавычках?

Истина без кавычек — это булево значение. "Истина" в кавычках — обычная строка текста. Сравнение строки с булевым значением даст Ложь, поэтому такая путаница ломает условия. При получении данных из файлов или веб-сервисов строку нужно явно преобразовывать в булево.

Можно ли писать True и False вместо Истина и Ложь?

Да, встроенный язык 1С поддерживает оба варианта: Истина/Ложь и True/False работают одинаково. В русскоязычных конфигурациях принято использовать русские синонимы — так код единообразнее.

Нужно ли писать «Если Флаг = Истина Тогда»?

Нет, это избыточно. Переменная типа Булево сама является условием, поэтому достаточно написать «Если Флаг Тогда». Для проверки на Ложь используйте «Если НЕ Флаг Тогда».

Какое значение у булева реквизита по умолчанию?

Новый реквизит типа Булево по умолчанию имеет значение Ложь. Если нужно, чтобы флажок был установлен по умолчанию, задайте это в коде — например, в обработчике «ПриСозданииНаСервере» или «ОбработкаЗаполнения».

Как отфильтровать список по булеву полю в запросе?

В секции ГДЕ укажите условие по полю: «ГДЕ НЕ Таблица.ПометкаУдаления» или «ГДЕ Таблица.ВАрхиве = ЛОЖЬ». Оба варианта корректны, первый короче. Значения в запросах пишутся как ИСТИНА и ЛОЖЬ.

Когда вместо булево нужно перечисление?

Когда возможных состояний больше двух или может появиться третье в будущем. Например, статус заказа («Новый», «В работе», «Отгружен», «Отменён») нельзя корректно выразить одним флажком — используйте перечисление, чтобы логика оставалась расширяемой.