1с общие команды на управляемой форме

Обновлено: 06.07.2024

Как управлять расположением команд в командной панели формы?

В 1С Предприятии 8.2 внешний вид формы определяется расположением и свойствами элементов в дереве элементов формы. На основе этих свойств система сама "рисует" форму, в частности, командную панель формы.

Любая группа кнопок (командная панель, подменю, группа кнопок, контекстное меню) заполняется по одинаковым правилам:

  • сначала идут кнопки, предоставляемые источником команд, с которым связана данная группа;
  • затем идёт фрагмент командного интерфейса, если источник команд подразумевает его включение;
  • затем идут пользовательские команды, добавленные в данную группу;
  • затем идёт подменю Все действия (только для командной панели);
  • и в конце идёт кнопка Справка в том случае если она была предоставлена источником команд.

Рассмотрим самый простой вариант, когда в форме элемента справочника созданы две команды и помещены в командную панель формы.


В результате в режиме 1С:Предприятия расположение кнопок, соответствующих созданным командам Команда1 , Команда2 соответствует описанному выше алгоритму: в командной панели формы и в подменю Все действия сначала расположены команды, предоставляемые источником команд - формой элемента справочника (например, Записать и закрыть, Записать и др.), затем команды, созданные разработчиком ( Команда1 , Команда2 ), и затем команда Справка .


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

1. Можно отделить команды, созданные разработчиком, от других команд разделителем.

Для этого нужно создать в командной панели группу вида Группа кнопок и перенести в нее эти команды.


2. Можно расположить какие-то команды разработчика в начале группы команд.

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


В результате в режиме 1С:Предприятия командная панель формы и подменю Все действия будут иметь следующий вид.


3. Можно переместить автоматически заполняемые кнопки.

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


В результате в режиме 1С:Предприятия командная панель формы и подменю Все действия будут иметь следующий вид.


Чтобы пиктограмма команды Удалить отображалась в командной панели формы, нужно установить свойство этой кнопки ТолькоВоВсехДействиях в значение Нет .

4. Можно изменить порядок и видимость кнопок фрагмента командного интерфейса, предоставляемого источником команд Форма .

Например, у объекта конфигурации справочник Контрагенты существует команда Команда3 . Эта команда имеет группу размещения команд - Командная панель формы.Важное и тип параметра команды - СправочникСсылка.Контрагенты .


После установки этих свойств, Команда3 становится доступна закладке Командный интерфейс формы объекта, тип которого имеет команда и располагается в командной панели формы после стандартных команд, поставляемых формой элемента справочника.


В результате в режиме 1С:Предприятия командная панель формы и подменю Все действия будут иметь следующий вид.


Команда3 входит в группу команд фрагмента командного интерфейса. Если Вас не устраивает место, в которое вставляется фрагмент командного интерфейса, можно поместить в командную панель группу вида Группа кнопок и у этой группы установить источник команд - Глобальные команды командной панели формы .


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


Что же касается содержимого фрагмента командного интерфейса, то его редактирование доступно на закладке Командный интерфейс редактора формы.

5. Можно включить/выключить видимость стандартных команд, предоставляемых источником команд, например - Форма .

Для этого нужно открыть окно Состав команд в палитре свойств формы.


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

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

Как и для других объектов конфигурации, для объекта Группа команд определены универсальные свойстваИмя, Синоним, Комментарий.
Для определения места размещения группы используется свойство Категория.

ВНИМАНИЕ!
Свойство группы Категория обязательно должно быть заполнено. Если значение для свойства не выбрано, система установит значение по умолчанию Панель навигации.

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

Для группы команд Печать установлена категория Командная панель формы. Это значит, что в интерфейсе произвольная группа размещена в командной панели формы.

Давайте включим произвольную команду печати ценников по виду цен в группу Печать. Для этого в свойстве Группа нашей подчиненной команды установим произвольную группу Командная панель формы.Печать.

Кроме того, для свойства Отображение установим значение Авто

Включение произвольной команды в произвольную группу

1С8: Включение произвольной команды в произвольную группу

1С8: Включение произвольной команды в произвольную группу

Теперь в форме списка и форме элемента справочника Виды цен команда печати ценников располагается уже не в группе Важное, а в группе Печать.

ПРИМЕЧАНИЕ
В командной панели формы кнопками отображаются команды из группы Важное. Команды остальных групп отображаются в виде подменю.

Настройка представления произвольной группы команд

1C8: Настройка представления произвольной группы команд

1C8: Настройка представления произвольной группы команд

Из особенностей объекта Группа команд необходимо отметить, что для него не назначаются права, не определяется принадлежность к подсистемам и зависимость от функциональных опций. Произвольная группа будет представлена в командном интерфейсе пользователя только в том случае, когда в нем доступна хотя бы одна из команд, включенных в группу.
В противном случае группа в командный интерфейс не включается. В нашем приложении доступ к справочнику Виды цен разрешен и для роли Менеджер по продажам. Но для этой роли сброшено право Просмотр для произвольной подчиненной команды.

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

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

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

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

В элементах управления данные не хранятся!

Разделители являются специальными элементами, с помощью которых возможно перераспределение пространства формы без изменения ее размеров.

Платформа в режиме 1С:Предприятие для управляемых форм самостоятельно добавляет эти элементы в форму.

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

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

Наличие разделителя должно интуитивно угадываться при работе с формой, поэтому ближайшие от разделителя по направлениям его передвижения элементы управления размещаются вплотную к нему, таким образом визуально предполагая его расположение:

  • вертикальным разделителям устанавливается ширина 6, горизонтальную привязку рекомендуется устанавливать в НеПривязано ;
  • горизонтальным разделителям устанавливается высота 6, вертикальную привязку рекомендуется устанавливать в НеПривязано;
  • рамку рекомендуется устанавливать в НетРамки . В сложных случаях, когда пользователю может быть тяжело догадаться о наличие разделителя, допускается устанавливать рамку Одинарная .

Разделитель обладает способностью "захватываться" мышью и перемещаться внутри формы в ее пределах с учетом возможности расположения других элементов и ориентации разделителя.

При перемещении разделителя, все элементы, связанные с разделителем, будут изменять свои размеры или перемещаться.

Таким образом, элемент управления "Разделитель" позволяет перераспределять внутреннее пространство формы, изменяя размеры расположенных в ней элементов управления, привязанных к разделителю. Размеры самой формы при этом не меняются.

Команды формы редактируются в списке. Разработчик имеет возможность:

  • добавить, удалить команды формы;
  • задать свойства команд с помощью палитры свойств;
  • назначить для команды процедуру, которая будет выполняться при вызове этой команды пользователем.

Для добавления команды в виде кнопки:

  1. на обычной форме можно разместить на форме элемент управления "Кнопка", назначить обработчик события "Нажатие" и определить алгоритм в модуле формы;
  2. на управляемой форме можно:
    • добавить в форму элемент управления "Кнопка", назначить команду из списка команд формы и определить алгоритм команды в модуле формы;
    • добавить команду формы в командный интерфейс формы и включить ее видимость.

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

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

Для кнопки можно определить процедуру-обработчик для события "Нажатие"; тем самым кнопка программируется для выполнения некого стандартного действия:

В качестве обработчика события "Нажатие" элемента управления "Кнопка" может быть выбрано:

  1. стандартное действие;
  2. процедура модуля формы, в которой расположена кнопка.

Глобальную процедуру инициировать напрямую по кнопке нельзя.

Поясняющая информация на элементе управления "Кнопка" может быть представлена в виде:

Введение в управляемая форма 1С реквизиты элементы команды

Рекомендуется модифицировать управляемые формы типового решения 1С программно для удобного будущего обновления и исключения конфликтов, а также для удобной работы с изменениями и надежности при использовании механизма расширений.
В некоторых типовых конфигурациях 1С (ЕРП 2, УТ 11) используется механизм упрощенного изменения конфигурации. Статьи о типовом механизме можно найти в разделе полезных ссылок. Данный механизм используется в БСП, и его необходимо знать при модификации типовых конфигураций.
При добавлении элементов на форму программно можно отредактировать практически любое свойство из панель свойств, которое можно установить вручную в конфигураторе.
Также все описанные в текущем разделе процедуры и функции находятся во внешней обработке УпрФормы.

Программное переопределение обработчиков событий формы и элементов формы

В теле модуля формы:

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

Аналогично можно поступить и с обработчиками элементов формы:

Программное создание групп формы.

Доступные виды групп формы:


Программное добавление команды на форму.

Удалить команду можно при помощи метода коллекции формы команд: Команды.Удалить(<Команда>). Удалять можно только те команды, которые были созданы программно.

Программное создание декораций форм.

Программное добавление реквизита на форму.

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

Вывод реквизитов на форму.

Вызов процедур при создании на сервере 1С

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

Некоторые советы при программном редактировании формы


Итак, взглянем на получившийся результат. Все элементы на форме созданы программно:

Управляемый интерфейс. Команды в 1с

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

Думаю можно сказать, что в 8.1, да и в 7.7 концепция была следующей: оформление определяет логику работы формы, в управляемом интерфейсе во главе стола поставили логику работы, формирование внешнего вида формы переложили на плечи движка 1с. Таким чином от того куда перетащил программист команду зависит визуальное оформление элемента который запустит команду на выполнение

Изображение

Как видите, это может быть «объемная кнопка», плоская кнопка на панели инструментов, или пункт выпадающего меню.

Но если посмотреть на скриншот, то видно, что кроме нашей «Команда1» на форме есть кнопки «Провести и закрыть», а в меню наша команда потерялась во множестве других, которые мы не программировали и не создавали. Это стандартные команды 1с, они есть у форм, справочников, документов и других объектов 1с. Некоторые команды общие некоторые присущи только определенному типу объектов.

Команды могут находиться в 3 местах в конфигурации:

Изображение

- команды формы (управляемой) находятся в модуле формы

- команды конкретного объекта конфигурации находятся в соответствующей ветке

Изображение

- команды без привязки к конкретным объектам конфигурации – общие команды, которые находятся в ветке Общие – общие команды (кто бы мог подумать).

Изображение

Как и в обычных процедурах и функциях командам 1с можно передавать значения для обработки. Значение, которое передается, указывается в соответствующем поле свойств команды:

Изображение

То где будет отображаться команда указывается в поле «Группа». Например, если мы укажем, так как показано на скриншоте то в системе команда отобразиться так:

Изображение

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

Читайте также: