Добрый день
Есть потребность указывать специфический номер счета в одном конкретном БП. один из элементов номера - количество ранее созданных по БП счетов.
В БП сначала запускается задача, после нее выполняется ряд задач и открывается новый счет, чтобы передать в номер счета нужные данные в событии задачи указал следующий код
var SelectQuery = GetSingleItemByCode('sq_CountOfSeminarTask');
var Dataset = SelectQuery.Open();
var TaskCount = Dataset.Values('TaskCount');
Dataset.Close();
// var ParentDiagram = GetDiagramByItem(ActionItem);
WFSetParamValue(ActionItem.ParentItems.ParentDiagram,'TaskCount',TaskCount);
}
TaskCount - параметр диаграммы, который привязан к номеру открываемого счета, но в счет подставляется заранее заданное в параметре значение, хотя в скрипте значение TaskCount получается корректно, но в в параметр диаграммы не записывается
Как бы его туда все таки записать?
Нравится
Запись в параметры строчкой
WFSetParamValue(ActionItem.ParentItems.ParentDiagram,'TaskCount',TaskCount);
у Вас правильная.
Для проверки того, что изменения в параметре действительно произошли, поставьте после этого элемента, в обработчике которого пропишите код
var TaskCount = WFGetParamValue(ScriptItem.ParentItems.ParentDiagram, 'TaskCount');
MessageBox(TaskCount);
Если нужно изменить номер определенного счета, ID которого хранится у Вас в параметре, то лучше использовать элемент диаграммы "Чтение/изменение данных" с вариантом "запись значений параметров в БД"
Этот определенный счет создается после задачи в скрипте которой прописан приведенный код. то есть при старте БП открывается задача, в которой предполагается занесение значения в параметр БП, после задачи стартуют 2 отправки e-mail, после которых создается счет. соответственно id счета заранее не известен, хотелось подставлять в открываемое окно.
но можно попробовать делать изменение после сохранения счета. будем пробовать
прописал предложенный код - ничего туда не пишется
подключал скрипты scr_WorkflowUtils и на всякий случай scr_DB
значение в параметр не заносится
Попробуйте записать в параметр так:
ActionItem.ParentItems.ParentDiagram.Parameters('TaskCount').Value = TaskCount;
Проверьте также, чтобы в переменной TaskCount действительно было значение на момент записи в параметр процесса, например выводя его перед присвоениес в сообщении или же поставив debugger.
"Валерий Андрусик" написал:ActionItem.ParentItems.ParentDiagram.Parameters('TaskCount').Value = TaskCount;
эффект тот же
"Стоян Виталий" написал:Проверьте также, чтобы в переменной TaskCount действительно было значение на момент записи в параметр процесса
проверял выводя в окне, значение корректное
Элемент Action1 - это уже открытие счета? Просто в примере обработчик Action1OnAfterExecute, а в таком случае надо делать в событии OnBeforeExecute
Для надежности можно вообще отдельный ScriptItem поставить в диаграмме до открытия счета, и в нем заполнять параметр диаграммы.
"Валерий Андрусик" написал:Элемент Action1 - это уже открытие счета? Просто в примере обработчик Action1OnAfterExecute, а в таком случае надо делать в событии OnBeforeExecute
это задача, с которой стартует процесс - номер счета это количество задач трех человек, поэтому и рассчитывается в самом начале БП
а про скрипт - будем пробовать
но вопрос не теряет актуальности - почему из скрипта процесса значение не пишет до сих пор не понятно
Проблема решена - при старте процесса сначала запускается срипт, который заносит данные в нужный параметр
код скрипта полностью скопирован с кода в задаче, только ActionItem заменен на ScriptItem
быть может, разработчикам следует обратить внимание на занесение значений в параметр диаграммы из задач