Содержание · 6 разделов

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

Понимание всех нюансов булева типа избавляет от множества ошибок при доработке конфигураций. В статье на конкретных примерах показаны: объявление переменных, преобразование строк и чисел, применение в запросах и системе компоновки данных, а также типичные промахи, которых легко избежать.

Материал рассчитан на разработчиков и администраторов «1С:Предприятие 8.3», уже знакомых со встроенным языком на начальном уровне.

Основы булева типа в 1С

Булевый тип во встроенном языке 1С представляет собой логическую величину. Объявить переменную такого типа можно явно: Перем Флаг Булево; либо присвоить ей значение Истина или Ложь в программном коде. Система автоматически распознаёт тип после первого присваивания.

Булево применяется в самых разных ситуациях:

  • Условные операторы: Если, Пока, Для каждого — везде, где требуется ветвление.
  • Свойства элементов форм: видимость, доступность, активность. Например, Кнопка.Видимость = Истина.
  • Параметры запросов и СКД: передача логических условий.
  • Методы объектов: часто возвращают булево для индикации успеха операции.

Логические операции НЕ, И, ИЛИ работают с булевыми операндами и порождают новый булевый результат. Порядок вычислений стандартный: сначала НЕ, затем И, потом ИЛИ. При необходимости группировки используют скобки.

Преобразование строки в булево

Встроенная функция Булево() принимает строку и возвращает соответствующее булево значение. Правила сопоставления зафиксированы в документации, но полезно держать под рукой краткую шпаргалку:

Строка (без учёта регистра)Результат
"Да"Истина
"Нет"Ложь
"Истина"Истина
"Ложь"Ложь
"1"Истина
"0"Ложь
"True"Истина
"False"Ложь
"" (пустая)Ложь

Если передать строку, не входящую в этот перечень (например «возможно»), функция выбросит исключение. Поэтому для надёжности часто используют ручное преобразование через сравнение: Результат = СокрЛП(Строка) = "Да" ИЛИ СокрЛП(Строка) = "1" …. Это даёт контроль над всеми возможными входными данными и позволяет задать значение по умолчанию.

Внимание

Осторожно с пробелами и регистром

Строки с лишними пробелами по краям (« Да» или «1 ») могут не распознаться функцией Булево() и приведут к ошибке. Перед преобразованием всегда обрезайте пробелы: Булево(СокрЛП(Строка)).

Преобразование числа в булево

Платформа 1С не содержит прямой операции приведения Числа к Булеву. Общепринятое правило: 0 — Ложь, любое ненулевое число — Истина. Реализуется проверкой: Результат = Число <> 0; или через условный оператор: Результат = ?(Число = 0, Ложь, Истина);.

Обратное преобразование (булево в число) выполняется функцией Число():

  • Число(Истина) возвращает 1
  • Число(Ложь) возвращает 0

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

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

В языке запросов 1С нет отдельного булева типа. Логические значения представлены числами: Истина — это 1, Ложь — 0. Это ключевое отличие от встроенного языка, которое надо помнить при написании запросов.

Пример использования в конструкции ВЫБОР:

  • ВЫБОР КОГДА Товар.ПометкаУдаления = 1 ТОГДА «Удалён» ИНАЧЕ «Активен» КОНЕЦ КАК Статус

В условиях отбора тоже следует сравнивать с числом: ГДЕ Товар.ПометкаУдаления = 0. Попытка написать = ИСТИНА приведёт к синтаксической ошибке, потому что литерала «ИСТИНА» в языке запросов не существует.

Для явного приведения поля к числовому типу можно использовать функцию ВЫРАЗИТЬ(Поле КАК Число), хотя обычно реквизиты булева типа автоматически интерпретируются как числа. При отладке результаты запроса будут содержать 1 или 0.

Практика

На практике часто встречается запись «ГДЕ ПолеБулево = ИСТИНА», что приводит к ошибке компиляции. Запомните: в запросе нет ИСТИНА или ЛОЖЬ — есть только 1 и 0. Лучше сразу писать ГДЕ Поле = 1 или ГДЕ Поле = 0.

Булево в СКД: настройка галочки

Система компоновки данных получает булевы поля из запроса в виде чисел (1/0). Чтобы в отчёте отображалась привычная галочка, в настройках поля СКД необходимо задать формат представления как «Булево». Тогда 1 превратится в отмеченный флажок, а 0 — в пустую ячейку.

Дополнительно можно указать текстовое представление через свойство «Формат»: например, «Да/Нет» или «Истина/Ложь». Это делается в диалоге настройки варианта отчёта, на вкладке «Выбранные поля».

Параметры СКД также могут быть булевого типа. При создании параметра в макете компоновки укажите «Тип значения» = Булево. Тогда в пользовательских настройках отобразится флажок, позволяющий включать или отключать условие отбора. Корректная работа такого параметра напрямую зависит от правильно заданного типа.

Запомнить

Подсказка

Если галочка в отчёте не отображается, проверьте формат поля в СКД. Он должен быть «Булево», а не «Число». Дополнительно можно задать представление «Да/Нет» для наглядности.

Типичные ошибки и как их избежать

При работе с булевым типом досадные промахи встречаются регулярно. Наиболее частые:

  • Сравнение булевой переменной с Неопределено без проверки. Если переменная может быть неопределена, сначала нужно вызвать ЗначениеЗаполнено(Перем), а уже потом анализировать её булево значение. Прямая проверка Если Перем = Истина Тогда… вызовет ошибку времени выполнения.
  • Передача строки с пробелами в Булево(). Строки наподобие « Да» или «1 » не распознаются. Решение: Булево(СокрЛП(Строка)).
  • Использование ключевых слов ИСТИНА и ЛОЖЬ в запросе. В запросе их нет — только числа. Компилятор не примет такой код.
  • Попытка прямого приведения числа к булеву через Булево(Число). Функция Булево() работает только со строкой. Для числа надо писать сравнение.
  • Забытая настройка формата в СКД. Цифры 1 и 0 вместо галочек — частая жалоба пользователей на недоделанные отчёты.

Если перечисленные нюансы вызывают трудности или требуется более глубокая доработка Вашей 1С-системы, специалисты Интеграции помогут с анализом и выполнением задач любой сложности. Мы работаем удалённо с клиентами по всей России.

Материал носит справочный характер и не является налоговой или юридической консультацией; для применения к Вашей ситуации согласуйте действия с бухгалтером или юристом.