При разработке управляемых форм в среде 1С:Предприятие 8.3 программисты часто сталкиваются с ситуацией, когда при настройке командного интерфейса (раздел «Панель навигации» или «Панель действий») кнопки для изменения порядка команд — «Переместить вверх» (синяя стрелка вверх) и «Переместить вниз» (синяя стрелка вниз) — оказываются заблокированы (серые). При этом объект может быть полностью захвачен в хранилище, права доступа настроены корректно, но визуальный порядок команд изменить не удается. Разберем подробно, почему так происходит и как вернуть управление интерфейсом в свои руки.
Для начала проанализируем, как платформа 1С управляет составом и порядком команд. По умолчанию в системе включен механизм, который называется «Автоположение». Этот механизм берет на себя ответственность за сортировку команд в соответствии с внутренними алгоритмами платформы. Например, стандартные команды (такие как «Перейти к записям регистра» или «Присоединенные файлы») обычно группируются в начале или в конце списка, а пользовательские команды располагаются между ними.
Когда для элемента командного интерфейса включено свойство Автоположение, система считает, что разработчик доверяет платформе определение позиции этой команды. Следовательно, ручное перемещение кнопками «Вверх» и «Вниз» блокируется, чтобы не возникло конфликта между автоматическим правилом и ручной установкой позиции. Выясним причину: именно наличие установленного флага Автоположение является основным препятствием для свободного перемещения элементов.
Рассмотрим по шагам, что нужно сделать, чтобы получить возможность выстраивать команды в произвольном порядке:
Панель навигации формы.Перейти).Автоположение для той команды, которую мы хотим переместить.Важное замечание: Если мы хотим переместить команду в самую середину списка, где уже находятся другие команды с включенным Автоположением, нам придется снять этот флаг у всех соседних команд, порядок которых мы хотим переопределить. Платформа не позволяет «перепрыгнуть» через элементы, положение которых жестко контролируется системой в автоматическом режиме.
Проанализируем ситуацию, когда даже после снятия флага команда не перемещается в нужный блок. Командный интерфейс разделен на смысловые группы: Важное, Перейти, См. также. Кнопки перемещения работают только внутри одной группы. Рассмотрим подробнее:
Если нам нужно переместить команду из раздела «См. также» в раздел «Перейти», кнопки перемещения вверх/вниз не помогут. В этом случае необходимо изменить свойство Группа у самой команды (в дереве метаданных справочника или документа, либо в редакторе команд формы). После изменения принадлежности к группе команда переместится в соответствующий визуальный блок, и уже там мы сможем настроить её точную позицию, отключив Автоположение.
Посмотрим на ситуацию, которая часто возникает при доработке типовых решений через расширения. Если мы пытаемся изменить порядок команд, заимствованных из основной конфигурации, кнопки могут быть недоступны даже при снятом флаге. Это происходит потому, что структура интерфейса наследуется.
Чтобы получить полный контроль в расширении, необходимо убедиться, что не только сама команда, но и вся структура командного интерфейса формы корректно добавлена в расширение. В некоторых случаях требуется полностью переопределить состав команд в расширении, чтобы «разблокировать» возможность ручной сортировки.
Для ускорения работы с командным интерфейсом, когда флаги Автоположение уже сняты, рекомендуем использовать сочетания клавиш, которые заменяют нажатие кнопок мышью:
Ctrl + Shift + Up (Стрелка вверх) — быстрое перемещение выделенной команды на одну позицию выше.Ctrl + Shift + Down (Стрелка вниз) — быстрое перемещение выделенной команды на одну позицию ниже.Также стоит обратить внимание на визуальную индикацию. В окне настройки элементы с активным автоположением часто помечаются иконкой с буквой «А». Как только мы переходим в ручной режим, эта иконка исчезает, сигнализируя о том, что порядок теперь определяется разработчиком и сохраняется в метаданных формы.
Подведем итог: если кнопки перемещения неактивны, в 99% случаев проблема заключается в активном флаге Автоположение. Снятие этого флага для конкретного элемента или всей группы команд возвращает возможность ручного управления интерфейсом.