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