Где найти и как настроить команду в меню «Перейти» в конфигураторе 1С?

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

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

Механизм автоматической генерации команд перехода

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

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

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

Где искать настройку видимости в конфигураторе

Если нам необходимо управлять этой командой (скрыть её или переместить), мы не найдем её в списке команд формы. Рассмотрим пошагово, где она находится:

  1. Откроем форму элемента справочника в конфигураторе.
  2. В верхней части окна редактора формы перейдем на закладку «Командный интерфейс».
  3. Развернем ветку «Панель навигации», а внутри неё — группу «Перейти».

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

Влияние прав доступа на отображение команд

Выясним причину, по которой команда может быть видна администратору, но отсутствовать у обычного пользователя. Даже если у пользователя есть права на «Чтение» регистра сведений, кнопка в меню «Перейти» может не появиться. Проанализируем необходимые настройки в ролях:

Рассмотрим практический совет: если права настроены верно, но команда всё равно не отображается, попробуйте «передернуть» настройку. Откройте свойства регистра, снимите флаг Использовать стандартные команды, сохранитесь, а затем установите его обратно. Иногда это помогает обновить внутренние кэши связей метаданных.

Функциональные опции как скрытый фильтр

Если команда настроена, права даны, но кнопка всё равно не видна, следует проверить Функциональные опции (ФО). Это мощный механизм, который управляет видимостью интерфейса в зависимости от настроек программы.

Посмотрим на алгоритм проверки:

  1. Найдем наш регистр (например, ЦеныНоменклатуры) в дереве метаданных.
  2. Нажмем правую кнопку мыши и выберем пункт «Поиск ссылок в объектах».
  3. В списке результатов ищем объекты типа Функциональная опция.

Если регистр включен в состав какой-либо ФО (например, ИспользоватьНесколькоВидовЦен), то при отключении этой опции в пользовательском режиме (в настройках системы) команда перехода исчезнет автоматически во всех формах. Платформа считает, что если функционал выключен, то и кнопки для доступа к нему показывать не нужно.

Общие команды и программное управление

Иногда разработчики типовых решений (таких как УТ 11 или ERP) отказываются от стандартных команд в пользу Общих команд. Это делается для более гибкого управления логикой открытия. Рассмотрим этот вариант:

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


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

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

Резюме по поиску проблемы

Подведем итог нашему исследованию. Если вы потеряли команду в конфигураторе:

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

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

← На главную