Почему параметры диаграммы пустые?

Создаю процесс начало - открытие окна - завершение

заполняю параметры окна
Пункт 2. Открыть карточку редактирования Продажа
Создать новую запись
Параметр содержащий ID записи - OpportunityID
Пункт 3.
Поле данных: клиент
параметр диаграммы ClientId

Пишу код

function Action1OnAfterExecute(ActionItem, IsComplete) {


    if (IsComplete) {
        var ClientId = WFGetParamValue(ActionItem.ParentItems.ParentDiagram, 'ClientId');
        var OpportunityID = WFGetParamValue(ActionItem.ParentItems.ParentDiagram, 'OpportunityID');
       
        ShowInformationDialog('ClientId='+ClientId);
        ShowInformationDialog('OpportunityID='+OpportunityID);
        }
       
}

После заполнения формы и нажатия ок выполняется код, но параметры диаграммы содержат пустую строку, почему?

Нравится

10 комментариев

Возможно потому что вы перезатераете этот параметр, так как это описано тут

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

Возможно на AfterExecute вы еще не записали параметры, попробуйте добавить действие Скрипт после действия Открыть окно, и в нем проверить параметры

Я не понял, что значит "добавить действие Скрипт". Там всего 6 действий:
вопрос пользователю, отправка EMail, задача и т. д. А действия скрипт там нет.

Кидаете на диграмму, подводите стрелочки
1
определяете обработчик события OnExecute, в нем проверяем параметры БП

Андрей,

параметры пусты потому, что Вами не записывается их значение никуда.

Переменные, которые Вами объявлены в коде - не то же самое, что параметры диаграммы.

Добавьте следующие строки в процедуру:

function Action1OnAfterExecute(ActionItem, IsComplete) {
     if (IsComplete) {
         var ClientId = WFGetParamValue(ActionItem.ParentItems.ParentDiagram, 'ClientId'); 
         var OpportunityID = WFGetParamValue(ActionItem.ParentItems.ParentDiagram, 'OpportunityID'); 
 
         WFSetParamValue(ActionItem.ParentItems.ParentDiagram, 'OpportunityID', OpportunityID);
         WFSetParamValue(ActionItem.ParentItems.ParentDiagram, 'ClientId', ClientId);
         }
 
}

Почему я никуда не записываю. Я же записываю параметр OpportunityID в переменную с таким же именем и вижу под дебуггером, что переменная пустая.

Разве функция WFGetParamValue не предназначена для того, чтобы записать значение из параметра в переменную? И разве параметр OpportunityID не получает автоматически значение новой записи?

Какой смысл сначала записывать параметр в переменную, а затем из этой переменной обратно в параметр. Ведь если параметр пустой, то пустота запишется в переменную, а затем обратно в параметр. Я имею ввиду вот эту конструкцию:

   var ClientId = WFGetParamValue(ActionItem.ParentItems.ParentDiagram, 'ClientId'); 
          var OpportunityID = WFGetParamValue(ActionItem.ParentItems.ParentDiagram, 'OpportunityID'); 
 
          WFSetParamValue(ActionItem.ParentItems.ParentDiagram, 'OpportunityID', OpportunityID);
          WFSetParamValue(ActionItem.ParentItems.ParentDiagram, 'ClientId', ClientId);

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

У вас есть электронный справочник по функциям, где быстро по строке поиска можно найти функцию и ее описание?

"Рябенко Андрей" написал:Почему я никуда не записываю. Я же записываю параметр OpportunityID в переменную с таким же именем и вижу под дебуггером, что переменная пустая.

Разве функция WFGetParamValue не предназначена для того, чтобы записать значение из параметра в переменную? И разве параметр OpportunityID не получает автоматически значение новой записи?


Андрей, WFGetParamValue получает значение из переменной, а не записывает в нее.

И нет, var OpportunityID не заполняется автоматически - это параметр в коде, задекларированный лично Вами и не связанный с бизнес-логикой коробочной версии, поэтому он не может и не должен заполняться автоматически.


Какой смысл сначала записывать параметр в переменную, а затем из этой переменной обратно в параметр. Ведь если параметр пустой, то пустота запишется в переменную, а затем обратно в параметр. Я имею ввиду вот эту конструкцию:
var ClientId = WFGetParamValue(ActionItem.ParentItems.ParentDiagram, 'ClientId');
var OpportunityID = WFGetParamValue(ActionItem.ParentItems.ParentDiagram, 'OpportunityID');

WFSetParamValue(ActionItem.ParentItems.ParentDiagram, 'OpportunityID', OpportunityID);
WFSetParamValue(ActionItem.ParentItems.ParentDiagram, 'ClientId', ClientId);


Если параметр по заложенной Вами логике действительно пуст, то получать в него значение из переменной не обязательно, достаточно просто записать функцией WFSetParamValue.


И где прочитать описание функций WFGetParamValue, WFSetParamValue и других функций, связанных с бизнес процессами.

В SDK я их не нашел. В руководстве администратора их тоже нет.

У вас есть электронный справочник по функциям, где быстро по строке поиска можно найти функцию и ее описание?

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

Данная конкретная функция описана в scr_WorkflowUtils

Что касается SDK, там описаны функции, к которым из конфигурации нет доступа - функции ядра.

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

Описание приемов работы с конфигуратором: http://www.community.terrasoft.ua/blogs/7724

"Alimova Anna" написал:
var OpportunityID не заполняется автоматически - это параметр в коде, задекларированный лично Вами и не связанный с бизнес-логикой коробочной версии, поэтому он не может и не должен заполняться автоматически.

Какой же это параметр, если это переменная. Параметр - это параметр диаграммы. Я имел ввиду, что параметр диаграммы заполняется автоматически. И это написано в документации.
А все что объявлено через var - это переменная. Зачем эти понятия менять местами?

"Рябенко Андрей" написал:Какой же это параметр, если это переменная. Параметр - это параметр диаграммы. Я имел ввиду, что параметр диаграммы заполняется автоматически. И это написано в документации.
А все что объявлено через var - это переменная. Зачем эти понятия менять местами?

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

Показать все комментарии