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