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

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

Как убрать крестик с формы 1С

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

Под «крестиком на форме 1С» обычно понимают одну из двух вещей: маленькую кнопку очистки (×) внутри поля ввода, которая появляется при заполнении поля, или кнопку закрытия окна формы в её заголовке. Убираются они по-разному: первая — свойством поля ввода «КнопкаОчистки», вторая — настройками формы и обработчиком «ПередЗакрытием».

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

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

Определяем, какой именно крестик нужно убрать

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

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

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

Убирается свойством КнопкаОчистки у элемента формы

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

Скрыть нельзя, блокируется через ПередЗакрытием

Крестик на закладке открытого окнаПанель открытых окон

Настройка интерфейса, а не формы

Крестик в строке таблицыКнопка удаления строки

Отключается свойством ИзменятьСоставСтрок

Убираем крестик очистки через конфигуратор

Самый простой способ — отключить кнопку очистки в свойствах элемента формы. Откройте конфигуратор, найдите нужный объект (документ, справочник, обработку) и откройте его форму двойным щелчком.

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

После этого крестик внутри поля перестанет появляться, даже когда поле заполнено. Пользователь по-прежнему сможет очистить значение вручную через клавиши Delete или Backspace — свойство убирает только визуальную кнопку, а не саму возможность очистки.

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

Отключаем крестик программно

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

Добавьте установку свойства в обработчик ПриСозданииНаСервере или ПриОткрытии. Обращение идёт через коллекцию «Элементы» — по имени элемента формы, а не по имени реквизита.

&НаКлиенте

Процедура ПриОткрытии(Отказ)

Элементы.Контрагент.КнопкаОчистки = Ложь;

Элементы.Организация.КнопкаОчистки = Ложь;

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

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

Блокируем кнопку закрытия формы

Штатного свойства «скрыть крестик закрытия» в управляемых формах нет. Кнопка закрытия отображается всегда, но можно перехватить само действие и отменить его. Для этого служит обработчик ПередЗакрытием в модуле формы.

Установите параметр «Отказ» в значение «Истина», и форма не закроется — ни по крестику, ни по Alt+F4, ни по клавише Escape. Обычно блокировку делают условной: пока пользователь не заполнил обязательные поля или не выбрал вариант действия.

&НаКлиенте

Процедура ПередЗакрытием(Отказ, ЗавершениеРаботы, ТекстПредупреждения, СтандартнаяОбработка)

Если НЕ ВыборСделан Тогда

Отказ = Истина;

КонецЕсли;

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

Переменная «ВыборСделан» — реквизит формы, который устанавливается в Истину при нажатии на кнопку «ОК» или «Готово». Так форму можно закрыть только штатной кнопкой, а крестик фактически перестаёт работать.

Убираем крестики удаления в табличных частях

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

Если удаление нужно запретить, а добавление оставить, используйте обработчик таблицы ПередУдалением с установкой Отказ = Истина. Это сработает и при нажатии кнопки, и при удалении строки клавишей Delete.

Более мягкий вариант — свойство ТолькоПросмотр у таблицы или отдельной колонки. Тогда данные видны, но любое редактирование заблокировано, включая удаление строк.

Сравнение способов запрета удаления строк

ИзменятьСоставСтрок = Нет

Убирает кнопки добавления и удаления. Подходит, когда состав строк полностью фиксирован

ПередУдалением с Отказ = Истина

Блокирует только удаление, добавление остаётся. Позволяет задать условия и текст предупреждения

ТолькоПросмотр = Истина

Полный запрет редактирования таблицы. Подходит для архивных и проведённых документов

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

После изменений откройте форму в режиме предприятия и проверьте каждый сценарий: заполните поле и убедитесь, что крестик очистки не появляется; попробуйте закрыть форму крестиком, Escape и Alt+F4; попытайтесь удалить строку таблицы кнопкой и клавишей Delete.

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

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

Типичные ошибки
01
Обращение к элементу по имени реквизита вместо имени элемента формы — ошибка «Поле объекта не обнаружено»
02
Установка свойства в серверном обработчике без контекста — коллекция Элементы недоступна
03
Безусловная блокировка закрытия без рабочей кнопки выхода — форму невозможно закрыть штатно
04
Правка типовой формы напрямую вместо расширения — изменения теряются при обновлении конфигурации
05
Ожидание, что КнопкаОчистки запретит очистку поля — она убирает только кнопку, очистка клавиатурой остаётся

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

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

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

Почему крестик очистки появляется не у всех полей?

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

Как убрать крестик у всех полей формы сразу?

Программно — циклом по коллекции Элементы с проверкой типа элемента: если это ПолеФормы с видом ПолеВвода, установить КнопкаОчистки = Ложь. В конфигураторе массовой установки нет, каждое поле настраивается отдельно через палитру свойств.

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

Да, через механизм расширений конфигурации. Создайте расширение, заимствуйте в него нужную форму и измените свойства элементов или добавьте обработчики. Основная конфигурация при этом остаётся на поддержке и обновляется штатно.

Крестик убрал, но пользователь очищает поле клавишей Delete. Как запретить?

Свойство КнопкаОчистки влияет только на кнопку. Для полного запрета используйте обработчик поля «Очистка» с установкой Отказ = Истина, либо установите полю свойство «ТолькоПросмотр», если редактирование вообще не требуется.

Блокировка закрытия не срабатывает при завершении сеанса. Это нормально?

Да. При завершении работы программы параметр ЗавершениеРаботы в обработчике ПередЗакрытием равен Истина, и платформа может игнорировать отказ либо требует заполнить параметр ТекстПредупреждения. Проверяйте этот параметр в коде и обрабатывайте сценарий завершения отдельно.

Итог

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

Крестик очистки убирается свойством КнопкаОчистки у поля ввода — в конфигураторе или программно. Кнопку закрытия формы скрыть нельзя, но можно отменить закрытие через ПередЗакрытием с Отказ = Истина. Для типовых конфигураций изменения делайте через расширение, а блокировку закрытия всегда дополняйте рабочей кнопкой выхода.