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