Разработка и Конфигурация · 12 мин
Командный интерфейс 1С: как к нему обратиться
Как обратиться к командному интерфейсу 1С: программный доступ к панелям, командам и навигационным ссылкам, настройка видимости и типичные ошибки разработчика.
Командный интерфейс в 1С — это набор панелей (разделов, навигации, действий), через которые пользователь открывает документы, справочники и отчёты. Обратиться к нему можно двумя принципиально разными способами: прикладному разработчику чаще нужен программный доступ к командам и навигационным ссылкам, а администратору или пользователю — настройка видимости панелей через стандартные средства платформы.
Путаница возникает из-за того, что у командного интерфейса нет единого программного объекта вида «КомандныйИнтерфейс», к которому можно обратиться напрямую из кода. Вместо этого платформа предоставляет отдельные механизмы: глобальный контекст КомандныйИнтерфейс недоступен, но есть свойства формы, объекты ГлобальныйКомандныйИнтерфейс недоступны напрямую, а работа ведётся через команды формы, навигационные ссылки и настройки подсистем.
Ниже разобраны рабочие способы: как программно выполнить команду интерфейса, как получить навигационную ссылку на объект, как управлять видимостью команд через функциональные опции и роли, и как настроить панели без программирования. Каждый способ сопровождается ограничениями и проверкой результата.
Что такое командный интерфейс и из чего он состоит
Командный интерфейс управляемого приложения включает панель разделов (подсистемы верхнего уровня), панель навигации (команды открытия списков внутри раздела), панель действий (команды создания, отчёты, обработки) и глобальный командный интерфейс формы (стандартные команды вроде «Печать», «Сохранить»). Каждый элемент — это команда, привязанная к объекту метаданных или созданная разработчиком.
Ключевой принцип: состав командного интерфейса платформа строит автоматически на основе конфигурации — подсистем, в которые включены объекты, ролей пользователя и функциональных опций. Поэтому «обратиться» к командному интерфейсу чаще всего означает не вызов метода, а изменение этих источников: подсистем, прав, опций или настроек пользователя.
Программное обращение: навигационные ссылки
Основной способ «вызвать» команду интерфейса из кода — перейти по навигационной ссылке, как это делает сама платформа при нажатии на команду. Для этого используется метод глобального контекста ПерейтиПоНавигационнойСсылке(). Навигационную ссылку на объект получают функцией ПолучитьНавигационнуюСсылку(), а ссылки на стандартные команды имеют вид e1cib/....
НавСсылка = ПолучитьНавигационнуюСсылку(ДокументСсылка);
ПерейтиПоНавигационнойСсылке(НавСсылка);
// Открыть список документов (как команда панели навигации)
ПерейтиПоНавигационнойСсылке("e1cib/list/Документ.РеализацияТоваровУслуг");
Такой переход полностью эквивалентен нажатию команды в командном интерфейсе: откроется форма списка или объекта в том же окне, сработают права и функциональные опции. Если ссылка указывает на объект, недоступный пользователю, платформа покажет стандартное сообщение о нарушении прав — это нормальное поведение, а не ошибка кода.
// Открыть форму списка программно (аналог команды интерфейса)
ОткрытьФорму("Справочник.Номенклатура.ФормаСписка");
// Или через навигационную ссылку — ближе к поведению командного интерфейса
ПерейтиПоНавигационнойСсылке("e1cib/list/Справочник.Номенклатура");Обращение к командам формы и глобальному командному интерфейсу
Если задача — вызвать команду, расположенную в командной панели формы (включая стандартные команды глобального командного интерфейса формы), обращение идёт через коллекцию Команды объекта формы и свойство КоманднаяПанель или Элементы. Программно выполнить команду формы можно, вызвав её обработчик напрямую, либо воспроизведя действие команды кодом.
&НаКлиенте
Процедура ВыполнитьКомандуПрограммно(КомандаИмя)
// Команды формы доступны как ЭтаФорма.Команды
КомандаФормы = ЭтаФорма.Команды.Найти(КомандаИмя);
Если КомандаФормы = Неопределено Тогда
Возврат; // такой команды нет на форме
КонецЕсли;
// Действие команды — имя обработчика; вызываем его
Выполнить(КомандаФормы.Действие + "(Неопределено)");
КонецПроцедуры
Учтите ограничение: стандартные команды (например, «Записать», «Провести») не входят в коллекцию Команды формы — они реализованы платформой. Их действие воспроизводится методами формы: Записать(), Прочитать(), Закрыть(). Попытка найти стандартную команду в коллекции вернёт Неопределено — это частая причина «неработающего» обращения.
Управление составом команд через подсистемы и функциональные опции
Чтобы команда появилась или исчезла в командном интерфейсе, не нужен код — достаточно изменить источники, из которых платформа строит интерфейс. Включение объекта в подсистему добавляет его команды в раздел; функциональная опция, назначенная объекту, скрывает команды, пока опция отключена; роли и права ограничивают доступ к командам на уровне конкретного пользователя.
Порядок настройки в конфигураторе: откройте свойства подсистемы, на закладке «Состав» отметьте нужные объекты; в свойствах объекта на закладке «Функциональные опции» свяжите его с опцией, если команда должна появляться условно; проверьте роли — у пользователя должны быть права на просмотр объекта, иначе команда не отобразится даже при включённой опции.
- 1Откройте конфигуратор, найдите нужную подсистему в ветке «Общие — Подсистемы»
- 2На закладке «Состав» отметьте объект (документ, справочник, отчёт)
- 3При необходимости свяжите объект с функциональной опцией в его свойствах
- 4Проверьте роли: у целевых пользователей должно быть право «Просмотр» на объект
- 5Обновите конфигурацию базы данных и перезапустите сеанс пользователя
- 6В режиме 1С:Предприятие откройте раздел и убедитесь, что команда появилась
Настройка командного интерфейса пользователем без кода
В режиме 1С:Предприятие пользователь с достаточными правами может менять состав и порядок команд внутри раздела. Для этого в разделе откройте меню сервиса (кнопка со стрелкой или «Ещё» в панели навигации) и выберите «Настроить панель навигации» / «Настроить панель действий». В открывшемся диалоге команды переносятся между доступными и выбранными списками, меняется их порядок.
Настройки панели разделов выполняются через главное меню: «Вид — Панель разделов» включает или скрывает панель, а «Настройка панели разделов» позволяет убрать ненужные разделы и изменить порядок. Эти настройки персональные для каждого пользователя и хранятся в его профиле — они не влияют на других пользователей и не требуют изменения конфигурации.
Если нужно вернуть стандартный вид, в том же диалоге настройки есть команда «Установить стандартные настройки». Это безопасная операция: она затрагивает только визуальное расположение команд и не удаляет данные.
Типичные ошибки при обращении к командному интерфейсу
Самая распространённая ошибка — попытка найти в синтакс-помощнике несуществующий объект «КомандныйИнтерфейс» и обратиться к нему как к свойству глобального контекста. Такого объекта в платформе нет: интерфейс формируется декларативно, а программное взаимодействие идёт через открытие форм, навигационные ссылки и команды форм.
Вторая группа ошибок связана с правами: разработчик видит команду в своём сеансе под полными правами, а у пользователя её нет. Перед передачей настройки в работу проверяйте интерфейс под ролью реального пользователя. Третья ошибка — жёсткое формирование навигационных ссылок вида e1cib/... строкой с опечаткой в имени метаданных: переход молча не сработает или откроет ошибку. Предпочтительнее получать ссылку функцией ПолучитьНавигационнуюСсылку(), где имя объекта проверяется компилятором.
Как проверить результат и выбрать подходящий способ
Признак корректного обращения — открытие ожидаемой формы без сообщений об ошибках и с учётом прав пользователя. Если вместо формы появляется сообщение «Нарушение прав доступа», причина в ролях, а не в коде обращения. Если ничего не происходит — проверьте корректность навигационной ссылки и контекст выполнения (клиентская процедура, не серверная: ПерейтиПоНавигационнойСсылке доступен только на клиенте).
Как выбрать способ обращения
Как проверить результат
Открывается нужная форма списка или объекта
Сообщение о нарушении прав или отсутствие реакции
Команда видна под целевой ролью пользователя
Команда видна только под полными правами
Обработчик команды выполняется без исключения
Команды.Найти() вернул Неопределено для стандартной команды
Ограничения и границы безопасной работы
Программное обращение к командам интерфейса возможно только на клиенте: методы открытия форм и перехода по ссылкам недоступны в серверном контексте и в фоновых заданиях. Это архитектурное ограничение платформы, обходить его через вызовы внешних компонентов не следует — перенесите логику в клиентскую процедуру.
Изменение состава подсистем, ролей и функциональных опций — это модификация конфигурации. Перед изменениями в рабочей базе сделайте выгрузку конфигурации или резервную копию, проверьте результат на тестовой копии. Ошибка в ролях может закрыть пользователям доступ к рабочим документам, а ошибочное снятие объекта с подсистемы не удаляет данные, но делает их недоступными из интерфейса до возврата настройки.
Что важно запомнить
Единого объекта «КомандныйИнтерфейс» в коде нет. Программное обращение — через ПерейтиПоНавигационнойСсылке, ОткрытьФорму и коллекцию команд формы; состав интерфейса — через подсистемы, функциональные опции и роли; внешний вид панелей — через персональные настройки пользователя. Проверяйте результат под реальной ролью и на копии базы.
Частые вопросы
Можно ли из кода полностью перестроить командный интерфейс?
Нет. Командный интерфейс строится декларативно из метаданных, прав и настроек. Из кода можно открывать формы и переходить по навигационным ссылкам, но добавить или удалить команду панели программно нельзя — это делается через конфигурацию или пользовательские настройки панелей.
Почему ПерейтиПоНавигационнойСсылке не работает на сервере?
Этот метод доступен только в клиентском контексте, потому что результат его работы — визуальное открытие формы. Вынесите вызов в клиентскую процедуру, а серверные данные передавайте через параметры.
Как открыть отчёт так, будто нажали команду в панели действий?
Используйте ОткрытьФорму("Отчет.ИмяОтчета.Форма") или навигационную ссылку вида e1cib/app/Отчет.ИмяОтчета. Оба способа эквивалентны нажатию команды интерфейса.
Команда есть у администратора, но нет у пользователя. Что проверить?
Проверьте три вещи: роль пользователя должна давать право «Просмотр» на объект; функциональная опция, связанная с объектом, должна быть включена; объект должен входить в состав подсистемы, отображаемой пользователю.
Можно ли скопировать настройки панелей другому пользователю?
Стандартной команды копирования в типовом интерфейсе нет. Настройки хранятся в профиле пользователя; перенос обычно реализуют через настройку конфигурации (подсистемы, роли) либо администратор настраивает панели инструкцией для пользователей.
Как узнать навигационную ссылку нужной команды?
Откройте объект или список в режиме 1С:Предприятие и используйте команду «Получить ссылку» (в меню «Ещё» формы) — платформа покажет навигационную ссылку, которую можно использовать в коде или отправить коллеге.