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

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

Как добавить галочку (флажок) на форму в 1С

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

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

Ниже разобраны три рабочих сценария: добавление флажка в конфигураторе с созданием реквизита, программное создание на управляемой форме и подключение галочки к уже существующему булеву реквизиту. Отдельно рассмотрены вариант через расширение конфигурации, проверка результата и типичные ошибки, из-за которых галочка появляется на форме, но не сохраняет значение.

Что такое галочка в 1С и к каким данным она привязывается

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

Перед добавлением определите, где должно храниться значение:

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

Способ 1. Добавить галочку через конфигуратор

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

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

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

Заголовок галочки берётся из синонима реквизита, но его можно переопределить в свойствах элемента формы, не меняя сам реквизит. Это удобно, когда в данных поле называется технически («Архивный»), а пользователю нужно показать «Убрать из подбора».

Способ 2. Привязать галочку к существующему булеву реквизиту

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

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

Способ 3. Добавить галочку программно на управляемой форме

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

bsl
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)

	// 1. Добавляем реквизит формы типа Булево
	ДобавляемыеРеквизиты = Новый Массив;
	НовыйРеквизит = Новый РеквизитФормы("СогласиеСУсловиями",
		Новый ОписаниеТипов("Булево"), , "Согласен с условиями", Ложь);
	ДобавляемыеРеквизиты.Добавить(НовыйРеквизит);
	ИзменитьРеквизиты(ДобавляемыеРеквизиты);

	// 2. Создаём элемент формы
	НовыйЭлемент = Элементы.Добавить("СогласиеСУсловиями", Тип("ПолеФормы"));
	НовыйЭлемент.Вид = ВидПоляФормы.ПолеФлажка;
	НовыйЭлемент.ПутьКДанным = "СогласиеСУсловиями";

КонецПроцедуры

Ключевые моменты кода: сначала через ИзменитьРеквизиты() добавляется сам реквизит формы, затем методом Элементы.Добавить() создаётся элемент с видом ПолеФлажка, и обязательно заполняется ПутьКДанным. Без последнего шага галочка отрисуется, но не будет связана с реквизитом.

Способ 4. Галочка через расширение конфигурации

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

Порядок такой: создайте расширение, добавьте в него форму объекта через «Добавить в расширение», затем в заимствованной форме создайте реквизит формы типа «Булево» и перетащите его в дерево элементов. Значение такой галочки не хранится в объекте автоматически — сохраняйте его программно, например, в дополнительных сведениях объекта или в хранилище настроек, и восстанавливайте при открытии формы.

Сравнение вариантов

Изменение конфигурации

Подходит для собственных разработок и снятых с поддержки баз. Минус — усложняются обновления типовых конфигураций.

Расширение

Подходит для типовых конфигураций на поддержке. Ограничение — нельзя добавить реквизит объекта, только реквизит формы; хранение значения нужно продумывать отдельно.

Программное создание

Подходит для динамических интерфейсов и внешних обработок. Минус — больше кода и сложнее сопровождение.

Настройка внешнего вида и поведения галочки

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

Полезные свойства и приёмы:

  • ТолькоПросмотр — галочка видна, но недоступна для изменения; используйте для отображения вычисляемых признаков.
  • Доступность и Видимость — можно управлять программно в зависимости от других данных формы.
  • Обработчик ПриИзменении — назначается в палитре свойств в разделе «События»; в нём удобно пересчитывать связанные поля формы.
  • ПоложениеЗаголовка — позволяет разместить подпись слева или справа от галочки.
Если по галочке нужно менять данные на сервере (например, пересчитывать итоги табличной части), делайте обработчик ПриИзменении с директивой &НаКлиенте и вызывайте серверную процедуру только при реальной необходимости — каждый серверный вызов при клике заметно замедляет работу формы на медленных соединениях.
ПЗ
Практическое замечание

Проверка результата и типичные ошибки

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

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

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

Свойство ПутьКДанным элемента
Норма

Указан реквизит (Объект.ИмяРеквизита или имя реквизита формы)

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

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

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

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

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

Сбрасывается — реквизит формы не переносится в объект

Поведение при записи документа
Норма

Значение учитывается в логике проведения

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

Галочка есть, но на проведение не влияет — не доработан модуль объекта

Типичные ошибки
01
Создан элемент формы, но не создан реквизит — элемент не отображается или выдаёт ошибку при открытии формы.
02
Реквизит добавлен в форму, а не в объект: галочка работает, но значение теряется после закрытия, потому что в базе его хранить негде.
03
ИзменитьРеквизиты() вызван вне ПриСозданииНаСервере — ошибка выполнения в момент клика.
04
Добавлена галочка в расширении с ожиданием автосохранения: реквизит формы расширения сам по себе в базу не пишется, нужен код сохранения.
05
Изменена типовая конфигурация напрямую вместо расширения — при обновлении доработка теряется или блокирует обновление.

Выводы

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

Итог

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

Галочка = элемент «Поле флажка» + булев реквизит в свойстве ПутьКДанным. Хранение значения определяется тем, где создан реквизит: в объекте — сохраняется в базе, в форме — живёт до закрытия. Для типовых конфигураций работайте через расширение и всегда проверяйте цикл «поставил — записал — открыл».

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

Можно ли добавить галочку без конфигуратора, прямо в режиме Предприятия?

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

Почему галочка есть на форме, но не сохраняется?

Наиболее вероятная причина — она привязана к реквизиту формы, а не к реквизиту объекта. Реквизит формы существует только в памяти, пока форма открыта. Либо создайте реквизит в самом объекте, либо программно переносите значение при записи и восстанавливайте при открытии.

Как сделать галочку в виде тумблера (выключателя)?

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

Можно ли добавить галочку в табличную часть документа?

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

Галочка добавлена в расширении — куда сохранять её значение?

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

Как запретить менять галочку после проведения документа?

Настройте доступность программно: в обработчике ПриОткрытии или ПриЧтенииНаСервере установите Элементы.ИмяГалочки.ТолькоПросмотр = Объект.Проведен. Дополнительно продублируйте контроль на сервере в обработке записи, потому что интерфейсное ограничение не защищает от изменения данных программным путём.