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