Поле флажка в 1С 8.3: как правильно назвать галочку и управлять ею в форме, таблице и отчёте
Содержание
Галочка в 1С официально называется флажок. В управляемой форме 1С 8.3 это элемент «Поле формы» с видом ПолеФлажка, а в обычных формах и в 1С 7.7 — элемент «Флажок». За флажком почти всегда стоит реквизит типа Булево: галочка стоит — Истина, снята — Ложь.
Путаница возникает из-за того, что «галочкой» пользователи называют ещё три разные вещи: зелёную отметку «проведён» в списке документов, пометку в списке значений и нажатую кнопку в командной панели. У каждой из них своё название в платформе, и настраиваются они в разных местах.
Как галочку называют в терминах платформы 1С:Предприятие
В документации, в конфигураторе и в коде слово «галочка» не встречается. Разработчику и консультанту стоит говорить так, как написано в свойствах элементов, — тогда вас поймут с первого раза и найдут нужное в справке.
| Что видит пользователь | Правильное название | Где живёт |
|---|---|---|
| Квадратик с галочкой в карточке, настройках, параметрах отчёта | Поле флажка (ВидПоляФормы.ПолеФлажка) | Управляемая форма |
| Тот же квадратик в старом интерфейсе | Элемент управления «Флажок» | Обычная форма 8.x, 7.7 |
| Галочка в колонке табличной части | Поле флажка внутри колонки элемента «Таблица» | Управляемая форма |
| Отметка у строки списка значений | Пометка элемента (ЭлементСпискаЗначений.Пометка) | Список значений |
| «Залипшая» кнопка в командной панели | Кнопка со свойством Пометка | Командная панель формы |
| Пиктограмма документа с зелёной отметкой | Картинка состояния «Проведён» | Список документов |
Последняя строка — это не элемент управления, а изображение. Щёлкнуть по нему и снять галочку нельзя: она показывает, что у документа Проведен = Истина. Красный крестик рядом — пометка удаления.
Если пользователь пишет «у меня пропала галочка у документа», почти всегда речь о пиктограмме проведения. Документ отменили или он не провёлся при записи. Флажки формы тут ни при чём.
Если вы пишете код на английском варианте встроенного языка или ищете ответ на зарубежных форумах, то поле флажка — FormFieldType.CheckBoxField, а свойство вида — CheckBoxType. Переключатель — RadioButtonField.
Пользователь типовой конфигурации чаще всего встречает флажки в настройках программы. В БП 3.0 целый раздел Администрирование → Функциональность состоит из галочек по вкладкам: сняли флажок — пропали связанные документы и поля. Это обычные поля флажка, привязанные к константам.
Поле флажка в управляемой форме и его свойства
Поле флажка создают перетаскиванием реквизита типа Булево из дерева реквизитов в дерево элементов формы. Платформа сама подбирает вид поля: для булевого реквизита — флажок. Если подставилось поле ввода, вид меняют в палитре свойств элемента, свойство Вид.
Свойства, которые реально пригодятся:
- 🔘 Вид флажка —
Авто,ФлажокилиВыключатель. Выключатель рисуется как ползунок «вкл/выкл», как в мобильных приложениях. - 🏷️ Заголовок и Положение заголовка — текст рядом с галочкой и с какой стороны он стоит. Для флажков привычно положение справа.
- 🔢 Три состояния — разрешает третье, «неопределённое» состояние. Работает с реквизитом типа
Число: 0 — снят, 1 — установлен, 2 — неопределённое. - 🔒 Только просмотр и Доступность — запрет на изменение. Первое оставляет флажок ярким, второе делает его серым.
- 👁️ Видимость — скрывает элемент целиком.
- ⚙️ Событие
ПриИзменении— срабатывает сразу после щелчка. Здесь обычно включают и выключают зависимые поля.
Подсказку к флажку задают в свойстве Подсказка и выбирают способ показа в Отображение подсказки. Для флажков с неочевидным смыслом («Учитывать в базе НДС», «Не облагается») лучше выводить подсказку кнопкой со знаком вопроса: на форме не будет лишнего текста.
Флажок в типовой конфигурации (БП 3.0, ЗУП 3.1, УТ 11) не правят напрямую в основной конфигурации. Для доработки формы используйте расширение конфигурации: так обновления встанут без ручного сравнения.
Флажок в обычных формах
В обычных формах (толстый клиент, старые конфигурации вроде УПП и БП 2.0) галочка — отдельный тип элемента управления Флажок. Он не «поле с видом», а самостоятельный элемент. Данные к нему привязывают свойством Данные, а текущее состояние читают через ЭлементыФормы.ИмяФлажка.Значение.
Свойство «Три состояния» есть и здесь, с тем же смыслом. Обработчик изменения называется так же — ПриИзменении. При переводе формы на управляемую флажок превращается в поле формы с видом ПолеФлажка, а обращения через ЭлементыФормы приходится переписывать на Элементы и работу с реквизитами.
Флажок, переключатель и кнопка: в чём разница
Все три элемента позволяют «выбрать», поэтому их путают в постановке задачи. Разница — в числе вариантов и в том, что хранится в данных.
| Элемент | Вид поля / тип | Сколько вариантов | Что хранится | Когда выбирать |
|---|---|---|---|---|
| Флажок | ПолеФлажка | 2 (или 3 с «Три состояния») | Булево или Число | Да/нет: «Оплачено», «Не используется» |
| Переключатель | ПолеПереключателя | 2 и больше, выбран ровно один | Перечисление, число, строка | Взаимоисключающие варианты: «Система налогообложения» |
| Тумблер | ПолеПереключателя, вид «Тумблер» | 2 и больше | То же, что у переключателя | Компактная полоса кнопок: «День / Неделя / Месяц» |
| Кнопка с пометкой | КнопкаФормы, свойство Пометка | 2 | Ничего: состояние живёт в форме | Режим отображения: «Показывать архивные» |
Практическое правило простое. Если ответ на вопрос «да или нет» — флажок. Если вариантов больше двух или у каждого варианта есть своё имя — переключатель. Если это не данные объекта, а режим просмотра формы — кнопка с пометкой.
Частая ошибка проектирования — два флажка «Наличные» и «Безналичные» вместо одного переключателя. Пользователь ставит оба или снимает оба, и коду приходится разбирать четыре комбинации вместо двух.
У кнопки с пометкой состояние меняют сами в обработчике команды:
&НаКлиенте
Процедура ПоказыватьАрхивные(Команда)
Элементы.ФормаПоказыватьАрхивные.Пометка = Не Элементы.ФормаПоказыватьАрхивные.Пометка;
ОбновитьОтборСписка(Элементы.ФормаПоказыватьАрхивные.Пометка);
КонецПроцедуры
Платформа сама не переключает пометку кнопки: без первой строки кнопка не «залипнет».
Как управлять флажком из кода
Флажок — это отображение реквизита. Поэтому в коде меняют не элемент, а данные, к которым он привязан через Путь к данным.
Установить и снять галочку
&НаКлиенте
Процедура ОтметитьОплату(Команда)
Объект.Оплачено = Истина; // галочка появится сразу
КонецПроцедуры
Для реквизита формы (не объекта) пишут без Объект.: ПоказыватьВсе = Ложь;.
Включить зависимое поле по флажку
&НаКлиенте
Процедура ОплаченоПриИзменении(Элемент)
Элементы.ДатаОплаты.Доступность = Объект.Оплачено;
КонецПроцедуры
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Элементы.ДатаОплаты.Доступность = Объект.Оплачено;
КонецПроцедуры
Вторая процедура нужна, чтобы форма открывалась в правильном состоянии. Без неё поле будет доступно, пока пользователь не щёлкнет флажок.
Добавить флажок программно
Если флажок нужен только в некоторых случаях, его создают при открытии формы. Сначала реквизит, потом элемент:
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Добавляемые = Новый Массив;
Добавляемые.Добавить(Новый РеквизитФормы("ТолькоМои", Новый ОписаниеТипов("Булево")));
ИзменитьРеквизиты(Добавляемые);
Поле = Элементы.Добавить("ТолькоМои", Тип("ПолеФормы"));
Поле.Вид = ВидПоляФормы.ПолеФлажка;
Поле.ПутьКДанным = "ТолькоМои";
Поле.Заголовок = "Только мои документы";
Поле.УстановитьДействие("ПриИзменении", "ТолькоМоиПриИзменении");
КонецПроцедуры
Процедуру ТолькоМоиПриИзменении нужно описать в модуле формы, иначе платформа выдаст ошибку при щелчке.
Отметить все строки табличной части
&НаКлиенте
Процедура ОтметитьВсе(Команда)
Для Каждого Строка Из Объект.Товары Цикл
Строка.Отметка = Истина;
КонецЦикла;
КонецПроцедуры
Команду «Снять все» делают так же, со значением Ложь. Кнопки вешают на командную панель таблицы.
Галочки в табличных частях, списках и отчётах
Табличная часть и таблица значений
Колонка с реквизитом Булево в элементе «Таблица» автоматически получает поле флажка. Щёлкать можно прямо в строке, без перехода в режим редактирования. Если колонка узкая и заголовок не помещается, включите у колонки показ картинки в шапке вместо текста — ширина сократится до размера галочки.
Динамический список
В списке справочника или журнала документов булевый реквизит тоже выводится галочкой. Но динамический список доступен только для чтения: снять галочку щелчком в строке нельзя. Меняют значение командой, которая на сервере открывает объект, правит реквизит и записывает его. После записи список обновляют Элементы.Список.Обновить().
Список значений с пометками
У списка значений у каждого элемента есть свойство Пометка. Это удобно для окон «выберите организации, по которым строить отчёт». Метод ОтметитьЭлементы() открывает готовое окно с галочками; он работает только на клиенте.
&НаКлиенте
Процедура ВыбратьВидыОплат(Команда)
Список = Новый СписокЗначений;
Список.Добавить("Наличные", , Истина); // третий параметр — пометка
Список.Добавить("Безналичные");
Оповещение = Новый ОписаниеОповещения("ПослеОтметки", ЭтотОбъект, Список);
Список.ПоказатьОтметкуЭлементов(Оповещение, "Виды оплат");
КонецПроцедуры
В управляемом приложении используют немодальный вариант ПоказатьОтметкуЭлементов с описанием оповещения. Модальный ОтметитьЭлементы() в веб-клиенте и при запрете модальности вызовет ошибку.
Отчёты на СКД и табличный документ
В отчёте галочка в виде квадратика не выводится: табличный документ показывает булево значение текстом «Да» или «Нет». Чтобы получить свою подпись, задайте формат поля:
Формат(Истина, "БЛ=Нет; БИ=Да") // БЛ — текст для Ложь, БИ — для Истина
В СКД то же самое задают в настройках поля набора данных, параметр оформления Формат: например, БЛ=; БИ=✓. Тогда в отчёте у отмеченных строк стоит символ галочки, у остальных — пусто. Отчёт так читается быстрее, чем с колонкой из сплошных «Да» и «Нет».
Галочки слева от параметров и отборов отчёта
В форме настроек отчёта у каждого параметра, отбора и поля стоит свой флажок. Это не значение параметра, а признак Использование: снята галочка — условие не применяется, даже если в поле что-то выбрано. Отсюда частая жалоба «поставил отбор по организации, а отчёт выводит все». Проверьте, стоит ли галочка слева от строки отбора.
Из кода этот флажок управляется свойством Использование элемента настроек:
ЭлементОтбора.Использование = Истина;
ЗначениеПараметра.Использование = Ложь;
Частые ошибки с флажками и как их найти
Ещё одна ловушка — флажок с отрицанием в заголовке. «Не использовать», «Не учитывать», «Отключить» заставляют пользователя думать дважды: галочка стоит, значит, функция выключена. Если вы проектируете форму с нуля, называйте реквизит в утвердительной форме: «Использовать», «Учитывать».
Частые вопросы
Как правильно: флаг или флажок?
Можно ли сделать галочку обязательной?
Ложь, выводят сообщение и устанавливают Отказ = Истина.