Интернет. Компьютер. Помощь. Советы. Ремонт

Имя элемента вызвавшей команду формы 1с. Командная панель документа. Закладка "Реквизиты" у формы

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

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

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

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

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

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

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

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

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

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

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

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

В следующем примере, при помощи параметризируемой команды ОстаткиПоТовару выводится отчет, показывающий остатки товара, указанного в текущей строке списка товаров.

Для этого у отчета ОстаткиТоваровНаСкладах создана команда ОстаткиПоТовару со свойствами:

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

Обработчик команды содержит код:

&НаКлиенте
Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)

ПараметрыФормы = Новый Структура("Отбор,КлючНазначенияИспользования,СформироватьПриОткрытии",
Новый Структура("Товар", ПараметрКоманды),
"ОстаткиПоТовару",
Истина);
ОткрытьФорму("Отчет.ОстаткиТоваровНаСкладах.Форма",
ПараметрыФормы,
ПараметрыВыполненияКоманды.Источник,
ПараметрыВыполненияКоманды.Уникальность,
ПараметрыВыполненияКоманды.Окно);

КонецПроцедуры

В этот обработчик передается ПараметрКоманды, содержащий значение типа СправочникСсылка.Товар.

Затем создается структура параметров формы (ПараметрыФормы): Отбор, КлючНазначенияИспользования, СформироватьПриОткрытии.

В параметр Отбор добавляется структура, содержащая элемент Товар со значением, содержащимся в параметре команды (ПараметрКоманды).

Параметр КлючНазначенияИспользования – «ОстаткиПоТовару» определяет назначение использования формы.

А параметру СформироватьПриОткрытии присваивается значение Истина, чтобы отчет формировался сразу после открытия.

Затем структура параметров формы передается в метод глобального контекста ОткрытьФорму(), и форма, указанная в первом параметре метода, открывается с отбором по значению, переданному в ПараметрКоманды.

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

(46.31 килобайт) Кол-во скачиваний: 60

А как вывести отчет сразу по нескольким товарам?

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

(27.93 килобайт) Кол-во скачиваний: 44

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

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

(56.48 килобайт) Кол-во скачиваний: 33

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

Подробнее о свойстве РежимИспользованияПараметраКоманды можно прочитать в синтакс-помощнике: Системные перечисления - Интерфейсные.

Для начинающих разработчиков Учимся программировать

Как с помощью команды выполнить отчет с некоторыми параметрами?

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

В следующем примере, при помощи параметризируемой команды ОстаткиПоТовару выводится отчет, показывающий остатки товара, указанного в текущей строке списка товаров.

Для этого у отчета ОстаткиТоваровНаСкладах создана команда ОстаткиПоТовару со свойствами:

  • Тип параметра команды - СправочникСсылка.Товары
  • Группа - Командная панель формы.Важное .

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

Обработчик команды содержит код:

&НаКлиенте Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды) ПараметрыФормы = Новый Структура("Отбор, КлючНазначенияИспользования, СформироватьПриОткрытии", Новый Структура("Товар", ПараметрКоманды), "ОстаткиПоТовару", Истина); ОткрытьФорму("Отчет.ОстаткиТоваровНаСкладах.Форма", ПараметрыФормы, ПараметрыВыполненияКоманды.Источник, ПараметрыВыполненияКоманды.Уникальность, ПараметрыВыполненияКоманды.Окно); КонецПроцедуры

В этот обработчик передается ПараметрКоманды , содержащий значение типа СправочникСсылка.Товар .

Затем создается структура параметров формы (ПараметрыФормы ): Отбор , КлючНазначенияИспользования , СформироватьПриОткрытии .

В параметр Отбор добавляется структура, содержащая элемент Товар со значением, содержащимся в параметре команды (ПараметрКоманды ).

Параметр КлючНазначенияИспользования - «ОстаткиПоТовару » определяет назначение использования формы.

А параметру СформироватьПриОткрытии присваивается значение Истина , чтобы отчет формировался сразу после открытия.

Затем структура параметров формы передается в функцию ОткрытьФорму() , и форма, указанная в первом параметре метода, открывается с отбором по значению, переданному в ПараметрКоманды .

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

А как вывести отчет сразу по нескольким товарам?

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

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

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

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

Подробнее о свойстве РежимИспользованияПараметраКоманды можно прочитать в синтакс-помощнике: Системные перечисления - Интерфейсные:

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

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

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

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

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

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

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

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

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

Все действия будут иметь следующий вид.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Стандартные команды формы автоматически размещаются в командной панели формы. В нее всегда включаются все команды, предоставленные расширением формы, а также команда Справка , предоставленная формой.

Командная панель формы заполняемая автоматически

1С8: Командная панель формы заполнена автоматически


Изменить форму…
Разрешить изменять форму . По умолчанию свойство имеет значение Истина , и команда включается в командную панель.

Команда настройки формы

1С8: Команда настройки формы

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

Команды сохранения и восстановления параметров

1С8: Команды сохранения и восстановления параметров

ПРИМЕЧАНИЕ
Часть команд отображается непосредственно в командной панели и в меню Все действия, а часть – только в меню Все действия.

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

Команды обработки табличных данных

1С8: Команды обработки табличных данных

ПРИМЕЧАНИЕ
При автоматическом формировании набора команд формы списка форма имеет объединенную командную панель, в которой размещены как команды формы, так и команды таблицы.

Глобальные параметризуемые команды

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

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

Глобальная параметризуемая команда действий в форме

1С8: Глобальная параметризуемая команда действий в форме

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

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

1С8: Глобальная параметризуемая навигационная команда в форме

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

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

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

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

ВНИМАНИЕ!
Если форма (например, форма списка документов) открывается в основном окне приложения, то панель навигации формы не отображается (независимо от настройки видимости навигационных команд), и команды, размещенные в ней, недоступны.

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

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

Для демонстрации влияния ролевой настройки прав на доступный пользователю набор команд включим документ Расход товара в подсистему Ценообразование .

Для роли Менеджер по ценам установим права Чтение и Просмотр на документ. Для подчиненной документу произвольной команды Печать расходной накладной право Просмотр снимем.

ПРИМЕЧАНИЕ
Для исключения ошибок времени выполнения менеджеру по ценам установим право Чтение на справочники Склады, Организации и Валюты.

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

Стандартные команды, доступные пользователям с разными ролями

1С8: Стандартные команды, доступные пользователям с разными ролями

Для пользователя же с ролью Менеджер по ценам разрешен только просмотр документов Расход товара. При построении формы документа (и формы списка документов) для этого пользователя система исключила из состава доступных команды расширения основного реквизита, выполняющие запрещенные пользователю операции с документом – создания, удаления, проведения документа и т. д.
Доступность глобальных команд в форме определяется их доступностью в глобальном командном интерфейсе, который формируется при запуске системы от имени того или иного пользователя.

Понравилась статья? Поделитесь с друзьями!
Была ли эта статья полезной?
Да
Нет
Спасибо, за Ваш отзыв!
Что-то пошло не так и Ваш голос не был учтен.
Спасибо. Ваше сообщение отправлено
Нашли в тексте ошибку?
Выделите её, нажмите Ctrl + Enter и мы всё исправим!