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