При разработке и кастомизации интерфейсов в 1С:Предприятие 8.3 разработчики часто сталкиваются с ситуацией, когда в панели навигации формы (в левой части окна) присутствуют лишние команды перехода или, наоборот, отсутствуют необходимые. Сложность заключается в том, что эти команды могут генерироваться платформой автоматически или быть «разбросаны» по разным объектам метаданных. В этой статье мы подробно разберем, как обнаружить источник любой команды и как управлять составом панели навигации.
Первым делом проанализируем настройки самой формы, в которой отображается искомая команда. Это самый быстрый способ увидеть структуру навигации, заложенную разработчиком.
Здесь можно управлять видимостью команд. Если команда присутствует в списке, мы можем просто снять флаг в колонке «Видимость», чтобы она исчезла для пользователей. Однако, если команды нет в этом списке, значит, она генерируется платформой динамически на основе связей объектов.
Выясним причину появления команд, которые мы не добавляли вручную. Платформа 1С автоматически создает переходы к связанным объектам. Например, если наш текущий объект (допустим, справочник Контрагенты) является измерением в Регистре сведений или Регистре накопления, команда перехода к записям этого регистра по данному контрагенту появится в панели навигации автоматически.
Чтобы найти такой «скрытый» источник, проанализируем свойства связанных регистров:
Если визуальный осмотр формы и регистров не помог, воспользуемся мощным инструментом — Глобальным поиском. Часто команда является самостоятельным объектом метаданных (Общая команда) или принадлежит другому объекту.
Рассмотрим алгоритм поиска по шагам:
Ctrl + Shift + F.ОбщиеКоманды, Команды конкретных справочников или сами объекты метаданных.Разберем ситуацию, когда команда создана как отдельный объект. В 1С существует два типа таких команд:
1. Параметризуемые команды: Они находятся внутри конкретного объекта в ветке «Команды». Посмотрим на свойство ТипПараметраКоманды. Если там указана ссылка на наш объект, то эта команда будет доступна для включения в панель навигации его форм.
2. Общие команды: Находятся в ветке «Общие -> Общие команды». Они могут отображаться в навигации сразу многих объектов, если в их типе параметра указан ОпределяемыйТип или составной тип данных, включающий наш объект. Проанализируем свойство «Группа» у такой команды. Если там выбрано «Панель навигации.Перейти», ищите её именно там.
Бывает так, что в Конфигураторе команда видна, а в режиме «Предприятие» — нет. Проанализируем возможные причины:
Если вы не нашли команду ни в одном из разделов метаданных, возможно, она изменяется динамически. Посмотрим в модуль формы, в процедуру ПриСозданииНаСервере. Разработчик может программно обращаться к коллекции командного интерфейса.
Рассмотрим пример кода, который может скрывать или настраивать элементы интерфейса:
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
// Программное изменение видимости команды в панели навигации
ЭлементИнтерфейса = КомандныйИнтерфейс.Найти("ОбщаяКоманда.ПоказатьИсториюИзменений");
Если ЭлементИнтерфейса <> Неопределено Тогда
ЭлементИнтерфейса.Видимость = Ложь;
КонецЕсли;
КонецПроцедуры
Такой подход часто используется для тонкой настройки интерфейса в зависимости от условий (например, статуса документа или конкретного значения реквизита).
В самых сложных случаях, когда нужно понять, где именно в структуре метаданных прописано использование команды, можно прибегнуть к методу выгрузки конфигурации в файлы XML. После выгрузки используйте любой текстовый поиск (например, через Notepad++ или VS Code) по всему каталогу с файлами. Ищите имя команды или её уникальный идентификатор. Это позволит найти упоминания команды даже в тех местах командного интерфейса подсистем, которые сложно просмотреть вручную.
Подводя итог, можно сказать, что поиск команды — это последовательная проверка от простого (настройки формы) к сложному (автоматические связи регистров, функциональные опции и программный код). Понимание того, как СтандартныеКоманды и Группы влияют на отображение, позволяет быстро и эффективно настраивать рабочее пространство пользователя.