Флажок в 1С 8.3: как добавить на форму и настроить

· 9 мин

Содержание

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

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

В тексте — пути по дереву конфигурации, свойства поля флажка и готовые строки встроенного языка. Примеры даны для управляемых форм — это стандарт платформы 8.3.

Что такое флажок и булев тип данных

Флажок — визуальный элемент, который показывает и позволяет менять значение типа Булево. У булева типа ровно два значения: Истина и Ложь. Галочка стоит — значит Истина, снята — Ложь.

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

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

Третьего состояния у булева типа нет. Если по логике нужно «да / нет / не задано», булева реквизита не хватит — понадобится отдельный реквизит или тип, допускающий Неопределено.

Шаг 1. Создаём булев реквизит объекта

Сначала решите, где живёт значение. Чаще всего это реквизит объекта — тогда галочка сохраняется в базе вместе с документом или элементом справочника.

Порядок в Конфигураторе:

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

Имя реквизита — это идентификатор для кода, синоним — подпись для человека. Разделяйте их: имя латиницей (Soglasovano или Согласовано кириллицей — оба варианта допустимы в 8.3), синоним — обычным текстом.

Тип Булево нужно поставить до того, как вы начнёте выводить реквизит на форму. Если создать реквизит со строковым или составным типом, а потом перетащить его, поле получится вводом текста, и менять тип придётся с пересозданием элемента.

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

Шаг 2. Выводим флажок на форму

Реквизит создан, но на экране его ещё нет. Нужно добавить элемент на форму.

  1. Откройте форму объекта: ветка объекта → Формы → двойной клик по нужной форме (например, ФормаЭлемента или ФормаДокумента).
  2. Редактор формы делится на панели: слева вверху — Элементы, справа вверху — Реквизиты.
  3. В панели Реквизиты раскройте реквизит Объект — внутри будут все реквизиты объекта, включая ваш булев.
  4. Перетащите булев реквизит из панели Реквизиты в дерево Элементы.

Платформа сама создаст элемент типа Поле и подставит в его свойство ПутьКДанным ссылку на реквизит (Объект.Согласовано). Для булева реквизита вид поля автоматически станет «Поле флажка».

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

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

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

Когда галочка нужна только на время сеанса и не хранится в базе, добавьте реквизит не объекту, а форме:

  1. В панели Реквизиты формы нажмите Добавить.
  2. Задайте имя и тип Булево.
  3. Перетащите реквизит формы в Элементы.

Такой флажок удобен для управления отображением: «Показывать закрытые заказы», «Группировать по складам». Значение живёт, пока форма открыта, и обнуляется при следующем открытии, если не задать его в коде.

Настройка вида, заголовка и поведения флажка

У поля флажка есть несколько свойств, которые меняют внешний вид и поведение. Основные — в таблице.

СвойствоЧто делаетЗначения
ВидФлажкаВнешний вид элементаАвто, Флажок, Тумблер
ЗаголовокПодпись рядом с галочкойпроизвольный текст
РасположениеЗаголовкаГде стоит подписьАвто, Лево, Право, Верх, Низ, Нет
ТолькоПросмотрЗапрет измененияИстина / Ложь
ДоступностьАктивность элементаИстина / Ложь
ВидимостьПоказывать элемент или нетИстина / Ложь

Разберём, чем отличаются похожие свойства.

Флажок или тумблер. Свойство ВидФлажка переключает картинку: Флажок — классическая галочка в квадрате, Тумблер — переключатель вкл/выкл. Данные и код при этом одинаковые — меняется только отрисовка. Значение Авто оставляет выбор платформе.

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

ТолькоПросмотр против Доступности. Оба запрещают менять значение, но по-разному:

  • ТолькоПросмотр = Истина — галочку видно чётко, но клик не меняет её. Значение читаемо.
  • Доступность = Ложь — элемент становится серым (неактивным), сигнал «сейчас недоступно».

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

Значение по умолчанию у булева реквизита без установки — Ложь. Отдельного свойства «значение по умолчанию» у реквизита справочника нет. Нужна галочка, включённая изначально, — задайте её в коде (см. ниже).

Управление состоянием флажка из кода

Прочитать и записать значение флажка — это работа с реквизитом напрямую. Элемент формы при этом не нужен.

Установить значение:

// В модуле формы
Объект.Согласовано = Истина;

// Снять галочку
Объект.Согласовано = Ложь;

Прочитать и ветвить логику:

Если Объект.Согласовано Тогда
    Сообщить("Документ согласован");
Иначе
    Сообщить("Требуется согласование");
КонецЕсли;

Обработчик ПриИзменении

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

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

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

Программная установка значения НЕ вызывает событие ПриИзменении. Если вы написали Объект.Согласовано = Истина; в коде, обработчик не сработает. Выносите нужную логику в отдельную процедуру и вызывайте её и из обработчика, и после программного изменения.

Управление доступностью и видимостью

Из кода можно скрывать флажок или блокировать его в зависимости от условий:

// Сделать только для чтения
Элементы.Согласовано.ТолькоПросмотр = Истина;

// Скрыть элемент
Элементы.Согласовано.Видимость = Ложь;

// Заблокировать (серый вид)
Элементы.Согласовано.Доступность = Ложь;

Обратите внимание на разницу обращений: к значению идём через Объект.ИмяРеквизита, а к свойствам элемента — через Элементы.ИмяЭлемента.

Начальное значение

Булев реквизит без установки равен Ложь. Если нужна включённая галочка для нового объекта:

// В модуле объекта документа
Процедура ОбработкаЗаполнения(ДанныеЗаполнения, СтандартнаяОбработка)
    НачислятьПремию = Истина;
КонецПроцедуры

Для реквизита формы начальное значение удобно задать в обработчике ПриСозданииНаСервере.

Флажок в документе, справочнике и настройках

Где именно создавать булев реквизит, зависит от того, что галочка должна означать.

  • 📄 Реквизит документа — свойство конкретного документа: «Проведён вручную», «Учитывать в расчёте». Хранится и участвует в проводках и движениях.
  • 📒 Реквизит справочника — признак элемента: «Основной», «Архивный», «Согласован». Остаётся с элементом навсегда.
  • ⚙️ Константа типа Булево — глобальная настройка на всю базу: «Вести учёт по складам». Константу тоже выводят флажком, обычно на форме настроек.
  • 🖥 Реквизит формы — временный флажок управления отображением, в базе не хранится.

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

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

Пример: флажок «Согласовано» в документе

Соберём рабочий флажок с нуля на примере документа «Заказ покупателя», где нужна галочка «Согласовано» и зависящая от неё дата.

  1. В документе создаём реквизит Согласовано с типом Булево и реквизит ДатаСогласования с типом Дата.
  2. Открываем форму документа, перетаскиваем оба реквизита из панели Реквизиты в Элементы.
  3. У поля Согласовано в свойстве ВидФлажка ставим Флажок, заголовок оставляем из синонима.
  4. Создаём обработчик ПриИзменении для флажка.

Логика: пока галочка не стоит, поле даты заблокировано; при включении — открывается и заполняется.

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

Чтобы при открытии уже согласованного документа поле даты было активным, повторите установку доступности в ПриСозданииНаСервере:

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

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

Частые ошибки с флажком и как их устранить

Большинство проблем сводится к типу реквизита и привязке к данным. Ниже — симптом и что проверить.

Диагностика: выберите симптом

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

Чем отличается флажок от тумблера?
Это один элемент «Поле флажка» с разным свойством ВидФлажка. Флажок — классическая галочка, тумблер — переключатель вкл/выкл. Данные и код при этом одинаковые.
Можно ли сделать флажок с тремя состояниями?
Булев тип хранит только Истина и Ложь. Если нужно третье состояние «не задано», используйте отдельный реквизит или тип, допускающий значение Неопределено.
Как сделать флажок доступным только для чтения?
Поставьте свойство ТолькоПросмотр у поля в Конфигураторе или задайте из кода: Элементы.ИмяПоля.ТолькоПросмотр = Истина;.
Почему флажок в отчёте или списке не редактируется?
Поле на основе запроса обычно только отображает значение. Для ввода флажок должен стоять на форме объекта или быть реквизитом формы с обработчиком.
Как включить флажок по умолчанию?
Для нового документа задайте значение в процедуре ОбработкаЗаполнения, для формы — в ПриСозданииНаСервере. Булев реквизит без установки равен Ложь.
Можно ли сделать флажок на обычной (неуправляемой) форме?
Да, принцип тот же: булев реквизит плюс элемент управления «Флажок». Отличаются только названия панелей редактора форм и часть свойств.