Флажок в 1С 8.3: установка мышью и в коде

· 9 мин

Содержание

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

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

Что такое флажок и где он встречается

Флажок (англ. checkbox) — элемент управляемой формы, связанный с реквизитом типа Булево. Квадрат с галочкой или без. Галочка = Истина, пустой квадрат = Ложь.

Встречается он почти везде:

  • 📄 в документах — «Проведён», «Оплачено», «Ручная корректировка»;
  • 📒 в справочниках — «Не используется», «Основной», «Группа»;
  • ⚙️ в настройках — галочки функциональности в разделе Администрирование;
  • 📊 в колонках списков — логические поля выводятся столбиком галочек;
  • 🧾 в отчётах — булево поле на макете рисуется как флажок.

Важно различать две вещи. Пользователь ставит флажок, чтобы изменить данные (отметить документ оплаченным). Разработчик добавляет флажок, чтобы вывести на форму реквизит. Механика одна, инструменты разные.

Что нужноКто делаетИнструмент
Отметить документ галочкойПользовательМышь или Пробел в форме
Включить возможность в программеПользовательГалочка в Администрирование
Поставить галочку из кодаРазработчикПрисваивание реквизиту
Добавить новый флажок на формуРазработчикКонфигуратор, реквизит Булево

Дальше идём по этим строкам сверху вниз.

Если квадратик серый и не нажимается — поле недоступно для редактирования. Это не ошибка: либо нет прав, либо флажок заблокирован по условию формы (например, после проведения).

Как поставить флажок вручную

Самый частый сценарий. Открыли карточку или документ, нашли нужную галочку, отметили.

  1. Откройте документ или элемент справочника двойным щелчком.
  2. Наведите курсор на квадрат слева от подписи флажка.
  3. Щёлкните левой кнопкой — появится галочка. Повторный щелчок её снимает.
  4. Запишите объект: Записать или Провести и закрыть.

С клавиатуры работает так же. Клавишей Tab перейдите на поле флажка (он получит рамку-выделение) и нажмите Пробел — состояние переключится. Удобно, когда заполняете форму не отрываясь от набора.

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

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

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

Отдельная ситуация — галочка, после которой «что-то появляется». Это флажки функциональных опций в разделе Администрирование. Поставили галочку «Учёт по нескольким складам» — в документах возникает поле склада; сняли — поле исчезает вместе со связанной командой. Такой флажок управляет не одной записью, а поведением всей базы:

  1. Откройте Администрирование (в БП 3.0 и ЗУП 3.1 — пункт верхнего меню).
  2. Зайдите в нужную группу настроек: Функциональность, Параметры учёта или профильный раздел.
  3. Отметьте галочку опции — интерфейс перестроится сразу, записывать объект не требуется.

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

Трёхпозиционный флажок: третье состояние

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

Третье состояние означает «не задано» или «частично». Например, в групповой настройке прав галочка на папке закрашена серым, если внутри часть объектов разрешена, а часть нет.

Пользователю тут делать нечего особенного: щёлкайте, пока не получите нужное состояние — обычно клики идут по кругу «пусто → галочка → серое». Разработчик включает третье состояние свойством поля КоличествоСостояний = 3 и тогда реквизит должен принимать Неопределено, а не только булево.

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

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

Теперь сторона разработчика. Главная мысль: флажок на форме — это картинка реквизита. Меняете не элемент формы, а сам реквизит булева типа.

Если реквизит принадлежит объекту (документу, справочнику), пишете в модуле формы:

// Поставить галочку
Объект.Оплачено = Истина;

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

// Переключить на противоположное
Объект.Оплачено = НЕ Объект.Оплачено;

Если это реквизит самой формы (не объекта), обращение короче — по имени реквизита:

ЕстьСкидка = Истина;

Элемент формы Элементы.Оплачено отвечает не за значение, а за вид: видимость, доступность, заголовок. Частая ошибка новичка — писать Элементы.Оплачено = Истина. Так значение не поставить. Через элемент управляют оформлением:

// Сделать флажок недоступным для ручной правки
Элементы.Оплачено.ТолькоПросмотр = Истина;

// Спрятать
Элементы.Оплачено.Видимость = Ложь;

Чтобы галочка появлялась автоматически, значение задают при создании: в обработчике ПриСозданииНаСервере для формы или в ОбработкаЗаполнения для нового документа.

Прочитать состояние флажка так же просто — реквизит сам по себе возвращает Истина или Ложь, поэтому его подставляют прямо в условие:

Если Объект.Оплачено Тогда
    Элементы.ДатаОплаты.Видимость = Истина;
Иначе
    Элементы.ДатаОплаты.Видимость = Ложь;
КонецЕсли;

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

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

Для трёхпозиционного флажка значение берут не только булево, но и Неопределено:

// Третье состояние — «не задано»
Объект.Признак = Неопределено;

Такой реквизит объявляют составного типа (Булево плюс допуск Неопределено), а элементу ставят КоличествоСостояний = 3.

Чтобы добавить новый флажок на форму, нужен Конфигуратор:

  1. Откройте форму объекта в Конфигураторе.
  2. На вкладке реквизитов добавьте реквизит типа Булево (объекту — через метаданные, форме — прямо в составе формы).
  3. Перетащите реквизит в дерево элементов формы — 1С сама создаст поле-флажок.
  4. При необходимости задайте заголовок и подсказку в свойствах элемента.
  5. Обновите конфигурацию базы данных (F7).
Добавляем флажок на форму — проверьте себя
Выполнено: 0 / 5

Флажок в колонке списка

В списках документов и справочников логические реквизиты выводятся колонкой флажков. Отметить элемент прямо в списке можно, если колонка редактируемая.

Чтобы вывести такую колонку в динамическом списке, разработчик добавляет булево поле в состав колонок формы списка. Для редактирования в самом списке у таблицы включают изменение по месту, но на практике отметку чаще ставят в карточке — надёжнее и не ломает отбор.

Если нужно проставить галочку сразу многим элементам, не открывайте каждый. Выделите строки с Ctrl или Shift, затем ищите в командной панели списка групповую команду изменения реквизитов (в типовых конфигурациях она есть у справочников и документов). Так один флажок ставится пачке объектов за раз.

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

Флажок в отчёте

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

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

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

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

Флажок в мобильном приложении

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

Для разработчика разницы в коде нет: читаете и пишете тот же реквизит объекта. Меняется только внешний вид элемента, который платформа подбирает под мобильный интерфейс сама. Если приложение построено на мобильном клиенте к обычной базе, флажки и их значения полностью совпадают с тем, что видно на компьютере.

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

Типичные ошибки

Разберём то, что реально ломается, без повтора шагов выше.

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

Отдельно про трёхпозиционный флажок: если реквизит объявлен как Булево, он не примет Неопределено. Для третьего состояния тип реквизита должен допускать Неопределено, а у элемента нужно задать КоличествоСостояний = 3. Иначе платформа выдаст ошибку приведения типа.

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

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