Как убрать лишние команды из формы элемента справочника в 1С и почему они там появляются?

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

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

Разберем основную причину: Настройки командного интерфейса формы

Самый быстрый способ решить проблему — это заглянуть в настройки самой управляемой формы. Разберем по шагам, как это сделать:

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

Проанализируем ситуацию: здесь мы можем увидеть флажки в колонках Видимость и Автовидимость. Если установлена Автовидимость, платформа 1С самостоятельно принимает решение о показе команды на основе прав доступа пользователя и функциональных опций. Чтобы гарантированно скрыть команду в форме элемента, нам необходимо снять флажок Автовидимость и принудительно установить Видимость в значение Ложь (снять галочку). Это самый надежный способ «точечной» настройки конкретной формы. Для изменения свойств открытых форм непосредственно в пользовательском режиме можно использовать обработку для редактирования элементов формы.

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

Часто возникает вопрос: почему две команды с одинаковыми настройками группы ведут себя по-разному? Одна отображается в форме элемента, а другая нет. Разберем этот нюанс, обратившись к свойствам самого объекта Команда в дереве метаданных.

Рассмотрим ключевое свойство — Режим использования параметра (Parameter usage mode). Оно имеет два значения:

Если у вашей команды «Задание места хранения» установлен режим Одиночный, а у «Создания обозначений» — Множественный, это и объясняет разницу в их поведении при прочих равных условиях. Для команд группового заполнения реквизитов правильнее использовать Множественный режим.

Проанализируем влияние типов параметров

Тип параметра команды также играет критическую роль. Проверим свойство Тип параметра команды. Если в качестве типа указана ссылка на конкретный справочник (например, СправочникСсылка.Номенклатура), платформа связывает эту команду со всеми формами данного объекта.

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

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

Бывает так, что команда настроена верно, но она то появляется, то исчезает. Здесь стоит проверить Функциональные опции. Если команда включена в состав функциональной опции, ее видимость будет напрямую зависеть от значения этой опции в константах или параметрах сеанса.

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

Программное управление видимостью в модуле формы

Иногда настройки в конфигураторе перекрываются программным кодом. Разберем, как проверить и, если нужно, изменить видимость команд при открытии формы. Для этого заглянем в процедуру ПриСозданииНаСервере в модуле формы элемента.

Проанализируем пример кода, который позволяет программно скрыть команду:


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

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

Свойство «Изменяет сохраняемые данные»

Еще один важный параметр — свойство команды Изменяет сохраняемые данные. Рассмотрим его влияние: если флажок установлен, платформа может ограничивать вывод команды в формах, предназначенных только для просмотра, или выдавать предупреждение при закрытии формы, если команда была выполнена. Различия в этом флажке у разных команд могут приводить к тому, что 1С по-разному группирует их в интерфейсе формы элемента (например, помещая в подменю "Еще" или вынося на основную панель).

Итоги и рекомендации

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

  1. Проверьте закладку Командный интерфейс в редакторе формы и снимите Автовидимость.
  2. Убедитесь, что Режим использования параметра соответствует логике команды (Одиночный для элемента, Множественный для списка).
  3. Проверьте Тип параметра команды на предмет соответствия объекту формы.
  4. Посмотрите, не влияют ли Функциональные опции на отображение.
  5. Изучите модуль формы на предмет программного изменения видимости через КомандныйИнтерфейс.

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

← На главную