Флажок в 1С 8.3: как добавить на форму и настроить
Содержание
Флажок в 1С 8.3 — это поле булева типа на форме. Чтобы он появился, создайте реквизит с типом Булево, перетащите его в дерево элементов формы и при необходимости задайте вид и заголовок. Основная работа идёт в Конфигураторе, код нужен только для нестандартного поведения.
Галочка не ставится, поле выводится строкой, значение не сохраняется — почти всегда дело в типе реквизита или в том, что элемент не привязан к данным. Разберём весь путь: от булева реквизита до рабочего флажка на управляемой форме, со свойствами поля, управлением из кода и разбором сбоев.
В тексте — пути по дереву конфигурации, свойства поля флажка и готовые строки встроенного языка. Примеры даны для управляемых форм — это стандарт платформы 8.3.
Что такое флажок и булев тип данных
Флажок — визуальный элемент, который показывает и позволяет менять значение типа Булево. У булева типа ровно два значения: Истина и Ложь. Галочка стоит — значит Истина, снята — Ложь.
Сам по себе флажок ничего не хранит. Он привязывается к реквизиту: объекта (документа, справочника, регистра), формы или к константе. Платформа рисует галочку по текущему значению и записывает новое при клике.
Запомните связку: данные хранит реквизит типа Булево, рисует их поле флажка. Если перепутать тип реквизита, поле получится текстовым, и никакой галочки не будет.
Третьего состояния у булева типа нет. Если по логике нужно «да / нет / не задано», булева реквизита не хватит — понадобится отдельный реквизит или тип, допускающий Неопределено.
Шаг 1. Создаём булев реквизит объекта
Сначала решите, где живёт значение. Чаще всего это реквизит объекта — тогда галочка сохраняется в базе вместе с документом или элементом справочника.
Порядок в Конфигураторе:
- Откройте дерево конфигурации (
Конфигурация → Открыть конфигурацию). - Найдите нужный объект, например
Справочники → КонтрагентыилиДокументы → ЗаказПокупателя. - Разверните ветку
Реквизиты, правой кнопкой —Добавить. - В свойствах нового реквизита задайте имя латиницей без пробелов, например
СогласованоилиУчитыватьВОтчетах. - В свойстве
ТипвыберитеБулево. - Задайте синоним — читаемое название, которое увидит пользователь («Согласовано»).
Имя реквизита — это идентификатор для кода, синоним — подпись для человека. Разделяйте их: имя латиницей (Soglasovano или Согласовано кириллицей — оба варианта допустимы в 8.3), синоним — обычным текстом.
Тип Булево нужно поставить до того, как вы начнёте выводить реквизит на форму. Если создать реквизит со строковым или составным типом, а потом перетащить его, поле получится вводом текста, и менять тип придётся с пересозданием элемента.
Если значение не нужно хранить в базе, а требуется только на время работы формы (например, флажок «Показать все строки»), создавайте реквизит не у объекта, а у формы — об этом ниже.
Шаг 2. Выводим флажок на форму
Реквизит создан, но на экране его ещё нет. Нужно добавить элемент на форму.
- Откройте форму объекта: ветка объекта →
Формы→ двойной клик по нужной форме (например,ФормаЭлементаилиФормаДокумента). - Редактор формы делится на панели: слева вверху —
Элементы, справа вверху —Реквизиты. - В панели
Реквизитыраскройте реквизитОбъект— внутри будут все реквизиты объекта, включая ваш булев. - Перетащите булев реквизит из панели
Реквизитыв деревоЭлементы.
Платформа сама создаст элемент типа Поле и подставит в его свойство ПутьКДанным ссылку на реквизит (Объект.Согласовано). Для булева реквизита вид поля автоматически станет «Поле флажка».
Если вы добавляете элемент вручную (Добавить → Поле в панели «Элементы»), обязательно заполните ПутьКДанным — без привязки к данным флажок работать не будет.
Перетаскивание надёжнее ручного добавления: платформа сразу ставит правильный вид поля и связывает его с реквизитом. Ручной способ оставьте для случаев, когда нужен нестандартный порядок элементов.
Флажок для реквизита формы
Когда галочка нужна только на время сеанса и не хранится в базе, добавьте реквизит не объекту, а форме:
- В панели
Реквизитыформы нажмитеДобавить. - Задайте имя и тип
Булево. - Перетащите реквизит формы в
Элементы.
Такой флажок удобен для управления отображением: «Показывать закрытые заказы», «Группировать по складам». Значение живёт, пока форма открыта, и обнуляется при следующем открытии, если не задать его в коде.
Настройка вида, заголовка и поведения флажка
У поля флажка есть несколько свойств, которые меняют внешний вид и поведение. Основные — в таблице.
| Свойство | Что делает | Значения |
|---|---|---|
ВидФлажка | Внешний вид элемента | Авто, Флажок, Тумблер |
Заголовок | Подпись рядом с галочкой | произвольный текст |
РасположениеЗаголовка | Где стоит подпись | Авто, Лево, Право, Верх, Низ, Нет |
ТолькоПросмотр | Запрет изменения | Истина / Ложь |
Доступность | Активность элемента | Истина / Ложь |
Видимость | Показывать элемент или нет | Истина / Ложь |
Разберём, чем отличаются похожие свойства.
Флажок или тумблер. Свойство ВидФлажка переключает картинку: Флажок — классическая галочка в квадрате, Тумблер — переключатель вкл/выкл. Данные и код при этом одинаковые — меняется только отрисовка. Значение Авто оставляет выбор платформе.
Заголовок и его расположение. По умолчанию подпись берётся из синонима реквизита. Свойство Заголовок переопределяет её, а РасположениеЗаголовка двигает текст относительно галочки. Если поставить Нет, подпись исчезнет — так делают, когда флажок стоит в колонке таблицы с собственной шапкой.
ТолькоПросмотр против Доступности. Оба запрещают менять значение, но по-разному:
ТолькоПросмотр = Истина— галочку видно чётко, но клик не меняет её. Значение читаемо.Доступность = Ложь— элемент становится серым (неактивным), сигнал «сейчас недоступно».
Для флажка, который зависит от другого поля, обычно управляют Доступностью, а не ТолькоПросмотром — так пользователю понятнее, что поле временно заблокировано.
Значение по умолчанию у булева реквизита без установки — Ложь. Отдельного свойства «значение по умолчанию» у реквизита справочника нет. Нужна галочка, включённая изначально, — задайте её в коде (см. ниже).
Управление состоянием флажка из кода
Прочитать и записать значение флажка — это работа с реквизитом напрямую. Элемент формы при этом не нужен.
Установить значение:
// В модуле формы
Объект.Согласовано = Истина;
// Снять галочку
Объект.Согласовано = Ложь;
Прочитать и ветвить логику:
Если Объект.Согласовано Тогда
Сообщить("Документ согласован");
Иначе
Сообщить("Требуется согласование");
КонецЕсли;
Обработчик ПриИзменении
Чтобы при клике по флажку что-то происходило — открывалось поле, пересчитывалась сумма, — используйте событие ПриИзменении. Выделите поле на форме, в свойствах найдите событие ПриИзменении и нажмите на лупу — платформа создаст процедуру-обработчик на клиенте.
&НаКлиенте
Процедура СогласованоПриИзменении(Элемент)
Элементы.ДатаСогласования.Доступность = Объект.Согласовано;
КонецПроцедуры
Здесь при включении флажка Согласовано поле ДатаСогласования становится активным, при снятии — блокируется.
Программная установка значения НЕ вызывает событие ПриИзменении. Если вы написали Объект.Согласовано = Истина; в коде, обработчик не сработает. Выносите нужную логику в отдельную процедуру и вызывайте её и из обработчика, и после программного изменения.
Управление доступностью и видимостью
Из кода можно скрывать флажок или блокировать его в зависимости от условий:
// Сделать только для чтения
Элементы.Согласовано.ТолькоПросмотр = Истина;
// Скрыть элемент
Элементы.Согласовано.Видимость = Ложь;
// Заблокировать (серый вид)
Элементы.Согласовано.Доступность = Ложь;
Обратите внимание на разницу обращений: к значению идём через Объект.ИмяРеквизита, а к свойствам элемента — через Элементы.ИмяЭлемента.
Начальное значение
Булев реквизит без установки равен Ложь. Если нужна включённая галочка для нового объекта:
// В модуле объекта документа
Процедура ОбработкаЗаполнения(ДанныеЗаполнения, СтандартнаяОбработка)
НачислятьПремию = Истина;
КонецПроцедуры
Для реквизита формы начальное значение удобно задать в обработчике ПриСозданииНаСервере.
Флажок в документе, справочнике и настройках
Где именно создавать булев реквизит, зависит от того, что галочка должна означать.
- 📄 Реквизит документа — свойство конкретного документа: «Проведён вручную», «Учитывать в расчёте». Хранится и участвует в проводках и движениях.
- 📒 Реквизит справочника — признак элемента: «Основной», «Архивный», «Согласован». Остаётся с элементом навсегда.
- ⚙️ Константа типа
Булево— глобальная настройка на всю базу: «Вести учёт по складам». Константу тоже выводят флажком, обычно на форме настроек. - 🖥 Реквизит формы — временный флажок управления отображением, в базе не хранится.
Флажок в колонке табличной части делают так же: добавляют реквизит Булево в табличную часть, затем перетаскивают его в таблицу на форме. Поле в колонке автоматически станет флажком, а заголовок возьмётся из шапки колонки.
В динамических списках и отчётах на основе запроса поле флажка обычно только показывает значение из данных и не редактируется — для ввода галочка должна стоять на форме объекта или в реквизите формы с обработчиком.
Пример: флажок «Согласовано» в документе
Соберём рабочий флажок с нуля на примере документа «Заказ покупателя», где нужна галочка «Согласовано» и зависящая от неё дата.
- В документе создаём реквизит
Согласованос типомБулевои реквизитДатаСогласованияс типомДата. - Открываем форму документа, перетаскиваем оба реквизита из панели
РеквизитывЭлементы. - У поля
Согласованов свойствеВидФлажкаставимФлажок, заголовок оставляем из синонима. - Создаём обработчик
ПриИзменениидля флажка.
Логика: пока галочка не стоит, поле даты заблокировано; при включении — открывается и заполняется.
&НаКлиенте
Процедура СогласованоПриИзменении(Элемент)
Элементы.ДатаСогласования.Доступность = Объект.Согласовано;
Если Объект.Согласовано И НЕ ЗначениеЗаполнено(Объект.ДатаСогласования) Тогда
Объект.ДатаСогласования = ТекущаяДатаСеанса();
КонецЕсли;
КонецПроцедуры
Чтобы при открытии уже согласованного документа поле даты было активным, повторите установку доступности в ПриСозданииНаСервере:
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Элементы.ДатаСогласования.Доступность = Объект.Согласовано;
КонецПроцедуры
Теперь флажок управляет связанным полем, а дата проставляется автоматически. Значение Согласовано сохраняется в базе вместе с документом и доступно в запросах, отборах и проводках.
Частые ошибки с флажком и как их устранить
Большинство проблем сводится к типу реквизита и привязке к данным. Ниже — симптом и что проверить.
Булево. Откройте свойства реквизита, поставьте тип Булево и заново выведите элемент на форму.ТолькоПросмотр либо снято свойство Доступность. Проверьте свойства поля и права роли пользователя на реквизит.Элементы, либо у поля Видимость = Ложь. Добавьте элемент и включите видимость.ПутьКДанным элемента.ПриСозданииНаСервере или храните признак в реквизите объекта.Частые вопросы
Чем отличается флажок от тумблера?
ВидФлажка. Флажок — классическая галочка, тумблер — переключатель вкл/выкл. Данные и код при этом одинаковые.Можно ли сделать флажок с тремя состояниями?
Истина и Ложь. Если нужно третье состояние «не задано», используйте отдельный реквизит или тип, допускающий значение Неопределено.Как сделать флажок доступным только для чтения?
ТолькоПросмотр у поля в Конфигураторе или задайте из кода: Элементы.ИмяПоля.ТолькоПросмотр = Истина;.Почему флажок в отчёте или списке не редактируется?
Как включить флажок по умолчанию?
ОбработкаЗаполнения, для формы — в ПриСозданииНаСервере. Булев реквизит без установки равен Ложь.