Как добавить новый раздел в панель навигации справочника в 1С:УНФ

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

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

Разберем детально, как устроена эта панель, какими способами можно добавить в нее собственный раздел и какие тонкости платформы 1С:Предприятие 8.3 необходимо учитывать при разработке.

Способ 1. Создание общей команды с параметром ссылки

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

  1. Откроем дерево метаданных в конфигураторе и перейдем в ветку Общие → Команды.
  2. Добавим новую команду и зададим для нее понятное имя, например, ОткрытьСвязанныеДанныеКонтрагента, а также укажем синоним, который будет отображаться в интерфейсе.
  3. В свойстве Тип параметра команды выберем тип СправочникСсылка.Контрагенты. Именно благодаря указанию этого типа платформа поймет, что команду следует встраивать в контекст форм данного справочника.
  4. В свойстве Группа укажем нужную область панели навигации, например: Панель навигации формы.Обычное, Панель навигации формы.Важное или Панель навигации формы.См. также.
  5. Свойство Режим изменения данных переведем в значение Не изменяет, чтобы команда оставалась активной даже тогда, когда форма открыта только для просмотра.
  6. В модуле команды опишем алгоритм открытия целевой формы с передачей ссылки на текущего контрагента в качестве отбора.

Посмотрим на пример кода в модуле команды, где мы получаем ссылку на текущего контрагента через параметр ПараметрКоманды и открываем форму списка связанного справочника или регистра:


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

Обратим внимание на параметры вызова ОткрытьФорму: передача ПараметрыВыполненияКоманды.Источник и ПараметрыВыполненияКоманды.Окно гарантирует корректное открытие формы в рабочей области программы без нарушения пользовательского интерфейса.

Способ 2. Декларативное связывание через структуру метаданных

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

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

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

Способ 3. Реализация через расширение конфигурации

В типовой конфигурации 1С:УНФ рекомендуется избегать снятия объектов с поддержки. Разберем, как аккуратно решить задачу с помощью механизма расширений:

  1. Создадим новое расширение конфигурации с назначением Адаптация или Дополнение.
  2. Добавим в расширение справочник Контрагенты (достаточно добавить только объект без включения всех его реквизитов и форм).
  3. Создадим в расширении общую команду, настроив ее свойства так же, как описано в первом способе (тип параметра — СправочникСсылка.Контрагенты).
  4. Назначим права на команду в новой или заимствованной роли расширения.

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

Ограничения и возможные проблемы при настройке

Выясним причины, по которым добавленный пункт может не отображаться в интерфейсе пользователя:

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

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

← На главную