К статье
Практический материал

Разработка и Конфигурация · 10 мин

Как создать флажок в 1С

Как создать флажок в 1С: добавление реквизита типа Булево, размещение на форме документа и справочника, программная обработка значения и типичные ошибки.

Флажок в 1С — это элемент управления формы, связанный с реквизитом типа «Булево». Он принимает два состояния: установлен (Истина) и снят (Ложь), и используется повсюду — от признака «Активен» в справочнике до отметки «Согласие на обработку данных» в документе. Создать его можно двумя путями: через конфигуратор, добавив реквизит объекту и разместив его на форме, или программно, динамически создавая элемент на управляемой форме.

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

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

В платформе 1С:Предприятие флажок не существует отдельно от данных. Элемент на форме — это только визуальное представление реквизита типа «Булево». Поэтому первый вопрос при проектировании: где будет храниться значение. От ответа зависит, куда добавлять реквизит.

Основные варианты хранения:

  • Реквизит объекта (справочника, документа, обработки) — значение сохраняется в базе данных вместе с объектом;
  • Реквизит формы — значение живёт только, пока открыта форма, в базу не записывается;
  • Константа — единственное значение на всю информационную базу, подходит для глобальных настроек;
  • Реквизит табличной части — флажок в каждой строке таблицы, например отметка выбранных позиций.

Как добавить флажок в объект конфигурации

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

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

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

Теперь реквизит нужно вывести на форму. Если форма объекта создавалась автоматически, платформа сама добавит новое поле. Если форма уже настроена вручную, откройте её в редакторе форм и перетащите реквизит из панели «Реквизиты» в дерево элементов формы. Платформа автоматически выберет вид «Поле флажка», потому что тип данных — Булево.

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

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

Полезные свойства элемента, которые стоит настроить сразу:

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

Как создать флажок программно на управляемой форме

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

bsl
&НаСервере
Процедура СоздатьФлажокНаСервере()
    ДобавляемыеРеквизиты = Новый Массив;
    НовыйРеквизит = Новый РеквизитФормы("ФлСогласие", Новый ОписаниеТипов("Булево"), , "Согласие получено");
    ДобавляемыеРеквизиты.Добавить(НовыйРеквизит);
    ИзменитьРеквизиты(ДобавляемыеРеквизиты);
    
    НовыйЭлемент = Элементы.Добавить("ФлСогласие", Тип("ПолеФормы"));
    НовыйЭлемент.Вид = ВидПоляФормы.ПолеФлажка;
    НовыйЭлемент.ПутьКДанным = "ФлСогласие";
КонецПроцедуры

Ключевые моменты кода: реквизит добавляется через ИзменитьРеквизиты() до создания элемента, а элемент связывается с ним через свойство ПутьКДанным. Если пропустить создание реквизита, платформа выдаст ошибку «Поле не найдено» при открытии формы.

Динамическое создание выполняется на сервере, обычно в обработчике ПриСозданииНаСервере. Созданные таким способом элементы не сохраняются между сеансами — при каждом открытии формы код выполняется заново.

Как обработать изменение флажка

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

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

Чтение значения флажка в коде предельно просто: это обычное обращение к реквизиту. Например, в запросе или модуле объекта условие записывается как Если НеАктивен Тогда ... КонецЕсли;. В запросах булевы реквизиты сравниваются с ИСТИНА/ЛОЖЬ или используются напрямую в условии ГДЕ.

Флажок в табличной части и в динамическом списке

Частая задача — флажок в каждой строке таблицы, например для отметки товаров к обработке. Для этого добавьте реквизит типа «Булево» в табличную часть объекта (или в таблицу значений — реквизит формы) и перетащите его в колонки таблицы на форме. Платформа отобразит колонку флажками автоматически.

В динамических списках (списки справочников и документов) булев реквизит тоже отображается флажком, но по умолчанию список работает в режиме просмотра. Чтобы разрешить редактирование прямо в списке, установите у таблицы списка свойство «ИзменятьСоставСтрок» и убедитесь, что режим редактирования позволяет менять значения. Учтите: редактирование в списке записывает объект целиком, что может конфликтовать с параллельной работой пользователей.

Типичные ошибки
01
Добавили элемент на форму, но не создали реквизит — при открытии формы ошибка «Поле не найдено».
02
Использовали тип «Число» или «Строка» вместо «Булево» — вместо флажка отображается поле ввода.
03
Забыли обновить конфигурацию базы данных (F7) — реквизит есть в конфигураторе, но недоступен в режиме Предприятия.
04
Обработчик ПриИзменении написан, но не привязан к событию элемента — код не выполняется.
05
Ожидали, что у существующих объектов флажок будет установлен — у старых записей значение всегда Ложь по умолчанию.

Как проверить результат и типичные ограничения

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

Контрольные точки

Как проверить результат

Отображение на форме
Норма

Элемент выглядит как флажок, переключается щелчком

Тревожный признак

Показывается поле ввода или элемент недоступен

Сохранение значения
Норма

После записи и повторного открытия состояние сохраняется

Тревожный признак

Флажок сбрасывается — значит, реквизит формы, а не объекта

Работа обработчика
Норма

При изменении флажка выполняется задуманная логика

Тревожный признак

Ничего не происходит — событие не привязано

Ограничения, о которых стоит помнить: булево не хранит ничего, кроме двух состояний, поэтому для вариантов «да/нет/не знаю» нужен перечислимый тип или трёхсостоянийный флажок. Кроме того, добавление реквизита в типовую конфигурацию на поддержке усложнит обновление — в таких случаях рассмотрите дополнительные реквизиты (механизм БСП) вместо изменения конфигурации.

Маршрут решения

Как выбрать способ

Нужен постоянный признак объекта, хранящийся в базеДобавьте реквизит типа Булево в объект конфигурации
Значение нужно только на время работы с формойСоздайте реквизит формы без изменения объекта
Конфигурация типовая на полной поддержкеИспользуйте дополнительные реквизиты и сведения (БСП)
Набор флажков формируется динамическиСоздавайте реквизиты и элементы программно в ПриСозданииНаСервере
Итог

Что важно запомнить

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

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

Почему вместо флажка отображается поле ввода?

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

Можно ли сделать флажок обязательным для заполнения?

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

Как установить флажок по умолчанию для новых объектов?

В модуле объекта используйте обработчик «ОбработкаЗаполнения» и присвойте реквизиту значение Истина. Либо, если реквизит формы, установите значение в «ПриСозданииНаСервере» формы.

Как добавить флажок в типовую конфигурацию без снятия с поддержки?

Используйте механизм дополнительных реквизитов и сведений, доступный в конфигурациях на базе Библиотеки стандартных подсистем: в режиме Предприятия откройте карточку объекта, перейдите в настройку дополнительных реквизитов и создайте реквизит с типом «Булево». Он автоматически появится на форме и в отчётах.

Можно ли отобразить флажок как переключатель (тумблер)?

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

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

В форме списка используйте стандартный отбор: настройка списка → добавить отбор по реквизиту → вид сравнения «Равно» → значение «Да». Программно это делается через установку элемента отбора динамического списка в обработчике ПриСозданииНаСервере.