Добавить кнопку к элементу реестра и инициировать запуск бизнес-процесса по ее нажатию
Добрый день!
Как добавить "зеленую" кнопку c именем "Начать работу с лидом" в разделе "Лиды" к уже существующим:
И самое главное, как сделать так, чтобы при клике на нее запустился определенный бизнес процесс, скажем "LeadProcess" ?
С системой работаю еще мало, поэтому если можно больше подробностей. Буду очень благодарен.
Спасибо!
Нравится
Запуск БП по кнопке:
http://www.community.terrasoft.ru/forum/topic/10554#comment-47944
Добавление кнопки в активную строку (на примере кнопки позвонить водителю в кастомном разделе):
define("SfEvacuatorSection", ["SfEvacuatorSectionResources", "GridUtilitiesV2"], function(resources) { return { entitySchemaName: "SfEvacuator", contextHelpId: "1001", diff: /**SCHEMA_DIFF*/[ { // добавление самой кнопки "operation": "insert", "name": "DataGridActiveRowCallDriverAction", "parentName": "DataGrid", "propertyName": "activeRowActions", "values": { "className": "Terrasoft.Button", "style": Terrasoft.controls.ButtonEnums.style.BLUE, "caption": resources.localizableStrings.CallDriverRowButtonCaption, "tag": "call" } } ]/**SCHEMA_DIFF*/, messages: {}, methods: { onActiveRowAction: function(buttonTag, primaryColumnValue) { switch (buttonTag) { // замещение базового метода для правильной обработки нажатия по тэгу case "call": this.callDriver(primaryColumnValue); break; default: this.callParent(arguments); break; } }, callDriver: function(recordId) { //функция-обработчик } } }; });
Попробую подробнее описать задачу.
В разделе "Лиды" в реестре есть зеленые кнопки "Квалифицировть" и т.д. наряду с "Открыть" "Копировать" и т.д.
Мне нужно чтобы при нажатии этих кнопок запускались мои собственные процессы. Например при клике на кнопку "Квалифицировать" мне нужно запустить свой процесс "SellsLeadProcessContact".
Вот код, который у меня получился:
Кнопка:
{ "operation": "insert", "name": "DataGridActiveRowQualificationProcessAction", "parentName": "DataGrid", "propertyName": "activeRowActions", "values": { "className": "Terrasoft.Button", "style": Terrasoft.controls.ButtonEnums.style.GREEN, "caption": {"bindTo": "getQualificationProcessButtonCaption"}, "tag": "continueQualify", "iconAlign": Terrasoft.controls.ButtonEnums.iconAlign.RIGHT, "imageConfig": resources.localizableImages.QualificationProcessActionImage, "classes": {"textClass": "ts-grid-image-action"}, "visible": {"bindTo": "getIsQualificationStageActive"} } }
Обработка нажатия:
onActiveRowAction: function(buttonTag) { if (buttonTag === "continueQualify") { this.continueQualify(); } else { this.callParent(arguments); } },
Функция запуска процессов в зависимости от статуса лида
continueQualify: function(id) { var qualifyStatusId = this.getQualifyStatus(id); var qualifyStatus = LeadConfigurationConst.LeadConst.QualifyStatus; var LeadId = this.get(id); var processLeadContact = { sysProcessName: "SellsLeadProcessContact", parameters: { LeadId: LeadId } }; var processLeadInformation = { sysProcessName: "SellsLeadProcessInformation", parameters: { LeadId: LeadId } }; var processLeadMeet = { sysProcessName: "SellsLeadProcessMeet", parameters: { LeadId: LeadId } }; if (qualifyStatusId === qualifyStatus.Qualification) { this.runProcess(processLeadContact.sysProcessName, processLeadContact.parameters, this); } if (qualifyStatusId === qualifyStatus.Distribution) { this.runProcess(processLeadInformation.sysProcessName, processLeadInformation.parameters, this); } if (qualifyStatusId === qualifyStatus.TransferForSale) { this.runProcess(processLeadMeet.sysProcessName, processLeadMeet.parameters, this); } return ""; },
В бизнес процессе создал параметр:
В итоге процессы не запускаются.
В консоли при клике на кнопку выдает 3 строки ошибки:
Ошибка 1
POST https://sells.bpmonline.com/0/DataService/json/SyncReply/SelectQuery 500 (FormatException)
Ошибка 2
Uncaught Guid should contain 32 digits with 4 dashes (xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx).
Ошибка 3
user: Supervisor/7f3b869f-34f3-4f20-ab4d-7480a5fdf647
file: https://sells.bpmonline.com/0/core/e8b5149b83cf4b4da75b8dc1338afb83/com…
line: 600
message: Uncaught Guid should contain 32 digits with 4 dashes (xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx).
Весь код схемы в приложении
Помогите пожалуйста с проблемой. Уже 3 дня прошло с момента ее возникновения.
Спасибо!
Добрый день!
Насколько я понял, речь идет о странице раздела.
В этом случае получение идентификатора записи с помощью функции this.get(id) не сработает:
var LeadId = this.get(id); //неправильно
Ошибка ниже как раз и говорит о том, что this.get(id), вероятнее всего, возвращает undefined:
message: Uncaught Guid should contain 32 digits with 4 dashes (xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx)
Получайте Id следующим образом:
var LeadId = this.get("ActiveRow");
Все, получилось. Но ошибка была не только в этом.
Строка запуска процесса была написана так:
this.runProcess(processArgs.sysProcessName, processArgs.parameters, this);
А когда заменил спереди "this" на "ProcessModuleUtilities", то процесс запустился.
ProcessModuleUtilities.runProcess(processArgs.sysProcessName, processArgs.parameters, this);
Спасибо большое за помощь!