Каждый активный пользователь или администратор программ на платформе «1С:Предприятие» (в особенности конфигурации «1С:Зарплата и управление персоналом») рано или поздно сталкивается с интерфейсными загадками. Одной из таких распространенных проблем является внезапная блокировка режимов просмотра динамических списков. Вы заходите в меню «Ещё — Режим просмотра», чтобы переключить отображение справочника на привычное и удобное дерево или иерархический список, но обнаруживаете, что все пункты меню, кроме плоского «Списка», стали серыми и неактивными. При этом у пользователя могут быть полные права (включая права администратора), но платформа всё равно упорно не дает изменить представление данных.
В этой статье мы подробно разберем, почему возникает такое поведение системы на примере справочника Подразделения (или ПодразделенияОрганизаций), проанализируем неочевидные механизмы работы платформы 1С и рассмотрим пошаговые инструкции по возвращению иерархического режима просмотра.
Давайте проанализируем структуру метаданных конфигурации 1С:ЗУП. Справочник Подразделения спроектирован как подчиненный по отношению к справочнику Организации. Это означает, что каждое конкретное подразделение жестко привязано к своему «владельцу» — определенному юридическому лицу или филиалу. Одновременно с этим справочник является иерархическим, то есть внутри одной организации подразделения могут делиться на департаменты, отделы, сектора и группы.
Когда мы открываем форму списка подразделений в информационной базе, где ведется учет по нескольким организациям, и при этом не установлен отбор по конкретной организации, система оказывается в сложной ситуации:
Чтобы избежать путаницы и некорректного вывода данных на экран, разработчики платформы 1С заложили следующее системное правило: если для подчиненного иерархического справочника не установлен жесткий отбор по конкретному владельцу, режимы просмотра «Дерево» и «Иерархический список» принудительно блокируются. Список автоматически переводится в режим плоской таблицы («Список»).
Разберем, как быстро вернуть возможность просмотра структуры подразделений в виде дерева:
Подразделения.Таким образом, простое указание конкретной организации мгновенно решает проблему заблокированного интерфейса.
Если вы установили отбор по организации (или работаете со справочником, у которого нет подчинения), но режимы просмотра по-прежнему заблокированы, давайте рассмотрим другие возможные причины этой проблемы.
Если пользователь воспользовался стандартным поиском на форме (например, нажал комбинацию клавиш Ctrl + F или Alt + F, либо ввел текст в поисковое поле над таблицей), платформа временно переводит список в плоский режим. Это необходимо для того, чтобы показать пользователю все найденные элементы, удовлетворяющие условиям поиска, независимо от того, в каких группах и на каких уровнях вложенности они находятся. В режиме активного поиска дерево отключается автоматически. Чтобы вернуть иерархию, достаточно очистить строку поиска, нажав на крестик в поле ввода или клавишу Esc.
Иногда пользователи случайно или намеренно настраивают отображение списка под себя. Если зайти в меню «Ещё — Настроить список» и на вкладке «Группировка» добавить любое поле (например, сгруппировать подразделения по какому-то дополнительному реквизиту), платформа начнет строить иерархию на основе этой группировки. В этом случае стандартное системное дерево блокируется. Чтобы восстановить доступ к режимам просмотра, сбросьте настройки списка до стандартных или удалите все пользовательские группировки в указанной вкладке.
Если вы являетесь разработчиком и кастомизируете форму списка, обратите внимание на текст запроса динамического списка. Иерархия может сломаться в следующих случаях:
ОБЪЕДИНИТЬ или ОБЪЕДИНИТЬ ВСЕ (UNION) в тексте запроса. Платформа 1С физически не может строить автоматическую иерархию над объединенными результатами таблиц, так как теряются индексы и метаданные связей родительских элементов. Например, следующий запрос гарантированно заблокирует режим дерева:
ВЫБРАТЬ
Подразделения.Ссылка КАК Ссылка,
Подразделения.Наименование КАК Наименование
ИЗ
Справочник.ПодразделенияОрганизаций КАК Подразделения
ГДЕ
Подразделения.Организация = &Организация1
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
ПодразделенияДоп.Ссылка КАК Ссылка,
ПодразделенияДоп.Наименование КАК Наименование
ИЗ
Справочник.ПодразделенияОрганизаций КАК ПодразделенияДоп
ГДЕ
ПодразделенияДоп.Организация = &Организация2
Родитель и ЭтоГруппа. Если разработчик в тексте запроса исключил их из выборки или переопределил их имена через псевдонимы (например, Родитель КАК ВышестоящийЭлемент), то платформа потеряет маркеры иерархической связи и заблокирует режим просмотра дерева. Нам всегда нужно контролировать присутствие этих полей в выборке динамического списка.В крупных информационных базах часто настраиваются сложные ограничения прав доступа на уровне записей (RLS). Если для конкретного пользователя настроены роли, которые ограничивают чтение некоторых родительских групп подразделений, платформа может превентивно отключить иерархические режимы. Это связано с тем, что система не сможет построить корректное дерево, если у него будут отсутствовать промежуточные «узлы» (папки), к которым у пользователя нет доступа.
Мы подробно разобрали все возможные причины, по которым блокируется режим просмотра динамического списка в 1С. Понимание этих механизмов поможет вам быстро решать подобные интерфейсные затруднения как при работе в качестве обычного пользователя, так и при разработке сложных прикладных решений на платформе «1С:Предприятие».