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