Интерфейс прикладного решения на платформе 1С Предприятие — это лицо системы для конечного пользователя. От того, насколько логично и удобно организована навигация, напрямую зависит скорость работы и эффективность бизнес-процессов. Центральным элементом навигации в такси-интерфейсе и классических версиях являются подсистемы, выстраивающие структуру разделов и панелей разделов.
Часто разработчики сталкиваются с ситуацией, когда после добавления новых функциональных блоков порядок отображения разделов становится хаотичным или не соответствует утвержденному техническому заданию. Платформа 1С предоставляет гибкий, но строгий механизм управления этим порядком, который базируется на свойствах объектов метаданных и служебных приоритетах. Понимание этих механизмов критически важно для создания интуитивно понятных интерфейсов.
В этой статье мы детально разберем, как программно и визуально управлять последовательностью вывода подсистем, какие скрытые параметры влияют на рендеринг меню и как избежать типичных ошибок при проектировании структуры конфигурации. Мы рассмотрим как стандартные свойства объектов, так и нюансы работы с расширениями и обновлениями.
Принципы построения навигации в 1С
Навигационная панель в 1С Предприятие формируется динамически на основе структуры метаданных конфигурации. Основным строительным блоком здесь выступает объект Подсистема. Платформа сканирует дерево метаданных и выстраивает иерархию разделов, опираясь на вложенность объектов и их специфические свойства. Важно понимать, что визуальный порядок в конфигураторе не всегда жестко диктует порядок в работающей базе.
Ключевым фактором, определяющим положение элемента, является свойство Порядок (Order). Это целочисленное значение, которое система использует для сортировки объектов одного уровня вложенности внутри одной родительской подсистемы или панели разделов. Если у двух подсистем одинаковый порядок, платформа может использовать дополнительные критерии, такие как имя объекта или время создания, что часто приводит к непредсказуемым результатам.
⚠️ Внимание: Изменение свойства "Порядок" в конфигураторе не всегда мгновенно отражается в клиентском приложении. В некоторых режимах работы (например, тонкий клиент в режиме предприятия) может потребоваться перезапуск сеанса или очистка кэша временных файлов для применения новых настроек навигации.
Существует также понятие Панели разделов. Это контейнеры верхнего уровня, в которые помещаются подсистемы. Управление порядком самих панелей разделов осуществляется через свойства конфигурации или специальные обработки интерфейса. Разработчик должен четко разграничивать порядок внутри панели и порядок самих панелей, так как механизмы их регулирования отличаются.
Настройка свойства Порядок в конфигураторе
Самый прямой и надежный способ управления последовательностью — ручное задание числового значения в свойствах объекта. Для этого необходимо открыть дерево метаданных, найти нужную подсистему и перейти в палитру свойств. Поле Порядок обычно находится в группе общих настроек объекта.
Рекомендуется использовать шаг в 10 или 100 единиц при присвоении значений (например, 10, 20, 30). Это позволяет в будущем вставлять новые подсистемы между существующими без необходимости пересчитывать номера всех последующих элементов. Если вы зададите порядок 1, 2, 3, то при необходимости вставить элемент между первым и вторым придется менять номера всех последующих.
Свойство Порядок работает относительно других объектов в том же контейнере. Если подсистема не входит ни в одну группу, она считается корневым элементом панели разделов. Значения могут быть отрицательными, что позволяет выводить определенные служебные разделы в самое начало списка, перед основными бизнес-блоками.
Используйте кратные числа (10, 20, 30) для свойства Порядок. Это оставит "воздух" для будущих доработок и позволит вставлять новые разделы без глобального пересчета нумерации всей конфигурации.
При работе в команде разработчиков важно договориться о единой системе нумерации. Хаотичное присвоение номеров разными специалистами может привести к конфликтам при слиянии веток в системе контроля версий. Лучше закрепить за каждым крупным блоком (например, "Зарплата", "Торговля", "Регламентные операции") свой диапазон значений порядка.
Приоритеты и служебные подсистемы
Помимо явного свойства порядка, в платформе 1С существует механизм приоритетов для служебных подсистем. Некоторые разделы, такие как НСИ и Администрирование или Печать, могут иметь встроенные правила отображения, которые переопределяют ручной порядок. Это сделано для того, чтобы критически важные системные функции всегда были доступны пользователю.
Существует специальный тип подсистем — Служебная подсистема. Если установить соответствующий флаг в свойствах объекта, такая подсистема может быть скрыта из навигационной панели или выведена в отдельное служебное меню, независимо от заданного числового порядка. Это мощный инструмент для очистки основного интерфейса от технических разделов.
| Тип подсистемы | Влияние на порядок | Видимость в меню |
|---|---|---|
| Обычная | Сортируется по свойству Порядок | Видима всегда |
| Служебная | Игнорирует общий порядок, уходит в спец. меню | Скрыта или в доп. меню |
| Группа | Сортирует свои дочерние элементы | Видима как папка |
| Панель разделов | Определяет верхний уровень навигации | Видима как вкладка |
Также стоит учитывать роль подсистемы СтандартныеПодсистемы. Платформа автоматически добавляет туда определенные функции, и порядок их вывода может регулироваться глобальными настройками конфигурации, а не свойствами отдельных объектов. Вмешательство в логику работы стандартных подсистем требует особой осторожности.
Как скрыть подсистему из меню?
Чтобы полностью скрыть подсистему из навигации, недостаточно просто изменить порядок. Необходимо снять галочку "Включать в панель разделов" в свойствах объекта или использовать права доступа, запрещающие пользователю видеть этот раздел.
Влияние прав доступа на отображение разделов
Одним из самых частых причин "исчезновения" или изменения порядка разделов является система прав доступа 1С. Механизм безопасности динамически фильтрует навигационное дерево: если у пользователя нет прав на чтение хотя бы одного объекта, входящего в подсистему, вся подсистема может быть скрыта из интерфейса.
Когда система скрывает подсистему из-за отсутствия прав, все последующие элементы сдвигаются, занимая освободившееся место. Это создает иллюзию того, что порядок сбился, хотя на самом деле свойство Порядок осталось неизменным. Для диагностики необходимо проверять профиль групп доступа конкретного пользователя.
В сложных конфигурациях рекомендуется использовать явное указание прав на саму подсистему. В свойствах объекта есть вкладка Права, где можно явно разрешить или запретить видимость раздела для определенных ролей. Это позволяет управлять интерфейсом более гибко, чем просто через права на таблицы или документы.
⚠️ Внимание: Если вы изменили состав ролей или прав доступа, но порядок разделов не восстановился, попробуйте выполнить команду
Администрирование → Обновление конфигурации базы данных. Иногда кэш прав доступа требует принудительной перерегистрации.
Проверку видимости лучше всего осуществлять под тестовым пользователем с минимальным набором прав. Это позволит сразу увидеть, как интерфейс трансформируется для разных категорий персонала (бухгалтер, менеджер, кладовщик) и убедиться, что логика отображения работает корректно.
Особенности работы с расширениями конфигурации
При разработке расширений для типовых конфигураций управление порядком подсистем становится задачей повышенной сложности. Вы не можете напрямую изменять свойства объектов основной конфигурации. Вместо этого приходится использовать механизмы расширения метаданных.
В расширении можно создать новую подсистему и поместить её в нужное место иерархии. Однако, чтобы вклиниться между существующими разделами типовой конфигурации, необходимо точно подобрать значение свойства Порядок. Если вы укажете порядок, который уже занят объектом основной конфигурации, поведение системы может стать непредсказуемым в зависимости от версии платформы.
Рекомендуется использовать значения порядка, выходящие за пределы стандартного диапазона типовой конфигурации, либо анализировать выгрузку метаданных (.dt файл), чтобы найти свободные "окна" в нумерации. Для добавления своих разделов в конец списка часто достаточно установить очень большое числовое значение.
☑️ Проверка расширения конфигурации
Стоит помнить, что при обновлении типовой конфигурации разработчики 1С могут менять внутренние порядки своих подсистем. Ваше расширение, которое работало стабильно, после обновления может "поехать", если ваши номера порядков попадут в новый диапазон, занятый типовыми объектами. Регулярный аудит расширений после обновлений обязателен.
Программное управление и отладка интерфейса
Для сложных случаев, когда стандартных свойств недостаточно, разработчики прибегают к программному управлению интерфейсом. Хотя напрямую менять свойство Порядок метаданных из кода 1С в runtime невозможно, можно влиять на отображение через параметры сеанса или динамическое формирование панелей.
Используйте метод ПараметрыСеанса для передачи флагов, которые могут влиять на видимость определенных групп меню в обработчиках событий интерфейса. Также существует возможность программного добавления команд в панели навигации, что позволяет создавать динамические разделы, порядок которых зависит от бизнес-логики.
// Пример получения состава панелей разделов
ПанелиРазделов = ПанельРазделов.ПолучитьПанелиРазделов();
Для Каждого Панель Из ПанелиРазделов Цикл
Сообщить(Панель.Заголовок + " Порядок: " + Панель.Порядок);
КонецЦикла;
Для отладки проблем с отображением удобно использовать режим Конфигуратор -> Отладка -> Начать отладку с последующим просмотром дерева метаданных в работающем клиенте (если есть соответствующие права). Это позволяет увидеть актуальную структуру навигации "здесь и сейчас", учитывая все права и расширения.
Программное изменение порядка подсистем в runtime невозможно. Все изменения структуры навигации должны производиться на уровне метаданных в конфигураторе или через механизмы расширений.
Почему подсистемы меняются местами после обновления платформы?
Обновление платформы 1С Предприятие может изменять алгоритмы сортировки объектов метаданных, если не задано явное свойство Порядок. В старых версиях сортировка могла идти по имени, в новых — по внутреннему идентификатору. Всегда явно указывайте порядок для критичных разделов.
Как вернуть удаленную подсистему в меню?
Проверьте свойство "Включать в панель разделов". Если оно снято, подсистема существует в метаданных, но не выводится в интерфейс. Также проверьте права доступа: если у пользователя нет прав на объекты внутри подсистемы, она автоматически скроется.
Можно ли сделать порядок подсистем зависимым от роли пользователя?
Прямого механизма для смены порядка в зависимости от роли нет. Однако можно использовать разные панели разделов для разных интерфейсов или скрывать ненужные разделы через права доступа, что визуально изменит структуру меню для конкретного пользователя.
Что делать, если свойство Порядок недоступно для редактирования?
Это возможно, если вы работаете в режиме расширения конфигурации и пытаетесь изменить свойство объекта основной конфигурации. В расширениях можно менять порядок только для тех объектов, которые вы создали внутри расширения, либо использовать обходные пути через группировку.