Разработка и Конфигурация · 11 мин
Подсистема с одной командой в 1С: что это и как с ней работать
Подсистема с одной командой в 1С — что это за объект конфигурации, как работает, чем отличается от обычной подсистемы и когда её стоит использовать разработчику.
Разработчики, которые открывают дерево конфигурации в конфигураторе 1С, иногда встречают подсистемы, у которых в составе нет ни одного объекта — ни документов, ни справочников, ни отчётов. При этом подсистема отображается в интерфейсе и содержит единственную команду. Это и есть подсистема с одной командой — специальный приём организации командного интерфейса, при котором подсистема используется не для группировки объектов метаданных, а как контейнер для одной прикладной команды.
Такой подход встречается в типовых конфигурациях и в собственных разработках, когда нужно вывести в панель разделов отдельный пункт, запускающий конкретное действие: открытие обработки, запуск обмена данными, переход к настройкам или выполнение сервисной операции. Понимание того, как устроена такая подсистема, помогает не путаться при доработке конфигурации и осознанно решать, применять этот приём или нет.
Как устроен командный интерфейс и где в нём подсистемы
В управляемом приложении 1С интерфейс пользователя строится автоматически на основе подсистем. Каждая подсистема верхнего уровня становится разделом в панели разделов, вложенные подсистемы формируют группы внутри раздела, а объекты, включённые в состав подсистемы, попадают в панель навигации и панель действий. Разработчик не рисует меню вручную — он распределяет объекты по подсистемам и настраивает порядок команд.
Стандартная логика платформы предполагает, что подсистема объединяет функционально связанные объекты: например, подсистема «Продажи» включает документы реализации, счета, отчёты по продажам. Однако платформа не запрещает создавать подсистему без объектов в составе. Если у такой подсистемы в командном интерфейсе вручную добавлена команда, она всё равно отобразится в панели разделов — именно на этом основан приём «подсистема с одной командой».
Важно понимать, что пустая подсистема без единственной команды в интерфейсе не отображается вовсе. Платформа скрывает разделы, в которых пользователю нечего выполнить. Поэтому наличие хотя бы одной видимой команды — обязательное условие появления подсистемы в панели разделов.
Что представляет собой подсистема с одной командой
Технически это обычный объект метаданных «Подсистема», у которого выполнены два условия. Во-первых, в состав подсистемы не включён ни один объект конфигурации — либо включены объекты, недоступные пользователям по правам. Во-вторых, в командный интерфейс подсистемы вручную добавлена одна команда: глобальная общая команда, команда открытия обработки или команда объекта метаданных.
Для пользователя такой раздел выглядит как отдельный пункт в панели разделов. При переходе в него открывается панель функций, где видна ровно одна команда. Нажатие на неё выполняет целевое действие: открывает внешнюю или встроенную обработку, запускает помощник настройки, вызывает общую форму.
Отличие от обычной подсистемы в том, что здесь подсистема играет роль «обёртки» для команды, а не инструмента классификации. Это осознанное архитектурное решение, а не ошибка конфигурирования, хотя неопытный разработчик может принять такую подсистему за недоработку.
Откройте свойства подсистемы и проверьте вкладку «Состав» — объектов метаданных там нет или они недоступны по правам
Откройте редактор командного интерфейса подсистемы — в панели действий или навигации добавлена единственная команда
В панели разделов виден отдельный раздел, внутри которого только одна функция
Зачем используют такой приём
Основная причина — необходимость выделить одно важное действие в отдельный раздел верхнего уровня. Если поместить сервисную команду внутрь существующей подсистемы, пользователю придётся искать её среди десятков других пунктов. Отдельный раздел с говорящим названием делает функцию заметной и сокращает путь до неё до двух кликов.
Типичные сценарии применения — запуск обмена данными с внешними системами, открытие рабочего места администратора, старт мастера первоначальной настройки, переход к обработке загрузки данных. В этих случаях команда концептуально не принадлежит ни одной прикладной подсистеме, и создание отдельного раздела оправдано.
Ещё одна причина — управление правами и видимостью. Подсистема связана с ролями: можно назначить права так, что раздел увидят только определённые группы пользователей. Это удобнее, чем настраивать видимость отдельной команды внутри большого раздела.
Как создать подсистему с одной командой
Создание выполняется в конфигураторе и занимает несколько минут. Перед началом убедитесь, что у вас есть резервная копия информационной базы или работа ведётся в тестовой копии: изменения конфигурации затрагивают интерфейс всех пользователей после обновления.
- 1Создайте объект метаданных «Подсистема», задайте имя и синоним — синоним увидят пользователи в панели разделов
- 2При необходимости назначьте картинку раздела и включите опцию отображения в панели разделов
- 3Не включайте объекты в состав подсистемы — оставьте состав пустым
- 4Откройте редактор командного интерфейса подсистемы и добавьте нужную команду: общую команду или команду объекта
- 5Проверьте видимость команды и настройте роли так, чтобы раздел видели только целевые пользователи
- 6Обновите конфигурацию базы данных и проверьте результат в режиме предприятия под пользователем с целевыми правами
Если целевого действия ещё нет в конфигурации, сначала создайте его: общую команду с обработчиком, обработку с основной формой или общую форму. Команда открытия обработки формируется платформой автоматически, а общую команду придётся описать вручную с указанием модуля и типа параметризации.
Чем отличается от альтернативных способов вывести команду
Подсистема с одной командой — не единственный способ дать пользователю доступ к действию. Выбор зависит от того, насколько заметной должна быть функция и как она соотносится с остальной структурой конфигурации.
Варианты размещения команды
Максимальная заметность: раздел верхнего уровня. Подходит для ключевых сервисных операций. Минус — увеличивает число разделов в панели
Не раздувает панель разделов, но команду сложнее найти среди других пунктов. Подходит для вспомогательных функций
Доступна из любого раздела, но менее заметна и неочевидна для новых пользователей
Команда или форма на рабочем столе видна сразу после входа, но место на начальной странице ограничено
Если функция используется ежедневно и является центральной для части пользователей — отдельный раздел оправдан. Если это редкая вспомогательная операция, разумнее разместить её внутри профильной подсистемы и не перегружать панель разделов.
Типичные ошибки и ограничения
Отдельно стоит упомянуть ограничение по функциональным опциям. Если команда связана с функциональной опцией, которая отключена, раздел может исчезнуть из интерфейса без каких-либо сообщений. При диагностике «пропавшего» раздела проверяйте три вещи: права, функциональные опции и наличие видимых команд в интерфейсе подсистемы.
Как проверить результат
Раздел виден в панели разделов у целевых пользователей
Раздел не отображается — проверьте права, функциональные опции и наличие видимой команды
Нажатие открывает нужную форму или выполняет действие без ошибок
Ошибка при выполнении — проверьте обработчик команды и права на вызываемые объекты
У пользователей без профильной роли раздел отсутствует
Раздел виден всем — доработайте настройку ролей
Безопасные границы самостоятельной доработки
Создание собственной подсистемы с одной командой в типовой конфигурации технически возможно, но имеет последствия для обновлений. Объекты, добавленные в типовую конфигурацию, при обновлении обычно сохраняются, однако изменения в типовых подсистемах могут конфликтовать с обновлением поставщика. Поэтому свою подсистему лучше создавать как новый объект, а не переопределять типовые разделы.
Перед изменением командного интерфейса рабочей базы сделайте выгрузку конфигурации или резервную копию. Ошибка в настройке интерфейса не разрушает данные, но может лишить пользователей привычных разделов до следующего исправления, что для работающей организации означает простой.
Прежде чем создавать новый раздел, посмотрите, сколько разделов уже в панели. Если их больше десятка, пользователи перестают ориентироваться. Часто правильнее добавить команду в существующий раздел «Сервис» или «Администрирование», чем плодить новые подсистемы.
Часто задаваемые вопросы
Это ошибка, если в типовой конфигурации есть подсистема без объектов в составе?
Нет, это не обязательно ошибка. Разработчики типовых решений используют подсистемы для структурирования командного интерфейса, и часть из них может содержать только команды или вложенные подсистемы. Признак проблемы — не пустой состав, а отсутствие раздела там, где он должен быть, или ошибки при выполнении команд.
Почему созданная подсистема не появилась в панели разделов?
Наиболее частые причины: в командном интерфейсе подсистемы нет ни одной видимой команды, у пользователя нет прав на объекты подсистемы, команда отключена функциональной опцией или подсистема не включена в состав интерфейса. Проверяйте эти условия последовательно, начиная с редактора командного интерфейса.
Можно ли добавить в такую подсистему несколько команд?
Да, технически ограничений нет. Но тогда она перестаёт быть «подсистемой с одной командой» как приёмом и становится обычным разделом. Если команд несколько, стоит подумать о группировке и о том, не превратить ли её в полноценную подсистему с объектами.
Чем это отличается от общей команды?
Общая команда — это само действие с обработчиком, а подсистема — контейнер, определяющий, где команда появится в интерфейсе. Одна и та же общая команда может быть добавлена в несколько подсистем, и в каждой она отобразится как пункт меню.
Повлияет ли создание своей подсистемы на обновление типовой конфигурации?
Новый объект, добавленный в конфигурацию, обычно не конфликтует с обновлением, поскольку поставщик его не изменяет. Риск возникает при изменении типовых подсистем и типового командного интерфейса — такие изменения придётся контролировать при каждом обновлении вручную.
Что важно запомнить
Подсистема с одной командой — это осознанный приём: подсистема без объектов в составе, служащая контейнером для единственной команды интерфейса. Применяйте его для выделения ключевых сервисных операций в отдельный раздел, не злоупотребляйте количеством разделов и всегда проверяйте видимость через права и функциональные опции.