Как программно убрать кнопки Стартовать и Стартовать и закрыть в командной панели бизнес-процесса

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

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

Разберем стандартное поведение платформы

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

Рассмотрим основные способы решения задачи, от простого визуального проектирования до гибкого программного управления.

Способ 1. Программное управление видимостью через коллекцию Элементы

Этот метод является наиболее гибким, так как позволяет скрывать кнопки в зависимости от состояния объекта или прав текущего пользователя. Выясним, как правильно обратиться к этим кнопкам. Многие начинающие разработчики пытаются найти их через индекс, например, используя Получить(0), однако это ненадежный путь, так как при изменении состава командной панели индекс кнопки может измениться.

Проанализируем правильный подход. Стандартные кнопки старта в управляемых формах имеют зарезервированные имена:

Посмотрим на пример кода, который можно разместить в процедуре ПриСозданииНаСервере или в обработчике, срабатывающем после старта бизнес-процесса:


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

Важный нюанс: Если вы скрываете кнопки сразу после программного запуска бизнес-процесса в той же транзакции или форме, не забудьте вызвать метод ЭтаФорма.Прочитать() или обновить состояние элементов, чтобы интерфейс корректно отобразил изменения.

Способ 2. Отключение автозаполнения командной панели

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

Выполним следующие шаги:

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

Этот метод хорош тем, что он исключает появление "лишних" кнопок на уровне проектирования, и вам не придется писать лишний код для управления их видимостью.

Способ 3. Точечное управление составом стандартных команд

Рассмотрим ситуацию, когда Автозаполнение нам необходимо, но мы хотим исключить только конкретные команды. В редакторе формы 1С есть специальная вкладка, о которой часто забывают.

Проанализируем алгоритм действий:

  1. В окне редактирования формы перейдем на закладку Команды.
  2. Внутри выберем подзакладку Стандартные команды.
  3. Найдем в списке команды Старт и Старт и закрыть.
  4. Нажмем на них правой кнопкой мыши и снимем признак видимости (или просто убедимся, что они не включены в состав отображаемых кнопок).

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

Особенности работы с состоянием Бизнес-процесса

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

В коде это может выглядеть так:


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

Использование прав доступа и функциональных опций

Иногда задачу стоит решать не программным кодом, а настройкой прав. В системе 1С существует право Интерактивный старт. Если у пользователя в его роли снята данная галочка для конкретного бизнес-процесса, платформа сама не отрисует кнопки старта. Это наиболее правильный архитектурный подход, если ограничение связано с полномочиями сотрудников, а не с логикой работы формы.

Также не забывайте про свойство формы ТолькоПросмотр. Если установить ЭтаФорма.ТолькоПросмотр = Истина;, большинство модифицирующих кнопок, включая старт процесса, исчезнут или станут недоступными автоматически. Это полезно при просмотре завершенных процессов.

Резюме

Мы рассмотрели несколько подходов к управлению кнопками старта. Наиболее надежным для программиста является прямое обращение по именам Элементы.ФормаСтарт и Элементы.ФормаСтартИЗакрыть. Использование отладчика поможет вам убедиться в наличии этих элементов в коллекции в вашей конкретной версии платформы или конфигурации. Совмещая программные методы с настройкой прав доступа и свойств формы, можно создать максимально удобный и защищенный интерфейс для конечного пользователя.

← На главную