К статье
Практический материал

Разработка и Конфигурация · 12 мин

Командный интерфейс 1С: как к нему обратиться

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

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

Путаница возникает из-за того, что у командного интерфейса нет единого программного объекта вида «КомандныйИнтерфейс», к которому можно обратиться напрямую из кода. Вместо этого платформа предоставляет отдельные механизмы: глобальный контекст КомандныйИнтерфейс недоступен, но есть свойства формы, объекты ГлобальныйКомандныйИнтерфейс недоступны напрямую, а работа ведётся через команды формы, навигационные ссылки и настройки подсистем.

Ниже разобраны рабочие способы: как программно выполнить команду интерфейса, как получить навигационную ссылку на объект, как управлять видимостью команд через функциональные опции и роли, и как настроить панели без программирования. Каждый способ сопровождается ограничениями и проверкой результата.

Что такое командный интерфейс и из чего он состоит

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

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

Программное обращение: навигационные ссылки

Основной способ «вызвать» команду интерфейса из кода — перейти по навигационной ссылке, как это делает сама платформа при нажатии на команду. Для этого используется метод глобального контекста ПерейтиПоНавигационнойСсылке(). Навигационную ссылку на объект получают функцией ПолучитьНавигационнуюСсылку(), а ссылки на стандартные команды имеют вид e1cib/....

НавСсылка = ПолучитьНавигационнуюСсылку(ДокументСсылка);

ПерейтиПоНавигационнойСсылке(НавСсылка);

// Открыть список документов (как команда панели навигации)

ПерейтиПоНавигационнойСсылке("e1cib/list/Документ.РеализацияТоваровУслуг");

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

bsl
// Открыть форму списка программно (аналог команды интерфейса)
ОткрытьФорму("Справочник.Номенклатура.ФормаСписка");

// Или через навигационную ссылку — ближе к поведению командного интерфейса
ПерейтиПоНавигационнойСсылке("e1cib/list/Справочник.Номенклатура");

Обращение к командам формы и глобальному командному интерфейсу

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

&НаКлиенте

Процедура ВыполнитьКомандуПрограммно(КомандаИмя)

// Команды формы доступны как ЭтаФорма.Команды

КомандаФормы = ЭтаФорма.Команды.Найти(КомандаИмя);

Если КомандаФормы = Неопределено Тогда

Возврат; // такой команды нет на форме

КонецЕсли;

// Действие команды — имя обработчика; вызываем его

Выполнить(КомандаФормы.Действие + "(Неопределено)");

КонецПроцедуры

Учтите ограничение: стандартные команды (например, «Записать», «Провести») не входят в коллекцию Команды формы — они реализованы платформой. Их действие воспроизводится методами формы: Записать(), Прочитать(), Закрыть(). Попытка найти стандартную команду в коллекции вернёт Неопределено — это частая причина «неработающего» обращения.

Управление составом команд через подсистемы и функциональные опции

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

Порядок настройки в конфигураторе: откройте свойства подсистемы, на закладке «Состав» отметьте нужные объекты; в свойствах объекта на закладке «Функциональные опции» свяжите его с опцией, если команда должна появляться условно; проверьте роли — у пользователя должны быть права на просмотр объекта, иначе команда не отобразится даже при включённой опции.

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

Настройка командного интерфейса пользователем без кода

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

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

Если нужно вернуть стандартный вид, в том же диалоге настройки есть команда «Установить стандартные настройки». Это безопасная операция: она затрагивает только визуальное расположение команд и не удаляет данные.

Типичные ошибки при обращении к командному интерфейсу

Самая распространённая ошибка — попытка найти в синтакс-помощнике несуществующий объект «КомандныйИнтерфейс» и обратиться к нему как к свойству глобального контекста. Такого объекта в платформе нет: интерфейс формируется декларативно, а программное взаимодействие идёт через открытие форм, навигационные ссылки и команды форм.

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

Типичные ошибки
01
Поиск объекта «КомандныйИнтерфейс» в коде — его не существует, используйте формы и навигационные ссылки
02
Обращение к стандартной команде через ЭтаФорма.Команды — стандартные команды там отсутствуют, используйте методы формы Записать(), Прочитать()
03
Ручная сборка ссылки e1cib с опечаткой в имени метаданных — переход не выполняется, ошибку видно только в момент вызова
04
Проверка видимости команды только под полными правами — у рядовых пользователей команда скрыта правами или функциональной опцией
05
Ожидание, что настройка панели одним пользователем применится ко всем — настройки панелей персональны

Как проверить результат и выбрать подходящий способ

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

Маршрут решения

Как выбрать способ обращения

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

Как проверить результат

Открытие по навигационной ссылке
Норма

Открывается нужная форма списка или объекта

Тревожный признак

Сообщение о нарушении прав или отсутствие реакции

Видимость команды в разделе
Норма

Команда видна под целевой ролью пользователя

Тревожный признак

Команда видна только под полными правами

Вызов команды формы
Норма

Обработчик команды выполняется без исключения

Тревожный признак

Команды.Найти() вернул Неопределено для стандартной команды

Ограничения и границы безопасной работы

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

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

Итог

Что важно запомнить

Единого объекта «КомандныйИнтерфейс» в коде нет. Программное обращение — через ПерейтиПоНавигационнойСсылке, ОткрытьФорму и коллекцию команд формы; состав интерфейса — через подсистемы, функциональные опции и роли; внешний вид панелей — через персональные настройки пользователя. Проверяйте результат под реальной ролью и на копии базы.

Частые вопросы

Можно ли из кода полностью перестроить командный интерфейс?

Нет. Командный интерфейс строится декларативно из метаданных, прав и настроек. Из кода можно открывать формы и переходить по навигационным ссылкам, но добавить или удалить команду панели программно нельзя — это делается через конфигурацию или пользовательские настройки панелей.

Почему ПерейтиПоНавигационнойСсылке не работает на сервере?

Этот метод доступен только в клиентском контексте, потому что результат его работы — визуальное открытие формы. Вынесите вызов в клиентскую процедуру, а серверные данные передавайте через параметры.

Как открыть отчёт так, будто нажали команду в панели действий?

Используйте ОткрытьФорму("Отчет.ИмяОтчета.Форма") или навигационную ссылку вида e1cib/app/Отчет.ИмяОтчета. Оба способа эквивалентны нажатию команды интерфейса.

Команда есть у администратора, но нет у пользователя. Что проверить?

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

Можно ли скопировать настройки панелей другому пользователю?

Стандартной команды копирования в типовом интерфейсе нет. Настройки хранятся в профиле пользователя; перенос обычно реализуют через настройку конфигурации (подсистемы, роли) либо администратор настраивает панели инструкцией для пользователей.

Как узнать навигационную ссылку нужной команды?

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