Прикладные действия. Расширяем возможности

11 4

Чтобы автоматизировать отдельные и специфичные задачи своей организации, разработчики создают собственные прикладные действия для объектов системы DIRECTUM.

До версии 5.2 разработчики могли писать действия и размещать их в виде гиперссылок или кнопок только в карточках записей справочников и типов документов. Теперь использование действий стало шире. Разработчики смогут создавать прикладные действия в компонентах:

  • Блоки типовых маршрутов с типом Задание и Уведомление;
  • Типовые маршруты;
  • Диалоги;
  • Типы справочников;
  • Типы карточек документов.

А кнопки для этих действий теперь можно размещать:

  • на карточке записей справочников;
  • на ленте списка записей справочников;
  • в контекстном меню записей справочников;
  • на карточке документов;
  • в контекстном меню документов;
  • на ленте карточек заданий и уведомлений;
  • на формах диалогов.

Что же дают столь расширившиеся варианты использования прикладных действий? Главное – это возможность более гибко настраивать и дорабатывать интерфейс системы под требования пользователей.

С помощью прикладных действий вы сможете:

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

Рассмотрим эти и некоторые другие возможности на конкретных примерах, реализованных в системе DIRECTUM 5.2.

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

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

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

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

Прикладные действия в контекстном меню записей справочников и документов

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

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

Прикладные действия в заданиях и уведомлениях

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

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

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

Разрабатывать прикладные действия для заданий и уведомлений можно в двух компонентах: Блоки типовых маршрутов и Типовые маршруты.

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

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

Прикладные действия в диалогах

Разработчик может создавать прикладные действия и для кнопок форм новой компоненты Диалоги. Подробнее в статье «Создать диалог легко и просто».

Например, прикладные действия настроены для гиперссылок диалога «Подписание документов» в типовом маршруте «Согласование проекта документа»:

Разработка прикладных действий

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

Разработка действий происходит в редакторе действий, в котором настраиваются их свойства и пишется программный код:

Так как для разработки действий был создан отдельный инструмент, в редакторе форм закладку «Действия» удалили.

После разработки и отладки для действия необходимо создать новую кнопку или гиперссылку на форме или ленте объекта системы. Для создания новых элементов в карточках справочников, типов карточек документов и форм диалогов используется редактор форм. А для размещения новых кнопок в карточках заданий, уведомлений и формах-списках справочников создан новый инструмент – редактор ленты:

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

Также разработанное действие можно использовать программно, без обращения к форме, поскольку теперь список действия можно получить у объекта, с которым идет работа. Например, в справочнике Календарь резервирования помещений программно вызывается действие RefreshBrowser, чтобы при нажатии на кнопки  и  данные в календаре резервирования динамически изменялись.

Собственные прикладные действия можно добавить и в веб-доступе. Чтобы прикладное действие появилось на форме в веб-доступе, нужно добавить в веб-модуль кнопку и привязать к ней разработанное в desktop-клиенте действие. Привязка действий осуществляется с помощью атрибута jsaction.

Немного выводов

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

На прикладных действиях не заканчиваются новости для разработчиков системы DIRECTUM. Следите за нашими статьями! А пока будем рады ответить на ваши вопросы.

Юлия Литвинюк

Я правильно понимаю, что при добавлении блока в типовой маршрут автоматически добавятся и настроенные для блока действия только в задания, сформированные по этому блоку?

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

Ксения Иванова

Здравствуйте, Юлия.

Я правильно понимаю, что при добавлении блока в типовой маршрут автоматически добавятся и настроенные для блока действия только в задания, сформированные по этому блоку?

Да, все верно, ТОЛЬКО в задания по этому блоку, НО не автоматически, нужно вручную добавить их на ленту.

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

Исходя из моего предыдущего ответа, наоборот, придется добавить действие в тех заданиях, где оно необходимо.

Алексей Арико

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

<ToolPanel type="Reference" refcode="ОРГ" >
<ToolGroup name="TOOLBAR_SEND_GROUP" >
  <ToolItem name="CrtReqForAppOrg" icon="/App_Sprites/ToolbarAndTab/Wizard.png" 
jsaction="AddOrg()" text="CreateRequestForAppendOrganization" tooltip="Создать заявку на добавление организации" /> 
  </ToolGroup>
  </ToolPanel>

А вот  ошибка системы при нажатии на кнопку:
Uncaught ReferenceError: AddOrg is not defined  

Помогите, пожалуйста, разобраться.

Андрей Шестаков

Алексей, добрый день!

1) Привязать прикладное действие к кнопке в вебе можно в версии DIRECTUM 5.5 и выше.
2) Для этого используется  linkedaction="Организация", где "Организация" - имя действия. Пример:

<ToolGroup name="TOOLBAR_OUR_FIRM">
          <ToolItem name="OpenOrg"
                    icon="/App_Sprites/ToolbarAndTab/referenceRecord-20.svg"
                    jsaction="BaseWebAccess.openOrgByOurFirm()"
                    linkedaction="Организация"/>

3) Похоже, что ошибка у вас падает из-за того, что не определена функция AddOrg() в веб модуле.

4) В статье по поводу jsaction не совсем корректная информация. До версии 5.5 нужно дублировать разработку в вебе. В вашем случае нужно разработать функцию AddOrg(), которая будет выполнять требуемые действия.

Авторизуйтесь, чтобы написать комментарий