Разработка и Конфигурация · 9 мин
Как узнать, какие команды объекта конфигурации задействованы в командных интерфейсах 1С
Как в 1С определить, какие команды объекта конфигурации используются в командных интерфейсах: свойства, поиск ссылок, редактор интерфейса и программный анализ.
При доработке конфигурации часто требуется понять, какие команды справочника, документа или отчёта реально выведены в командные интерфейсы — панель разделов, панель навигации форм, подсистемы. Это нужно при чистке неиспользуемых команд, перед удалением объекта, при аудите прав и при переносе функционала между подсистемами.
В 1С нет одной кнопки «показать все места использования команды», поэтому приходится комбинировать несколько приёмов: просмотр свойств команды, редактор командного интерфейса, глобальный поиск по конфигурации и программный разбор метаданных. Ниже разобраны рабочие способы для управляемого приложения.
Что считается командой объекта и где она может использоваться
У объектов конфигурации (справочников, документов, отчётов, обработок, регистров) есть стандартные команды — например, «Создать», «Найти», «Провести», а также команды, добавленные разработчиком на закладке «Команды» в палитре свойств объекта. Каждая команда имеет имя, синоним и группу командной панели, в которую она попадает по умолчанию.
Команда может быть задействована в нескольких местах: в командном интерфейсе подсистем (панель разделов и панель функций), в командном интерфейсе формы объекта (панель навигации и командная панель), в общих командных интерфейсах и в составе общих команд, которые ссылаются на объект через тип параметра команды.
Важно различать видимость и наличие: команда может физически присутствовать в интерфейсе, но быть скрыта функциональной опцией или настройками вида. Поэтому анализ стоит вести на уровне метаданных, а не только по скриншотам работающего приложения.
Просмотр через свойства команды объекта
Откройте объект конфигурации, перейдите на закладку «Команды». Здесь перечислены все команды, добавленные разработчиком. Двойной щелчок по команде открывает её свойства: там видно, в какую группу командной панели она помещается, какой обработчик вызывается и какой тип параметра команды задан.
Группа командной панели — первый индикатор задействованности. Если выбрано, например, «Командная панель формы.Важное» или «Панель навигации формы», команда выводится в интерфейс формы объекта автоматически, без дополнительных настроек. Если группа не задана, команда доступна только программно или через ручное размещение.
Однако свойства команды не показывают, в каких подсистемах она выведена. Для этого нужен следующий шаг — анализ командных интерфейсов подсистем.
Анализ через редактор командного интерфейса подсистемы
Откройте подсистему, в которой предположительно используется команда, и на закладке «Командный интерфейс» нажмите кнопку редактирования. Откроется окно со списком команд панели навигации и панели действий, где флажками отмечена видимость каждой команды.
Здесь видны как стандартные команды объектов, включённых в состав подсистемы, так и общие команды, добавленные вручную. Если команда объекта присутствует в списке и флажок видимости установлен — она задействована в интерфейсе этой подсистемы.
Недостаток способа очевиден: подсистем может быть много, и проверять каждую вручную долго. Поэтому для полного поиска используйте глобальный поиск или программный анализ.
- 1Откройте объект конфигурации, закладка «Команды», посмотрите группу командной панели у нужной команды
- 2Проверьте состав подсистем: в какие из них включён сам объект
- 3Для каждой подсистемы откройте редактор командного интерфейса и найдите команду в списке
- 4Проверьте общие команды с типом параметра, соответствующим вашему объекту
- 5Зафиксируйте результат: где команда видима, где скрыта, где отсутствует
Поиск имени команды по конфигурации
Глобальный поиск (Ctrl+Shift+F в конфигураторе) по имени команды находит упоминания в модулях — обработчики «ОбработкаКоманды», вызовы из других мест кода. Это помогает понять, не вызывается ли команда программно, например из других форм или общих модулей.
Учтите ограничение: поиск по тексту не показывает размещение команды в командных интерфейсах подсистем, потому что эти настройки хранятся в метаданных, а не в виде текстового совпадения имени. Поэтому поиск — дополнение, а не замена анализу интерфейсов.
Ещё один полезный приём — поиск ссылок на объект (Правка → Найти ссылки на объект). Он покажет подсистемы, общие команды и функциональные опции, в состав которых входит объект, а значит, сузит круг мест, где его команды могут быть задействованы.
Программный анализ метаданных
Для массовой проверки — например, по всем командам всех документов — удобнее написать обработку, которая обходит дерево метаданных. Через коллекцию Метаданные.Подсистемы и свойство Состав можно определить, какие объекты входят в подсистему, а значит, команды каких объектов потенциально выведены в её интерфейс.
Для общих команд проверяйте свойство ТипПараметраКоманды у элементов коллекции Метаданные.ОбщиеКоманды: если тип включает ваш объект, команда отображается в интерфейсах форм этого объекта. Свойство ГруппаКоманднойПанели у команды объекта подскажет, выводится ли она в формы автоматически.
Пример фрагмента обхода команд объекта:
Для Каждого Команда Из Метаданные.Документы.РеализацияТоваров.Команды Цикл
Сообщить(Команда.Имя + " | группа: " + Команда.ГруппаКоманднойПанели);
КонецЦикла;Точную настройку видимости команд в панелях навигации подсистем программно получить сложнее — эти данные хранятся в свойствах подсистемы и частично недоступны через объектную модель. Поэтому программный анализ даёт верхнюю оценку, а финальную проверку конкретной команды делайте в редакторе командного интерфейса.
Типичные ошибки при анализе использования команд
Самая частая ошибка — удаление команды после проверки только одной подсистемы. Команда может использоваться в нескольких разделах, в общих командах и вызываться программно. Перед удалением проверяйте все три канала: подсистемы, общие команды, поиск по модулям.
Вторая ошибка — путать стандартные и пользовательские команды. Стандартные («Создать», «Найти») нельзя удалить, можно только управлять их видимостью в командных интерфейсах. Попытка «убрать» их через доработку формы часто приводит к лишнему коду, который ломается при обновлении.
Как проверить результат после изменений
После того как вы изменили состав команд или их видимость, обновите конфигурацию базы данных и запустите приложение под пользователем с типовыми правами. Откройте разделы подсистем и формы объекта: команда должна появиться или исчезнуть именно там, где планировалось.
Дополнительно выполните проверку конфигурации (Конфигурация → Проверка конфигурации) с включённой проверкой логической целостности — она выявит ссылки на удалённые команды в общих командах и настройках.
Как проверить результат
Отображается там, где включена видимость, и только там
Появилась в лишних разделах или пропала из нужного
Команда присутствует в заданной группе командной панели
Команда дублируется или отсутствует
Нет ошибок о неразрешённых ссылках на команды
Ошибки вида «команда не найдена» в общих командах или интерфейсах
FAQ
Можно ли одним отчётом увидеть все места использования команды?
Штатного отчёта нет. Ближайший вариант — комбинация поиска ссылок на объект, глобального поиска имени команды и ручного просмотра редакторов командных интерфейсов подсистем. Для регулярного аудита пишут собственную обработку обхода метаданных.
Почему команда не видна пользователю, хотя в интерфейсе она включена?
Проверьте права доступа на объект, функциональные опции, перекрывающие команду, и настройки вида командного интерфейса. Также убедитесь, что пользователь работает в нужном разделе — команда выводится только в подсистемах, куда включён объект.
Как найти, какие общие команды применяются к моему объекту?
Откройте ветку «Общие команды» в дереве конфигурации и проверьте у каждой свойство «Тип параметра команды». Если в состав типа входит ваш объект, команда отображается в командных панелях его форм согласно заданной группе.
Можно ли скрыть стандартную команду объекта из подсистемы?
Да. В редакторе командного интерфейса подсистемы снимите флажок видимости у стандартной команды. Удалить саму стандартную команду нельзя — управляется только её видимость и доступность через права.
Влияет ли удаление команды на уже существующие данные?
На данные — нет, команда влияет только на интерфейс и логику вызова. Риск в другом: если команда вызывалась программно из модулей или использовалась в общих командах, после удаления возникнут ошибки компиляции. Всегда делайте поиск по имени команды перед удалением.
Где хранятся настройки видимости команд подсистемы?
В метаданных самой подсистемы — это часть конфигурации, а не пользовательские настройки. Изменения видимости команд вступают в силу после обновления конфигурации базы данных для всех пользователей.
Что важно запомнить
Задействованность команды проверяется по трём каналам: командные интерфейсы подсистем, общие команды с типом параметра и программные вызовы в модулях. Единой кнопки нет — используйте редактор командного интерфейса, поиск ссылок и глобальный поиск, а перед удалением команды проверяйте все каналы и выполняйте проверку конфигурации.