Книга: Разработка интерфейса прикладных решений на платформе "1С:Предприятие 8"
Назад: Развитие функциональности ценообразования
Дальше: Подчиненная параметризуемая команда

Общая независимая команда

Функционал печати всех ценников, на первый взгляд, должен расширять возможности справочника Товары. Однако этот объект конфигурации описывает множество объектов данных информационной базы. Если мы реализуем команду как подчиненную справочнику, то мы «научим» каждый из объектов данных печатать ценники на все товары. А это уже лишнее. Объект данных должен быть ответственен только за себя. Поэтому команда будет общей.

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

В группе свойств Основные зададим значения свойств команды (рис. 1.146):

Рис. 1.146. Свойства общей произвольной команды

Следующий шаг – выбор категории команды и группы для ее размещения по умолчанию.

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

Поэтому для свойства Группа открываем окно со списком групп и выбираем элемент ПанельДействий.Сервис (рис. 1.147).

Рис. 1.147. Задание места размещения произвольной общей команды

ПРИМЕЧАНИЕ

Обратите внимание на свойства Тип параметра команды, Режим использования параметра и Изменяет данные – они недоступны для заполнения. Свойства предназначены для описания параметризуемой команды и становятся доступны только при выборе группы с категориями Панель навигации формы или Командная панель формы.

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

В нашем случае созданная команда должна принадлежать трем подсистемам: Ценообразование, Цены, Предприятие. Таким образом, нам требуется отредактировать свойство Состав трех подсистем.

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

Рис. 1.148. Включение произвольной общей команды в подсистемы

Следующая задача – назначение прав на использование команды. Наша команда доступна пользователям с ролью Администратор за счет установленного свойства роли Устанавливать права для новых объектов. От нас требуется обеспечить ее доступность и для роли Менеджер по ценам.

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

Рис. 1.149. Настройка доступности команды для роли «Менеджер по ценам»

Настройка видимости команды по ролям для произвольной независимой команды выполняется аналогично настройке для стандартных команд – в редакторе командного интерфейса (см. раздел ).

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

Рис. 1.150. Настройка видимости произвольной общей команды

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

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

Рис. 1.151. Размещение произвольной общей независимой команды в командном интерфейсе

Таким образом, для произвольной общей независимой команды:

Команду мы создали. А как рассказать пользователю о том, какие действия выполняет произвольная команда? Ответ очевиден – описать назначение команды в документации к прикладному решению. Также назначение команды можно описать во встроенной электронной справке. Для работы со справочной информацией предназначены свойства общей команды из группы Справочная информация. Вызовем соответствующий пункт из контекстного меню команды и в открывшемся окне введем поясняющий текст (рис. 1.152).

Рис. 1.152. Справочная информация по произвольной общей команде «ПечатьЦенниковТовары»

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

Произвольная общая команда в командном интерфейсе представляется своим свойством Синоним. Сейчас команда представлена текстом «Печать ценников товары», и это представление достаточно информативно. Но в дальнейшем мы добавим в прикладное решение еще одну команду печати ценников – по виду цен. Поэтому стоит подумать над таким представлением команды, которое подскажет пользователю, какой вариант печати ценников будет выполнен. Скажем, это будет «Печать всех ценников».

Еще одним способом напоминания пользователю о назначении команды является использование свойства Подсказка. Текст, заданный в этом свойстве, отображается во всплывающей подсказке при наведении указателя мыши на команду. Для свойства Подсказка зададим текст «Печать ценников на все товары по всем видам цен».

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

Рис. 1.153. Измененное представление команды

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

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

Листинг 1.1. Обработчик команды «ПечатьЦенниковТовары»

Сообщение = Новый СообщениеПользователю();

Сообщение.Текст = "Необходимо реализовать алгоритм выполнения команды";

Сообщение.Сообщить();

Чтобы открыть модуль команды, достаточно дважды щелкнуть на имени команды в дереве объектов конфигурации. При создании команды в модуле был автоматически создан ее обработчик. Заполним обработчик текстом, приведенным в листинге 1.1 (рис. 1.154).

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

При выборе команды в режиме 1С:Предприятие в окне сообщений будет выведен текст нашего сообщения (рис. 1.155).

Рис. 1.155. Результат исполнения произвольной общей команды

Назад: Развитие функциональности ценообразования
Дальше: Подчиненная параметризуемая команда