Создаю процесс начало - открытие окна - завершение
заполняю параметры окна
Пункт 2. Открыть карточку редактирования Продажа
Создать новую запись
Параметр содержащий ID записи - OpportunityID
Пункт 3.
Поле данных: клиент
параметр диаграммы ClientId
Пишу код
if (IsComplete) {
var ClientId = WFGetParamValue(ActionItem.ParentItems.ParentDiagram, 'ClientId');
var OpportunityID = WFGetParamValue(ActionItem.ParentItems.ParentDiagram, 'OpportunityID');
ShowInformationDialog('ClientId='+ClientId);
ShowInformationDialog('OpportunityID='+OpportunityID);
}
}
После заполнения формы и нажатия ок выполняется код, но параметры диаграммы содержат пустую строку, почему?
Нравится
Возможно потому что вы перезатераете этот параметр, так как это описано тут
Я ничего не перезатираю, все абсолютно стандартно. Кто может подсказать что делать в этой ситуации, как получить параметры.
Возможно на AfterExecute вы еще не записали параметры, попробуйте добавить действие Скрипт после действия Открыть окно, и в нем проверить параметры
Я не понял, что значит "добавить действие Скрипт". Там всего 6 действий:
вопрос пользователю, отправка EMail, задача и т. д. А действия скрипт там нет.
Кидаете на диграмму, подводите стрелочки
определяете обработчик события 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 - это переменная. Зачем эти понятия менять местами?
Видимо, я неверно Вас поняла. В каком случае Вы ожидаете, чтобы параметр диаграммы заполнялся автоматически?