Содержание · 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С-системы, специалисты Интеграции помогут с анализом и выполнением задач любой сложности. Мы работаем удалённо с клиентами по всей России.
Материал носит справочный характер и не является налоговой или юридической консультацией; для применения к Вашей ситуации согласуйте действия с бухгалтером или юристом.









ОбсуждениеВопросы читателей и ответы эксперта · 3 веток