Где найти и как работают глобальные параметризуемые команды в 1С:Предприятии 8

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

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

Природа глобальных параметризуемых команд

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

Выясним причину их появления на конкретном примере. Предположим, у нас есть документ РеализацияТоваровУслуг и регистр сведений ЦеныНоменклатуры. Если в регистре есть измерение с типом ДокументСсылка.РеализацияТоваровУслуг или если этот документ делает движения по регистру (является регистратором), платформа автоматически создаст команду перехода к записям этого регистра прямо в форме документа.

Почему команды называются «параметризуемыми»

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

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

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

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

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

Типы стандартных параметризуемых команд

Разберем, какие именно объекты порождают такие команды:

Программное взаимодействие с параметризуемыми командами

Иногда возникает задача управлять видимостью этих команд программно, в зависимости от условий в данных. Хотя мы не можем изменить алгоритм работы такой команды, мы можем обратиться к ней через коллекцию элементов формы. Платформа формирует имя элемента по определенному шаблону. Обычно это путь к объекту, например:


// Пример программного скрытия стандартной команды перехода к регистру
ИмяКоманды = "ФормаКомандаРегистрСведений_ЦеныНоменклатуры";
ЭлементКоманды = ЭтаФорма.КоманднаяПанель.ПодчиненныеЭлементы.Найти(ИмяКоманды);
Если ЭлементКоманды <> Неопределено Тогда
    ЭлементКоманды.Видимость = Ложь;
КонецЕсли;

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

Влияние функциональных опций

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

Когда стоит отказаться от стандартных команд

Рассмотрим ситуацию, когда стандартной команды недостаточно. Главное ограничение — невозможность изменить логику открытия. Если вам требуется при переходе к регистру наложить сложный программный фильтр, выполнить проверку прав или записать текущий объект перед переходом, стандартная команда не подойдет. В этом случае мы рекомендуем:

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

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

← На главную