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