Для удобства и ускорения разработки форм в платформе 1С:Предприятие 8 реализована возможность автоматического заполнения командных панелей.

Данная возможность также позволяет избежать необходимости модернизации уже разработанных форм (в контексте командных панелей). Это может потребоваться в случае добавления в платформу новой функциональности или же вследствие изменений в разрабатываемой конфигурации.

Пример. В конфигурации имеется документ РасходнаяНакладная с разработанной формой документа, в которую вставлена автоматически заполняемая командная панель. В конфигурацию добавляется документ ПриходнаяНакладная, и для него настраивается возможность ввода на основании документа РасходнаяНакладная. При этом автоматически в форме документа РасходнаяНакладная, в командной панели, появится подменю "Ввести на основании" с кнопкой, инициирующей ввод документа ПриходнаяНакладная на основании данного документа.

Набор действий и порядок их выполнения зависят от значения свойства "Источник действий" командной панели.

Источники действий

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

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

Порядок заполнения командных панелей

Все источники - в этом случае для заполнения командной панели используются действия, предоставленные всеми имеющимися в форме источниками (форма и все элементы управления, предоставляющие действия).

Форма - для заполнения командной панели используются действия, предоставленные формой и элементами управления, связанными с реквизитом формы по умолчанию (выделен жирным шрифтом на закладке "Реквизиты" редактора формы).

Конкретный элемент управления - для заполнения командной панели используются действия, предоставляемые данным элементом управления. Подобным источником действий может служить элемент управления ТабличноеПоле.

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

Порядок выполнения действий и обновления состояния кнопок

Действие может быть инициировано пользователем либо путем нажатия на кнопку командной панели, либо нажатием на клавиатуре сочетания клавиш, назначенного кнопке.

Под обновлением состояния кнопок командной панели в данном случае подразумевается запрет/разрешение кнопки, установку пометки и т.д. Обновление состояния происходит в моменты бездействия системы. На текущее состояние кнопки панели влияет множество внешних (по отношению к кнопке) факторов, а также значения свойств кнопки, соответствующих тому или иному состоянию (например, свойства: "Доступность", "Пометка"). Состояние доступности и пометки кнопки зависят в первую очередь от значений соответствующих свойств. Поясним данное высказывание на примере состояния доступности кнопки командной панели и, связанного с этим состоянием, свойства "Доступность": если свойство установлено в значение Истина, то реальная доступность кнопки определяется платформой на основе текущего состояния источника данных; в противном случае кнопка считается недоступной (вне зависимости от текущего состояния источника данных).

Рассмотрим порядок обновления состояния кнопок командной панели и выполнения действий. Этот порядок зависит от вида действия, установленного в кнопке, и от значения свойства "Источник действий ". В случае, когда действием является вызов процедуры, состояние кнопки (доступность) определяется платформой исходя из наличия указанной в действии процедуры; в случае доступности кнопки, при инициации действия будет вызвана соответствующая процедура модуля. Для действий, отрабатываемых платформой, порядок выполнения следующий:

Все источники - сначала производится попытка обновить состояние кнопки (или выполнить действие) посредством элементов управления, связанных с реквизитом формы по умолчанию. Далее, в случае неудачи, попытка производится для активного элемента управления и, затем, для самой формы.

Форма - сначала производится попытка обновить состояние кнопки (или выполнить действие) посредством элементов управления, связанных с реквизитом формы по умолчанию. Далее, в случае неудачи, попытка производится для формы.

Конкретный элемент управления - действия выполняются (или обновляется состояние) непосредственно источником, вне зависимости от его активности в форме.

Свойство "Автозаполнение"

Установка значение Истина свойству "Автозаполнение " командной панели приводит к автоматическому заполнению кнопками в соответствии с выбранным источником действий. Автоматически добавленные кнопки не сохраняются в панели, их набор и порядок определяется платформой и зависит о множества факторов (в основном от текущего состояния источника действий). В случае установленного свойства "Автозаполнение" изменение состава кнопок, предоставляемого источником действий, автоматически отражается на составе кнопок командной панели, связанной с ним. Для подобных кнопок отсутствует возможность редактирования их свойств или изменения положения в командной панели

Имена кнопок

Автоматически вставленные кнопки не имеют строго предопределенных имен, значения имен для них назначаются в процессе заполнения панели. Таким образом имя кнопки зависит от порядка вставки кнопки в панель и, следовательно, не рекомендуется ориентироваться на имена подобных кнопок в процессе программирования формы.

Однако из этого правила есть исключения.

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

В автоматически заполненные панели и подменю имеется возможность добавления неавтоматических кнопок. При этом в случае добавления таких кнопок в подменю, имя кнопки подменю будет зафиксировано и будет оставаться неизменным до тех пор, пока данное подменю содержит кнопки, добавленные вручную.

Ручное заполнение панели

Быстрое заполнение панели кнопками с возможностью их последующего редактирования можно осуществить через контекстное меню командной панели. Для этого необходимо выбрать пункт контекстного меню "Заполнить автоматически". Командная панель заполниться кнопками аналогично случаю с установленным свойством "Автозаполнение", однако, кнопки панели будут доступны для редактирования и появится возможность изменять их состав и порядок.

Заполнение системного подменю

Аналогично командной панели возможностью автозаполнения обладают подменю, предоставляемые источником действий. При вставке такого подменю в панель происходит его автоматическое заполнение. Для заполнения кнопками с возможностью редактирования следует воспользоваться контекстным меню кнопки и выбрать пункт "Заполнить автоматически".

Основные системные подменю:
  • Действия - состоит из кнопок, содержащих основные действия, которые можно выполнить источником действий. Например, действия: Добавить, Изменить, Удалить для элемента управления ТабличноеПоле. Для унификации работы пользователя с формой, при добавлении кнопок в данное подменю рекомендуется придерживаться аналогичного подхода.
  • Перейти - содержит кнопки с действиями, которые инициируют открытие (или активизацию) форм объектов (или списков), так или иначе связанных с данным источником действий (или одной из его составных частей). Например: открытие форм подчиненных справочников; открытие движений, в которых документ является регистратором и т.д. Для унификации работы пользователя с формой, при добавлении кнопок в данное подменю рекомендуется придерживаться аналогичного подхода.