Действия по событию для работы приложения "Чек-листы"
В разделе описаны скриптовые действия по событию, которые обеспечивают автосоздание чек-листов и их создание из шаблонов вручную. В скриптах действий по событию используются методы скриптового модуля приложения, см. Скриптовый модуль приложения "Чек-листы".
- Действие по событию "[Чек-листы] Прикрепить чек-листы при добавлении объекта"
- Действие по событию "[Чек-листы] Переприкрепить чек-листы при изменении объекта"
- Действие по событию "[Чек-листы] Добавить чек-лист из шаблона с карточки объекта"
Действие по событию "[Чек-листы] Прикрепить чек-листы при добавлении объекта"
Действие обеспечивает автоматический подбор чек-листов при создании объекта, см. Автоматическое добавление чек-листа.
Поля на форме добавления действия по событию:
- Название: [Чек-листы] Прикрепить чек-листы при добавлении объекта.
- Объекты: Запрос.
- Событие: Добавление объекта.
- Действие: Скрипт.
-
Выполнять синхронно:
- флажок снят (рекомендуется) — действие по событию выполняется асинхронно;
- флажок установлен — действие по событию выполняется синхронно.
- Скрипт:
- Название скрипта: [Чек-листы] Прикрепить чек-листы при добавлении объекта.
- Текст скрипта:Copy
/*! UTF8 */
//Автор: pkuzmin
//Дата создания: 02.09.22
//Код: CheklistyPrikrepitCheklisyPriDobavleniiObekta
//Назначение:
/**
* [Чек-листы] Прикрепить чек-лисы при добавлении объекта
*/
//Версия чек-листов: 1.0.0
//Версия SMP: 4.14.0.9
//Категория:
//Параметры------------------------------------------------------
//Функции--------------------------------------------------------
//Основной блок -------------------------------------------------
String subjectUUID = subject.UUID
boolean result = modules.checkLists.createObjectChecklists(subjectUUID) //до версии 2.5.0
//с версии 2.5.1 boolean result = modules.checkLists.updateObjectChecklists(subjectUUID)
if (result)
{
logger.info("Создание и прикрепление чек-листов для ${subjectUUID} прошло успешно")
}
else
{
logger.error("При создании и прикреплении чек-листа для ${subjectUUID} произошла ошибка")
}
Действие по событию "[Чек-листы] Переприкрепить чек-листы при изменении объекта"
Действие обеспечивает создание и прикрепление чек-листов к объекту при изменении этого объекта.
Если текущий набор чек-листов не подходит объекту после его изменения, то формируется новый набор чек-листов. После чего у объекта удаляются неподходящие чек-листы, добавляются новые чек-листы.
Поля на форме добавления действия по событию:
- Название: [Чек-листы] Переприкрепить чек-листы при изменении объекта.
- Объекты: Запрос.
- Событие: Изменение объекта.
- Действие: Скрипт.
-
Выполнять синхронно:
- флажок снят (рекомендуется) — действие по событию выполняется асинхронно;
- флажок установлен — действие по событию выполняется синхронно.
- Скрипт:
- Название скрипта: [Чек-листы] Переприкрепить чек-листы при изменении объекта.
- Текст скрипта:Copy
/*! UTF8 */
//Автор: pkuzmin
//Дата создания: 02.09.22
//Код: CheklistyPereprikrepitCheklistyPriIzmeneniiObekta
//Назначение:
/**
* [Чек-листы] Переприкрепить чек-листы при изменении объекта
*/
//Версия чек-листов: 1.0.0
//Версия SMP: 4.14.0.9
//Категория:
//Параметры------------------------------------------------------
//Функции--------------------------------------------------------
//Основной блок -------------------------------------------------
String subjectUUID = subject.UUID
if (!utils.load(subject.UUID))
{
logger.info("CheckLists объект ${subject.UUID} еще не создан. Запуск действия по событию на обновление прерывается")
}
logger.info('CheckLists changedAttributes -> ' + changedAttributes)
boolean result = modules.chklsts_checkLists?.updateObjectChecklists(subjectUUID)
if (result)
{
logger.info("Обновление чек-листов для ${subjectUUID} прошло успешно")
}
else
{
logger.error("При обновлении чек-листов для ${subjectUUID} произошла ошибка")
}
Условие выполнения действия
Условие выполнения действия позволяет запускать повторный подбор чек-листов только при изменении определенных атрибутов объекта — указанных в группе "[Чек-листы] Для настройки правила выбора шаблона чек-листа" класса, к объектам которого будут добавляться чек-листы, см. Настройки класса "Запрос" для работы с чек-листами.
Общее описание настройки условий, см. Условия выполнения действия по событию.
Поля на форме добавления условия выполнения действия:
- Название: [Чек-листы] Переприкреплять чек-листы только при изменении атрибутов, от которых зависит подбор чек-листа.
- Выполнять проверку синхронно: флажок установлен.
- Скрипт:
- Название скрипта: [Чек-листы] Переприкреплять чек-листы только при изменении атрибутов, от которых зависит подбор чек-листа.
- Текст скрипта:Copy
/*! UTF8 */
//Автор: ashukstov
//Дата создания: 16.11.22
//Код: CheklistyPereprikreplyatCheklistyTolkoPriIzmeneniiAtributovOtKot
//Назначение:
/**
* [Чек-листы] Переприкреплять чек-листы только при изменении атрибутов, от которых зависит подбор чек-листа
*/
//Версия чек-листов: 1.0.0
//Версия SMP: 4.14.0.9
//Категория:
//Параметры------------------------------------------------------
//Функции--------------------------------------------------------
//Основной блок -------------------------------------------------
// Группа атрибутов, на которые завязывается автоподбор чек-листов
def GROUP_CODE = 'chklstSelectRuleConditionAttrs'
// Список атрибутов, которые должны быть изменены, чтобы начать переподбор чек-листов.
// По умолчанию - атрибуты из группы для подбора чек-листов
// Если нужны другие атрибуты - вставьте их коды в список ниже и закомментируйте
// строчку, отмеченную комментарием ниже.
def ATTRIBUTES_FOR_START_RESELECTION = []
def METACLASS = api.metainfo.getMetaClass(subject)
// Закомментируйте следующую строку, если чек-листы должны переподбираться по другому набору атрибутов.
ATTRIBUTES_FOR_START_RESELECTION = METACLASS.getAttributeGroup(GROUP_CODE).getAttributeCodes()
if (changedAttributes.intersect(ATTRIBUTES_FOR_START_RESELECTION).size() > 0)
{
return null
}
return "Переподбор чек-листов не был вызван, так как изменения объекта не касались нужных атрибутов."
Действие по событию "[Чек-листы] Добавить чек-лист из шаблона с карточки объекта"
Действие позволяет пользователю самостоятельно добавлять чек-листы к объекту из шаблона.
Действие выполняется при нажатии на пользовательский элемент управления (кнопку Добавить из шаблона на карточке объекта), для действия указывается дополнительный параметр, который позволяет при создании чек-листа выбрать шаблон, см. Настройка чек-листов на карточке запроса в веб-интерфейсе.
Поля на форме добавления действия по событию:
- Название: [Чек-листы] Добавить чек-лист из шаблона с карточки объекта.
- Объекты: Запрос.
- Событие: [Пользовательское событие].
- Действие: Скрипт.
-
Выполнять синхронно:
- флажок снят (рекомендуется) — действие по событию выполняется асинхронно;
- флажок установлен — действие по событию выполняется синхронно.
- Скрипт:
- Название скрипта: [Чек-листы] Прикрепить к объекту чек-лист из шаблона.
- Текст скрипта:Copy
/*! UTF8 */
//Автор: pkuzmin
//Дата создания: 02.09.22
//Код: CheklistyPereprikrepitCheklistyPriIzmeneniiObekta
//Назначение:
/**
* [Чек-листы] Прикрепить к объекту чек-лист из шаблона
*/
//Версия чек-листов: 1.0.0
//Версия SMP: 4.14.0.9
//Категория:
//Параметры------------------------------------------------------
//Функции--------------------------------------------------------
//Основной блок -------------------------------------------------
String result = modules.chklsts_checkLists?.createChecklistFromTemplate(params.template.UUID, subject.UUID)
if (result)
{
logger.info("Чек-лист ${result} для объекта ${subject.UUID} из шаблона ${params.template.UUID} добавлен успешно")
result.reload(true)
}
else
{
logger.error("Добавление чек-листа для объекта ${subject.UUID} из шаблона ${params.template.UUID} завершилось ошибкой")
}
Параметры действия по событию настраиваются в карточке действия по событию "[Пользовательское событие]" → блок "Параметры".
Общее описание настройки параметров, см. Настройка параметров пользовательского действия.
Поля формы добавления параметра:
- Название: "Выберите шаблон".
- Код: template.
- Тип значения: Ссылка на бизнес-объект.
- Обязательный: флажок установлен.
- Класс: Шаблон чек-листа.
- Типы: Шаблон чек-листа для запроса.
- Скрипт в параметре "Фильтрация значений при редактировании":
- Название скрипта: [Чек-листы] Показывать только шаблоны нужного типа при выборе шаблона на карточке объекта.
- Текст скрипта:Copy
/*! UTF8 */
//Автор: ashukstov
//Дата создания: 04.09.22
//Код: CheklistyPokazyvatTolkoShablonyNuzhnogoTipaPriVyboreShablonaNaKa
//Назначение:
/**
* [Чек-листы] Показывать только шаблоны нужного типа при выборе шаблона на карточке объекта
*/
//Версия чек-листов: 1.0.0
//Версия SMP: 4.14.0.9
//Категория:
//Параметры------------------------------------------------------
//Функции--------------------------------------------------------
//Основной блок -------------------------------------------------
def PARAMS_FOR_UPDATE_ON_FORMS = []
if (form == null) {
return PARAMS_FOR_UPDATE_ON_FORMS
}
def classCode = subject.UUID.split('\\$')[0]
return utils.find('chklstTemplate$' + classCode, [:])