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

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

Чекбокс в 1С: что это такое и как с ним работать

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

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

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

Работа с флажками требуется и пользователям, и разработчикам. Пользователю важно понимать, что означает конкретный флажок в форме документа или настройки, а разработчику — как добавить чекбокс в форму, привязать его к данным и обработать изменение в программном коде. Ниже разобраны оба сценария с конкретными примерами.

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

В платформе 1С:Предприятие элемент «флажок» — это поле формы, у которого вид установлен в «Поле флажка». Он отображает двоичное состояние: отметка есть (Истина) или отметки нет (Ложь). В некоторых случаях поддерживается и третье состояние — неопределённое, когда флажок отображается серым; оно используется, например, при групповом редактировании объектов с разными значениями одного реквизита.

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

С точки зрения хранения данных флажок не существует отдельно от реквизита. Значение сохраняется в реквизите объекта (справочника, документа, обработки) или в реквизите формы. Поэтому, если нужно, чтобы состояние чекбокса сохранялось между сеансами, его следует привязать к реквизиту объекта, а не к временному реквизиту формы.

Где флажки встречаются в типовых конфигурациях

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

В отчётах на СКД (системе компоновки данных) флажки появляются рядом с отборами, параметрами и полями: снятая отметка означает, что отбор или поле не участвует в формировании отчёта. Это стандартное поведение настроек СКД, и пользователю важно понимать: само наличие отбора в списке ещё не значит, что он применяется, — решает состояние флажка.

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

Флажок в шапке документаПризнак документа

Значение сохраняется в реквизите объекта и влияет на проведение или печать

Флажок в настройках отчётаУправление отбором или полем

Снятый флажок отключает отбор, даже если условие заполнено

Флажок в строке спискаОтметка для групповой операции

Действие применится только к отмеченным строкам

Серый флажокНеопределённое состояние

У выбранных объектов разные значения реквизита — типично для группового редактирования

Как добавить чекбокс в форму в конфигураторе

Для разработчика базовый сценарий выглядит так. Сначала создаётся реквизит типа «Булево» — у объекта конфигурации (например, у документа или справочника) либо как реквизит формы, если значение нужно только внутри формы. Затем реквизит перетаскивается из панели реквизитов в дерево элементов формы. Платформа автоматически выбирает вид «Поле флажка», потому что тип данных — Булево.

Если платформа создала поле ввода вместо флажка, вид можно сменить вручную: в свойствах элемента формы установить «Вид» = «Поле флажка». Для поля флажка также настраивается свойство «ПоложениеЗаголовка» — заголовок обычно располагают справа, чтобы форма выглядела привычно.

Для реквизита формы важно помнить: его значение живёт только пока открыта форма. Если нужно сохранить выбор пользователя между сеансами, используют реквизит объекта, хранилище общих настроек (ХранилищеОбщихНастроек) или константу — в зависимости от того, персональная это настройка или общая для всех пользователей.

Добавление флажка в управляемую форму
  1. 1
    Создайте реквизит объекта или формы с типом «Булево»
  2. 2
    Перетащите реквизит из панели «Реквизиты» в дерево элементов формы
  3. 3
    Убедитесь, что вид элемента — «Поле флажка», при необходимости измените вручную
  4. 4
    Настройте заголовок и его положение (обычно справа)
  5. 5
    Добавьте обработчик ПриИзменении, если нужно реагировать на переключение
  6. 6
    Откройте форму в режиме Предприятия и проверьте, что значение сохраняется и считывается

Как обработать значение флажка в коде

Значение чекбокса читается как обычный реквизит: через Объект.ИмяРеквизита в модуле формы объекта или через имя реквизита формы. Проверка выполняется простым условием: Если Объект.ИспользоватьСкидку Тогда ... КонецЕсли. Сравнивать с Истина явно (Если Флаг = Истина) не требуется, хотя такая запись тоже допустима и встречается в типовом коде.

Чтобы отреагировать на переключение флажка пользователем, у элемента формы создаётся обработчик события «ПриИзменении». Внутри него выполняется нужная логика: пересчёт итогов, изменение доступности других полей, заполнение связанных реквизитов. Например, при включении флажка «Цена включает НДС» типовые документы пересчитывают суммы табличной части.

Типичный пример управления доступностью: если флажок включён — поле ввода доступно, если выключен — заблокировано. Это делается установкой свойства Доступность или ТолькоПросмотр у связанного элемента формы в обработчике ПриИзменении, а также при открытии формы, чтобы начальное состояние соответствовало значению реквизита.

bsl
&НаКлиенте
Процедура ИспользоватьСкидкуПриИзменении(Элемент)
	Элементы.ПроцентСкидки.Доступность = Объект.ИспользоватьСкидку;
	Если НЕ Объект.ИспользоватьСкидку Тогда
		Объект.ПроцентСкидки = 0;
	КонецЕсли;
КонецПроцедуры

Флажки в отчётах и настройках СКД

В отчётах на системе компоновки данных флажки управляют использованием элементов настройки. Рядом с каждым отбором, полем, группировкой и параметром есть отметка «Использование». Снятый флажок означает, что элемент присутствует в настройках, но не применяется. Это удобно для сохранения нескольких вариантов отборов и быстрого переключения между ними без удаления условий.

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

Обратите внимание: если параметр типа Булево не включён в пользовательские настройки, пользователь его не увидит, а значение будет браться из настроек по умолчанию. Это частая причина жалоб «флажок есть, но отчёт не реагирует» — на самом деле пользователь меняет одну настройку, а в компоновке используется другая.

Типичные ошибки при работе с чекбоксами

Самая распространённая ошибка разработчика — флажок не связан с данными. Элемент формы создан, но свойство «ПутьКДанным» пустое: флажок нажимается, но значение никуда не записывается и при повторном открытии формы не восстанавливается. Проверяется это в свойствах элемента или попыткой закрыть и заново открыть форму.

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

Третья типичная ситуация — попытка хранить в булевом реквизите третье состояние. Тип Булево в 1С строго двоичен; «неопределённость» существует только как визуальное состояние флажка при групповом редактировании. Если бизнес-логика требует вариантов «Да / Нет / Не задано», нужен перечислимый тип или строка, а не флажок.

Типичные ошибки
01
Флажок без привязки к данным — значение теряется при закрытии формы
02
Нет инициализации доступности при открытии — форма выглядит неправильно до первого клика
03
Попытка хранить три состояния в Булево — данные искажаются, лучше использовать перечисление
04
Сравнение флажка со строкой «Истина» — условие никогда не срабатывает из-за несовпадения типов
05
Снятый флажок отбора в СКД принят за удалённый отбор — отчёт формируется с неожиданными данными

Как проверить, что флажок работает правильно

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

Далее проверяется реакция формы: при включении флажка связанные поля должны становиться доступными или заполняться, при выключении — блокироваться или очищаться (если это предусмотрено логикой). То же состояние должно отображаться сразу при открытии существующего объекта, без необходимости «дёргать» флажок.

Для отчётов контроль выполняется через сравнение результата: сформировать отчёт с включённым и выключенным параметром и убедиться, что данные меняются ожидаемым образом. Если результат идентичен — скорее всего, параметр не используется в схеме компоновки или его значение не доходит до запроса.

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

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

Сохранение значения
Норма

После записи и повторного открытия флажок в том же состоянии

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

Флажок сбрасывается — нет привязки к реквизиту объекта

Реакция формы
Норма

Связанные поля включаются и отключаются сразу при переключении и при открытии

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

Поля реагируют только после ручного переключения

Влияние на отчёт
Норма

Данные отчёта меняются при переключении параметра

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

Результат одинаковый — параметр не участвует в компоновке

Когда чекбокс не подходит: альтернативы

Флажок — правильный выбор только для независимых двоичных признаков. Если вариантов больше двух или они взаимоисключающие, нужны другие элементы. Выбор одного значения из списка реализуется полем переключателя или полем выбора, хранящим ссылку на перечисление. Множественный выбор из списка — таблицей значений с колонкой-флажком или списком значений с пометками.

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

Сравнение вариантов

Флажок (Булево)

Один независимый признак «да/нет». Не подходит для взаимоисключающих вариантов и трёх состояний

Переключатель

Выбор одного значения из 2–5 взаимоисключающих вариантов. Занимает больше места на форме

Поле выбора (перечисление)

Много вариантов или состояние «не задано». Требует создания перечисления или списка значений

Список значений с пометками

Множественный выбор из нескольких пунктов, например отметка объектов для обработки

Итог

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

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

Частые вопросы

Чем чекбокс отличается от переключателя в 1С?

Флажки независимы: каждый включается и выключается отдельно, и все могут быть включены одновременно. Переключатели работают группой — выбор одного автоматически сбрасывает остальные. Для признака «да/нет» используйте флажок, для выбора одного варианта из нескольких — переключатель или поле выбора.

Почему значение флажка не сохраняется после закрытия формы?

Чаще всего элемент формы не связан с реквизитом объекта: свойство «ПутьКДанным» пустое или ведёт к реквизиту формы, который существует только пока форма открыта. Привяжите флажок к реквизиту объекта и убедитесь, что объект записывается.

Может ли флажок в 1С иметь три состояния?

Тип Булево строго двоичен — Истина или Ложь. Серое «третье» состояние существует только визуально, например при групповом редактировании объектов с разными значениями. Если бизнес-логике нужно «Да/Нет/Не задано», используйте перечисление вместо флажка.

Как программно установить или снять флажок?

Флажок не имеет собственного значения — нужно изменить связанный реквизит: Объект.ИмяРеквизита = Истина. Форма автоматически отобразит новое состояние. Если после изменения нужно обновить доступность других полей, вызовите тот же код, что и в обработчике ПриИзменении.

Почему в отчёте флажок отбора установлен, но отбор не работает?

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

Как сделать поле доступным только при включённом флажке?

В обработчике ПриИзменении флажка установите свойство Доступность нужного элемента равным значению реквизита: Элементы.Поле.Доступность = Объект.Флаг. Тот же вызов добавьте при открытии формы, чтобы начальное состояние соответствовало сохранённому значению.