Как найти и настроить команду в панели навигации формы 1С?

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

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

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

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

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

Здесь можно управлять видимостью команд. Если команда присутствует в списке, мы можем просто снять флаг в колонке «Видимость», чтобы она исчезла для пользователей. Однако, если команды нет в этом списке, значит, она генерируется платформой динамически на основе связей объектов.

Автоматическая генерация команд по связям метаданных

Выясним причину появления команд, которые мы не добавляли вручную. Платформа 1С автоматически создает переходы к связанным объектам. Например, если наш текущий объект (допустим, справочник Контрагенты) является измерением в Регистре сведений или Регистре накопления, команда перехода к записям этого регистра по данному контрагенту появится в панели навигации автоматически.

Чтобы найти такой «скрытый» источник, проанализируем свойства связанных регистров:

  1. Найдем в дереве метаданных регистры, где наш объект используется как ведущее измерение.
  2. Проверим свойство «Использовать стандартные команды» у этого регистра. Если оно включено, платформа будет предлагать команду перехода в формах объектов, указанных в измерениях.
  3. Если нам нужно убрать команду глобально для всех форм, достаточно отключить это свойство у самого регистра.

Глобальный поиск по наименованию (синониму)

Если визуальный осмотр формы и регистров не помог, воспользуемся мощным инструментом — Глобальным поиском. Часто команда является самостоятельным объектом метаданных (Общая команда) или принадлежит другому объекту.

Рассмотрим алгоритм поиска по шагам:

  1. Запомним точное название команды, как она отображается в режиме «Предприятие».
  2. В Конфигураторе нажмем Ctrl + Shift + F.
  3. В поле поиска введем название команды.
  4. В области поиска обязательно выберем «Свойства».
  5. Проанализируем результаты. Поиск найдет все объекты, у которых в поле «Синоним» указано данное название. Это могут быть ОбщиеКоманды, Команды конкретных справочников или сами объекты метаданных.

Параметризуемые и общие команды

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

1. Параметризуемые команды: Они находятся внутри конкретного объекта в ветке «Команды». Посмотрим на свойство ТипПараметраКоманды. Если там указана ссылка на наш объект, то эта команда будет доступна для включения в панель навигации его форм.

2. Общие команды: Находятся в ветке «Общие -> Общие команды». Они могут отображаться в навигации сразу многих объектов, если в их типе параметра указан ОпределяемыйТип или составной тип данных, включающий наш объект. Проанализируем свойство «Группа» у такой команды. Если там выбрано «Панель навигации.Перейти», ищите её именно там.

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

Бывает так, что в Конфигураторе команда видна, а в режиме «Предприятие» — нет. Проанализируем возможные причины:

Программное изменение панели навигации

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

Рассмотрим пример кода, который может скрывать или настраивать элементы интерфейса:


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

Такой подход часто используется для тонкой настройки интерфейса в зависимости от условий (например, статуса документа или конкретного значения реквизита).

Поиск через выгрузку в XML

В самых сложных случаях, когда нужно понять, где именно в структуре метаданных прописано использование команды, можно прибегнуть к методу выгрузки конфигурации в файлы XML. После выгрузки используйте любой текстовый поиск (например, через Notepad++ или VS Code) по всему каталогу с файлами. Ищите имя команды или её уникальный идентификатор. Это позволит найти упоминания команды даже в тех местах командного интерфейса подсистем, которые сложно просмотреть вручную.

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

← На главную