Лишняя кнопка в командной панели 1С: как скрыть или удалить
Содержание
Убрать кнопку из командной панели формы в 1С 8.3 можно пятью способами. Пользователь делает это сам: в форме выбирает Ещё → Изменить форму… и снимает флажок у лишней команды. Администратор лишает роль права на объект, и команда пропадает у всей группы. Разработчик правит форму в конфигураторе, в расширении или скрывает элемент кодом.
Какой способ брать, зависит от того, кто и для кого убирает кнопку. Если нужно скрыть кнопку только себе, хватит настройки формы. Если всем бухгалтерам, а в типовой конфигурации менять код нельзя, ищите решение в ролях или расширении. Разберём по порядку, от безопасного к радикальному.
Сначала выясните, что за кнопка и откуда она взялась
Командная панель формы собирается из нескольких источников. Поэтому одна и та же на вид кнопка убирается по-разному.
- ⚙️ Команда самой формы. Её создал разработчик: кнопка «Заполнить», «Печать», «Провести». Живёт в элементах формы.
- 📦 Стандартная команда списка или документа. Например, «Создать», «Скопировать», «Найти», «Вывести список ». Платформа добавляет их автоматически.
- 🔗 Команда подсистемы. Подключается в форму через подменю
Печать,Создать на основании,Отчёты,Дополнительные обработки. Состав подменю определяют настройки конфигурации и права. - 🧩 Команда из расширения. Её добавили вы или поставщик расширения. Убрать её можно, только отключив или изменив расширение.
Определить источник просто. Откройте форму, нажмите Ещё → Изменить форму… и посмотрите, есть ли команда в списке настройки. Если есть, пользовательской настройки достаточно. Если команды в списке нет, она приходит из подсистемы или зависит от прав.
Если кнопка лежит в подменю («Печать», «Создать на основании»), убирать нужно не саму кнопку, а пункт этого подменю. Для печатных форм и команд ввода на основании есть отдельные настройки состава, в прикладных конфигурациях они обычно находятся в разделе администрирования, который отвечает за печать и ввод на основании.
Способ 1. Скрыть кнопку через настройку формы (для пользователя)
Самый безопасный путь. Конфигурацию он не трогает, действует только на вашу учётную запись и откатывается в один клик.
- Откройте нужную форму: список, документ или справочник.
- В правом верхнем углу формы нажмите кнопку с тремя точками,
Ещё, затем выберитеИзменить форму…. - В окне настройки найдите раздел с командной панелью. Команды показаны деревом с флажками.
- Снимите флажок у лишней команды. Если группа свёрнута, раскройте её.
- Нажмите
ОК. Форма перерисуется сразу.
Здесь же настраивается порядок кнопок: можно перетащить нужные в начало панели, а редкие убрать в Ещё. Для многих сценариев этого достаточно.
Если после экспериментов форма стала выглядеть странно, в том же окне настройки есть команда возврата к стандартным настройкам. После неё форма вернётся к виду, который задал разработчик.
Настройка формы хранится по пользователю. Другой сотрудник под своей учётной записью увидит все кнопки. Если нужно убрать кнопку у всех, переходите к следующим способам.
Способ 2. Управлять доступом через роли
Многие кнопки исчезают из панели сами, когда у пользователя нет права на действие. Например, команда создания новой записи не показывается, если у роли нет права Добавление на справочник. Команда проведения пропадает без права Проведение на документ. Это штатное поведение платформы, и оно лучше любых костылей: пользователь не видит то, что всё равно не смог бы выполнить.
Порядок действий для администратора:
- Откройте
Администрирование → Настройки пользователей и прав → Группы доступа(в разных конфигурациях раздел может называться чуть иначе, но группы доступа есть во всех типовых). - Найдите группу, в которую входит пользователь, и посмотрите её профиль.
- В профиле откройте роли и определите, какая роль даёт лишнее право.
- Создайте собственный профиль, взяв типовой за основу, и уберите лишнее. Сам типовой профиль не правьте: при обновлении ваши изменения могут потеряться.
Этот способ подходит, когда кнопка лишняя именно потому, что человек не должен выполнять действие: удалять, проводить, менять. Если же действие разрешено, а кнопка просто мешает, роли не помогут. Для интерфейсных пожеланий нужны способы 1, 3, 4 или 5.
Есть и нюанс: в конфигураторе у элементов формы бывает свойство, которое связывает видимость с ролями. Оно нужно разработчику, чтобы показывать кнопку только определённым ролям, не прибегая к коду. Подробнее в способе 3.
Способ 3. Изменить форму в конфигураторе
Подходит для собственных конфигураций и доработок, где менять форму допустимо. В типовых конфигурациях на поддержке прямая правка формы снимает объект с поддержки или требует включить возможность изменения, поэтому там лучше идти через расширение (способ 4).
Что делать:
- Запустите базу в режиме
Конфигуратор. - В дереве конфигурации найдите объект: справочник, документ, обработку. Раскройте ветку
Формыи откройте нужную форму двойным щелчком. - В редакторе формы перейдите на закладку
Элементы. Там дерево: командные панели, кнопки, поля, группы. - Выберите кнопку или командную панель. Теперь есть два варианта.
Скрыть. В палитре свойств снимите флажок Видимость. Кнопка останется в форме, но показываться не будет. Это обратимо и безопаснее удаления: если позже понадобится, достаточно вернуть флажок.
Удалить. Выделите кнопку в дереве и нажмите Del. Если кнопка привязана к команде формы, сама команда останется на закладке Команды. Если команда больше не нужна, удалите и её, но сначала убедитесь, что на неё нет ссылок в модуле формы.
Перед удалением полезно найти все обращения к кнопке или команде в коде модуля формы. Если обработчик команды вызывается из другого места, после удаления получите ошибку при открытии формы или нажатии. Для проверки используйте поиск по модулю и команду обновления конфигурации базы данных: синтаксическая проверка покажет битые ссылки.
Кроме Видимости, у кнопки есть свойства Доступность (кнопка видна, но серая) и свойства, связанные с функциональными опциями. Привязка к функциональной опции удобна, когда кнопка должна появляться или исчезать от настройки в базе, а не от решения разработчика.
Если форма принадлежит типовой конфигурации на поддержке, после правки при следующем обновлении придётся вручную объединять изменения. Это дорого и рискованно. Для долгой работы выбирайте расширение.
Способ 4. Расширение конфигурации
Расширения появились в платформе 8.3.6 и стали основным способом доработки типовых решений. Расширение не меняет основную конфигурацию, поэтому обновление типовой проходит без объединения.
Схема для скрытия кнопки:
- В конфигураторе откройте
Конфигурация → Расширения конфигурациии создайте новое расширение (или откройте существующее). - Добавьте в расширение нужный объект как заимствованный: щёлкните по нему правой кнопкой в основной конфигурации и выберите добавление в расширение.
- Заимствуйте нужную форму. В расширении откройте её редактор.
- Найдите кнопку на закладке
Элементыи измените её свойствоВидимость. - Примените изменения: обновите конфигурацию базы данных (
F7). Чтобы перенести расширение на другие базы, выгрузите его в файл.cfe.
Важно знать два ограничения. Во-первых, из заимствованной формы нельзя полностью удалить элемент, который создал поставщик: можно только скрыть его. Во-вторых, загрузка файла .cfe в базу и применение изменений к базе данных — разные шаги. Если файл загрузили, а базу не обновили, форма не изменится.
Применение изменений к базе лучше делать, когда в ней нет пользователей: при активных сеансах платформа может потребовать завершить их.
Способ 5. Скрыть кнопку программно
Когда кнопку нужно прятать по условию, например только для части пользователей или только в определённом режиме, пригодится код. Его пишут в модуле формы (или в модуле формы заимствованной формы в расширении) в обработчике создания формы на сервере:
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Если Не РольДоступна("ПолныеПрава") Тогда
Элементы.КнопкаОбработка.Видимость = Ложь;
КонецЕсли;
КонецПроцедуры
Здесь КнопкаОбработка — имя кнопки из дерева элементов формы. Имя берите именно из конфигуратора, а не с надписи на экране: надпись и имя элемента различаются.
Те же шаги работают и для команд, которые добавлены программно. Если кнопка лежит внутри группы, обращаться к ней нужно по имени, группа тут не мешает.
Условие может быть любым: роль пользователя, значение константы, статус документа. Так, кнопку «Провести» можно скрывать у документов в определённом состоянии. Только держите условие простым: чем сложнее логика видимости, тем больше вероятность, что кнопка неожиданно пропадёт у того, кому нужна.
Для разграничения по ролям в обработчике предпочтительнее проверять право, а не роль: ПравоДоступа("Изменение", Метаданные.Документы.РасходнаяНакладная). Тогда код не сломается, когда роли переименуют или перегруппируют.
Сравнение способов
| Способ | Кто делает | На кого действует | Риск |
|---|---|---|---|
| Настройка формы | Пользователь | Только на него | Минимальный, откат в один клик |
| Роли и профили | Администратор | На группу пользователей | Можно отнять нужное право |
| Конфигуратор | Разработчик | На всех | Снятие с поддержки, объединение при обновлении |
| Расширение | Разработчик | На всех | Нужно следить за загрузкой и обновлением БД |
| Код | Разработчик | По условию | Сложная логика, труднее сопровождать |
Типичные неудачи и как их исправить
Бывает, что кнопку скрыли, а она появилась снова. Или удалили, а форма не открывается. Вот частые причины.
- 🔁 Кнопка вернулась после обновления. Правка была сделана в типовой форме на поддержке и затёрлась обновлением. Перенесите её в расширение.
- 👤 У одного пользователя кнопка есть, у другого нет. Проверьте, не дело ли в пользовательской настройке формы: она у каждого своя. Сбросьте настройки в окне
Изменить форму…. - ❌ Форма не открывается после удаления кнопки. В модуле остался код, который обращается к удалённому элементу. Найдите имя кнопки в модуле формы и уберите обращение или верните элемент.
- 👁 Кнопка скрыта, но по горячей клавише работает. Скрытие
Видимостьюубирает кнопку с экрана, но команда формы остаётся доступной через сочетание клавиш, если оно назначено. Если нужно закрыть действие полностью, ограничивайте право (способ 2) или блокируйте действие в коде обработчика. - 🗂 Кнопка пропала из подменю «Печать». Печатные команды управляются отдельными настройками состава, а не свойством кнопки.
Частые вопросы
Как вернуть кнопку, которую я убрал через «Изменить форму»?
Ещё → Изменить форму… и поставьте флажок у нужной команды обратно. Если форма сильно изменена, воспользуйтесь командой сброса настроек в том же окне.