К статье
Практический материал

Разработка и Конфигурация · 9 мин

Как узнать, какие команды объекта конфигурации задействованы в командных интерфейсах 1С

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

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

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

Что считается командой объекта и где она может использоваться

У объектов конфигурации (справочников, документов, отчётов, обработок, регистров) есть стандартные команды — например, «Создать», «Найти», «Провести», а также команды, добавленные разработчиком на закладке «Команды» в палитре свойств объекта. Каждая команда имеет имя, синоним и группу командной панели, в которую она попадает по умолчанию.

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

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

Просмотр через свойства команды объекта

Откройте объект конфигурации, перейдите на закладку «Команды». Здесь перечислены все команды, добавленные разработчиком. Двойной щелчок по команде открывает её свойства: там видно, в какую группу командной панели она помещается, какой обработчик вызывается и какой тип параметра команды задан.

Группа командной панели — первый индикатор задействованности. Если выбрано, например, «Командная панель формы.Важное» или «Панель навигации формы», команда выводится в интерфейс формы объекта автоматически, без дополнительных настроек. Если группа не задана, команда доступна только программно или через ручное размещение.

Однако свойства команды не показывают, в каких подсистемах она выведена. Для этого нужен следующий шаг — анализ командных интерфейсов подсистем.

Анализ через редактор командного интерфейса подсистемы

Откройте подсистему, в которой предположительно используется команда, и на закладке «Командный интерфейс» нажмите кнопку редактирования. Откроется окно со списком команд панели навигации и панели действий, где флажками отмечена видимость каждой команды.

Здесь видны как стандартные команды объектов, включённых в состав подсистемы, так и общие команды, добавленные вручную. Если команда объекта присутствует в списке и флажок видимости установлен — она задействована в интерфейсе этой подсистемы.

Недостаток способа очевиден: подсистем может быть много, и проверять каждую вручную долго. Поэтому для полного поиска используйте глобальный поиск или программный анализ.

Порядок ручной проверки команды
  1. 1
    Откройте объект конфигурации, закладка «Команды», посмотрите группу командной панели у нужной команды
  2. 2
    Проверьте состав подсистем: в какие из них включён сам объект
  3. 3
    Для каждой подсистемы откройте редактор командного интерфейса и найдите команду в списке
  4. 4
    Проверьте общие команды с типом параметра, соответствующим вашему объекту
  5. 5
    Зафиксируйте результат: где команда видима, где скрыта, где отсутствует

Поиск имени команды по конфигурации

Глобальный поиск (Ctrl+Shift+F в конфигураторе) по имени команды находит упоминания в модулях — обработчики «ОбработкаКоманды», вызовы из других мест кода. Это помогает понять, не вызывается ли команда программно, например из других форм или общих модулей.

Учтите ограничение: поиск по тексту не показывает размещение команды в командных интерфейсах подсистем, потому что эти настройки хранятся в метаданных, а не в виде текстового совпадения имени. Поэтому поиск — дополнение, а не замена анализу интерфейсов.

Ещё один полезный приём — поиск ссылок на объект (Правка → Найти ссылки на объект). Он покажет подсистемы, общие команды и функциональные опции, в состав которых входит объект, а значит, сузит круг мест, где его команды могут быть задействованы.

Программный анализ метаданных

Для массовой проверки — например, по всем командам всех документов — удобнее написать обработку, которая обходит дерево метаданных. Через коллекцию Метаданные.Подсистемы и свойство Состав можно определить, какие объекты входят в подсистему, а значит, команды каких объектов потенциально выведены в её интерфейс.

Для общих команд проверяйте свойство ТипПараметраКоманды у элементов коллекции Метаданные.ОбщиеКоманды: если тип включает ваш объект, команда отображается в интерфейсах форм этого объекта. Свойство ГруппаКоманднойПанели у команды объекта подскажет, выводится ли она в формы автоматически.

Пример фрагмента обхода команд объекта:

bsl
Для Каждого Команда Из Метаданные.Документы.РеализацияТоваров.Команды Цикл
    Сообщить(Команда.Имя + " | группа: " + Команда.ГруппаКоманднойПанели);
КонецЦикла;

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

Типичные ошибки при анализе использования команд

Самая частая ошибка — удаление команды после проверки только одной подсистемы. Команда может использоваться в нескольких разделах, в общих командах и вызываться программно. Перед удалением проверяйте все три канала: подсистемы, общие команды, поиск по модулям.

Вторая ошибка — путать стандартные и пользовательские команды. Стандартные («Создать», «Найти») нельзя удалить, можно только управлять их видимостью в командных интерфейсах. Попытка «убрать» их через доработку формы часто приводит к лишнему коду, который ломается при обновлении.

Типичные ошибки
01
Проверка только одной подсистемы перед удалением команды — команда остаётся задействованной в других разделах и вызовы ломаются
02
Игнорирование общих команд с типом параметра — команда «невидимо» присутствует в формах объекта
03
Оценка использования только по скриншоту интерфейса — команда скрыта правами, но задействована в метаданных
04
Удаление обработчика команды без проверки программных вызовов из других модулей

Как проверить результат после изменений

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

Дополнительно выполните проверку конфигурации (Конфигурация → Проверка конфигурации) с включённой проверкой логической целостности — она выявит ссылки на удалённые команды в общих командах и настройках.

Контрольные точки

Как проверить результат

Команда в панели навигации раздела
Норма

Отображается там, где включена видимость, и только там

Тревожный признак

Появилась в лишних разделах или пропала из нужного

Форма объекта
Норма

Команда присутствует в заданной группе командной панели

Тревожный признак

Команда дублируется или отсутствует

Проверка конфигурации
Норма

Нет ошибок о неразрешённых ссылках на команды

Тревожный признак

Ошибки вида «команда не найдена» в общих командах или интерфейсах

FAQ

Можно ли одним отчётом увидеть все места использования команды?

Штатного отчёта нет. Ближайший вариант — комбинация поиска ссылок на объект, глобального поиска имени команды и ручного просмотра редакторов командных интерфейсов подсистем. Для регулярного аудита пишут собственную обработку обхода метаданных.

Почему команда не видна пользователю, хотя в интерфейсе она включена?

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

Как найти, какие общие команды применяются к моему объекту?

Откройте ветку «Общие команды» в дереве конфигурации и проверьте у каждой свойство «Тип параметра команды». Если в состав типа входит ваш объект, команда отображается в командных панелях его форм согласно заданной группе.

Можно ли скрыть стандартную команду объекта из подсистемы?

Да. В редакторе командного интерфейса подсистемы снимите флажок видимости у стандартной команды. Удалить саму стандартную команду нельзя — управляется только её видимость и доступность через права.

Влияет ли удаление команды на уже существующие данные?

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

Где хранятся настройки видимости команд подсистемы?

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

Итог

Что важно запомнить

Задействованность команды проверяется по трём каналам: командные интерфейсы подсистем, общие команды с типом параметра и программные вызовы в модулях. Единой кнопки нет — используйте редактор командного интерфейса, поиск ссылок и глобальный поиск, а перед удалением команды проверяйте все каналы и выполняйте проверку конфигурации.