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

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

При разработке расширений для типовых конфигураций 1С (таких как ERP, Управление торговлей или Комплексная автоматизация) программисты часто сталкиваются с задачей добавления новых команд переходов — для этого пригодится набор инструментов для разработки и отладки расширений 1С. Например, нам необходимо, чтобы из карточки справочника можно было быстро перейти к записям регистра сведений, добавленного или модифицированного в расширении. Частая проблема, с которой сталкиваются разработчики: команда создана, группа (например, "Панель навигации.Перейти") указана верно, тип параметра задан, но команда не отображается ни в редакторе формы, ни в пользовательском режиме. Разберем подробно, как правильно настроить команду навигации в расширении, какие нюансы необходимо учесть в конфигураторе и почему команда может быть невидима для пользователя.

Постановка задачи и типичная ошибка

Представим ситуацию: мы модифицировали типовой регистр (например, ДокументыФизическихЛиц), добавив через расширение в составной тип измерения новый справочник (например, КонтактныеЛицаПартнеров). Мы создаем общую команду или команду формы, чтобы пользователь мог из карточки контактного лица перейти к списку его документов. Настраиваем свойство Тип параметра команды, указывая нужный справочник. Однако, открыв заимствованную форму справочника в расширении, мы не видим нашей команды на вкладке "Командный интерфейс" или в предпросмотре. Почему это происходит? Давайте разбираться по шагам.

Шаг 1. Настройка формы в расширении (Решение проблемы отображения в Конфигураторе)

Самый неочевидный момент при работе с формами в расширениях — это контекст данных. Когда вы добавляете форму в расширение, платформа не переносит автоматически все свойства основного реквизита. Для диагностики структуры и взаимосвязей объектов полезен архитектурный анализ расширений и зависимостей объектов. Если ваша команда параметризируемая (то есть зависит от Ссылка текущего объекта), редактор форм должен понимать, что основной реквизит формы (обычно называемый Объект) имеет именно тот тип, который указан в параметре команды. Что нужно сделать: 1. Откройте форму справочника в расширении конфигурации. 2. Перейдите на вкладку Реквизиты. 3. Найдите основной реквизит формы (он выделен жирным шрифтом, обычно называется Объект). 4. Нажмите на него правой кнопкой мыши. 5. В контекстном меню выберите пункт Добавить в расширение. Это критически важное действие. Пока реквизит Объект не добавлен в расширение явно, платформа в контексте расширения может не "видеть" полной типизации этого реквизита, и механизмы автозаполнения командного интерфейса не срабатывают. Как только вы добавите Объект, редактор формы "поймет", что тип параметра вашей команды совпадает с типом основного реквизита, и команда станет доступна для размещения. После этого перейдите на вкладку Командный интерфейс в редакторе формы. Ваша команда должна появиться в списке доступных команд (например, в группе "Панель навигации.Перейти"). Убедитесь, что напротив неё установлен флажок видимости.

Шаг 2. Проверка свойств команды

Давайте проверим, правильно ли настроена сама команда. Для корректной работы навигации должны быть соблюдены следующие условия:

  1. Группа команды: Должна быть выбрана группа Панель навигации формы.Перейти (или "См. также", если это требуется логикой). Если группа не задана, команда не попадет в панель навигации.
  2. Тип параметра команды: Должен строго соответствовать типу ссылки объекта, в форме которого мы хотим видеть команду. Если мы добавляем команду для СправочникСсылка.КонтактныеЛицаПартнеров, именно этот тип должен быть выбран.

    Важно: Если вы используете составной тип данных в расширении, убедитесь, что тип параметра команды включает все необходимые типы.

  3. Режим использования параметра: Обычно устанавливается в значение Одиночный.

Шаг 3. Почему команды нет в режиме Предприятия?

Часто бывает так: в Конфигураторе мы все настроили, на вкладке "Командный интерфейс" галочку поставили, но запускаем 1С:Предприятие, открываем карточку — а ссылки "Перейти" нет. Проанализируем основные причины такого поведения.

1. Права доступа (Роли)

Это самая распространенная причина. Даже если у пользователя "Полные права", в расширении могут быть нюансы.

2. Безопасный режим расширения

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

3. Функциональные опции

В современных конфигурациях (ERP, КА, УТ) видимость практически всех элементов интерфейса завязана на Функциональные опции (ФО). Если регистр, к которому вы делаете переход, привязан к какой-то ФО (например, "Использовать кадровый учет"), а ваша новая команда к ней не привязана (или привязана, но опция выключена), команда будет скрыта платформой. В свойствах вашей команды найдите поле Функциональные опции и проанализируйте его заполнение. Иногда требуется добавить команду в состав соответствующей ФО в дереве метаданных.

4. Измерение регистра "Ведущее"

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

5. Пользовательские настройки (Кеш интерфейса)

Платформа 1С агрессивно кеширует настройки форм пользователей. Если вы ранее открывали форму без команды, платформа могла запомнить этот состав элементов. Чтобы исключить этот фактор:

  1. Откройте форму элемента в режиме Предприятия.
  2. В правом верхнем углу нажмите меню "Еще" (или кнопку с тремя точками).
  3. Выберите Установить стандартные настройки.

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

Пример программного добавления (если стандартный не работает)

Если по каким-то причинам декларативный метод настройки через свойства не срабатывает (сложные права, динамическая компоновка формы), мы можем добавить команду программно через модуль формы расширения — для отладки такого кода пригодится инструмент для отладки программного кода 1С в режиме Предприятия. Рассмотрим пример кода для процедуры ПриСозданииНаСервере. Мы можем добавить команду в глобальную коллекцию команд формы.


&НаСервере
Процедура Расш1_ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    
    // Создаем команду
    КомандаПерехода = Команды.Добавить("КомандаПерейтиКДокументам");
    КомандаПерехода.Заголовок = "Документы физлица (Расширение)";
    КомандаПерехода.Действие = "Расш1_ОткрытьСписокДокументов";
    
    // Добавляем кнопку в командную панель формы (если нужно)
    // Но для панели навигации этот метод используется реже, 
    // так как программный доступ к панели навигации ограничен.
    
КонецПроцедуры

&НаКлиенте
Процедура Расш1_ОткрытьСписокДокументов(Команда)
    
    ПараметрыОткрытия = Новый Структура;
    ПараметрыОткрытия.Вставить("Отбор", Новый Структура("Физлицо", Объект.Ссылка));
    
    ОткрытьФорму("РегистрСведений.ДокументыФизическихЛиц.ФормаСписка", ПараметрыОткрытия);
    
КонецПроцедуры

Однако, стоит помнить, что программное добавление именно в панель навигации (гиперссылки сверху) штатными средствами языка 1С затруднено, так как коллекция элементов навигации формируется платформой. Поэтому предпочтительнее добиваться работы через настройки метаданных и редактор формы, как описано в Шаге 1.

Заключение

Главный секрет успеха при работе с командами формы в расширении: Всегда добавляйте основной реквизит формы ("Объект") в расширение, даже если вы не планируете менять его свойства. Это дает контекст редактору форм для корректного отображения параметризируемых команд.

Если команда видна в Конфигураторе, но не видна в Предприятии — последовательно проверяйте: Права доступа -> Безопасный режим -> Функциональные опции -> Пользовательские настройки формы.

← На главную