Как скрыть кнопку «Создать на основании» на управляемой форме в 1С

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

В процессе разработки или адаптации типовых решений на платформе 1С:Предприятие 8.3 часто возникает задача упрощения интерфейса. Одной из таких задач является скрытие стандартных кнопок, которые платформа или конфигурация добавляет автоматически. Кнопка «Создать на основании» может загромождать командную панель, если бизнес-процесс не предполагает ввод новых документов из конкретной формы списка или объекта. В этой статье мы подробно разберем, как избавиться от этой кнопки разными способами, от самого простого до продвинутого программного метода.

Способ 1. Использование вкладки «Командный интерфейс» в конфигураторе

Начнем с самого правильного и «чистого» метода, который не требует написания кода. Многие начинающие разработчики ищут кнопку в списке элементов формы, но не находят её там, так как она генерируется платформой динамически. Однако управление этими командами вынесено в отдельный раздел.

Разберем этот процесс по шагам:

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

Этот метод хорош тем, что мы сохраняем стандартное поведение платформы и не нагружаем систему лишними вычислениями при открытии формы.

Способ 2. Программное управление видимостью

Иногда возникают ситуации, когда кнопку нужно скрыть не для всех пользователей, а только при определенных условиях (например, в зависимости от статуса документа или роли текущего пользователя). В этом случае нам поможет программный метод. Для анализа состава элементов открытой формы в режиме пользователя пригодится обработка для редактирования свойств элементов формы.

Проанализируем ситуацию: кнопка «Создать на основании» обычно является частью стандартной командной панели. Чтобы обратиться к ней из кода, нужно знать её точное имя. Рассмотрим пример кода, который следует разместить в процедуре ПриСозданииНаСервере:


&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    
    // Пытаемся скрыть всю группу команд "Создать на основании"
    // Имя элемента может зависеть от версии платформы и настроек формы
    Если Элементы.Найти("ФормаСоздатьНаОсновании") <> Неопределено Тогда
        Элементы.ФормаСоздатьНаОсновании.Видимость = Ложь;
    КонецЕсли;

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

Важный нюанс: Если кнопка не находится напрямую в коллекции Элементы, нам нужно проанализировать структуру командной панели. Часто кнопка «спрятана» внутри подчиненных элементов командной панели формы. Рассмотрим, как найти имя кнопки с помощью отладчика:

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

Если нам нужно скрыть конкретный документ из списка «Создать на основании», код может выглядеть так:


&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    // Пример для конкретного документа "РеализацияТоваровУслуг"
    ИмяКнопки = "ФормаСоздатьНаОснованииДокументРеализацияТоваровУслуг";
    ЭлементКнопка = Элементы.Найти(ИмяКнопки);
    Если ЭлементКнопка <> Неопределено Тогда
        ЭлементКнопка.Видимость = Ложь;
    КонецЕсли;
КонецПроцедуры

Способ 3. Управление через права доступа (Роли)

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

Выясним, как это настроить:

  1. В дереве конфигурации найдем нужную Роль.
  2. В списке объектов найдем документ, который является Приемником (тот, который создается).
  3. В списке прав найдем право «Ввод на основании» и снимем галочку.

Это самый безопасный метод с точки зрения целостности данных, так как он блокирует действие на уровне ядра платформы, а не только скрывает «картинку» на форме.

Способ 4. Особенности современных конфигураций (БСП)

Если вы работаете в конфигурациях типа ERP 2, КА 2 или УТ 11, вы могли заметить, что вышеуказанные способы не всегда срабатывают. Это происходит потому, что в этих решениях используется подсистема «Подключаемые команды» из Библиотеки Стандартных Подсистем (БСП).

В таких случаях команды «Создать на основании» формируются программно в модуле менеджера объекта. Рассмотрим, как ими управлять:

  1. Перейдем в Модуль менеджера документа.
  2. Найдем процедуру ПриОпределенииКомандПодключенныхКОбъекту.
  3. В этой процедуре можно программно исключить определенные команды или изменить их параметры.

Также стоит проверить функциональные опции. Часто возможность создания документов на основании регулируется константами в настройках программы (например, «Использовать заказы клиентов»). Если функциональная опция выключена, кнопка исчезнет автоматически во всей системе.

Способ 5. Скрытие через «Изменить форму»

Нужно учитывать, что пользователь может самостоятельно вернуть скрытую программно кнопку через меню «Еще — Изменить форму». Если ваша задача — гарантированно убрать кнопку, не забудьте настроить свойство «Пользовательская видимость».

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

Резюмируем: Для быстрого и простого скрытия используйте вкладку «Командный интерфейс» в редакторе формы. Для гибкого управления — процедуру ПриСозданииНаСервере и поиск элементов через Элементы.Найти(). Для обеспечения безопасности — настройку прав доступа в ролях.

← На главную