Мне необоходимо после создания задачи скопировать в нее продукты с документа. Я решил это сделать на событие OnAfterExecute задачи и чтобы не делать копирование каждый раз после вызова элемента задачи использую параметры:
ProductsWhereCopied - булевый, значение по-умолчанию false
Вот примерный код того, как я делаю:
function Action1OnAfterExecute(ActionItem, IsComplete) {
// Получаем ID созданной задачи
var TaskID = WFGetParamValue(ActionItem, 'TaskID');
if (!IsEmptyGUID(TaskID)) {
// Проверяем были ли скопированы в этот документ продукты ранее
var ProductsWhereCopied = WFGetParamsMapItemValue(ActionItem,'ProductsWhereCopied');
// Сразу после создания задачи переносим в нее продукты с документа заявки
if (ProductsWhereCopied == false) {
var ParentDiagram = ActionItem.ParentItems.ParentDiagram;
// Получаем ID документа созданного ранее
var DocumentID = WFGetParamValue(ParentDiagram, 'DocumentID');
// Копируем продукты с документа в задачу
CopyOfferingsFromDocumentToTask(DocumentID, TaskID);
// Устанавливаем признак того, что на деталь "Продукты" были скопированы
// продукты
WFSetParamsMapItemValue(ActionItem, 'ProductsWhereCopied', true);
}
}
}
Загвоздка в том, что когда я повторно запускаю элемент БП "Задача", почему-то значение параметра ProductsWhereCopied остается старым, то есть false, и происходит повторное копирование продуктов.
Есть подозрение, что на событие OnExecute можно менять значение параметров и оно будет запоминаться, а на событие OnAfterExecute оно не запоминается, так как, возможно, таблица tbl_WorkflowItem уже закрыта.
Подскажите как можно сделать так, чтобы этот параметр запоминался в БД?