7.4
бизнес-процесс
кнопка
Технические вопросы
7.x

Добавить кнопку к элементу реестра и инициировать запуск бизнес-процесса по ее нажатию

Добрый день!

Как добавить "зеленую" кнопку c именем "Начать работу с лидом" в разделе "Лиды" к уже существующим:
1

И самое главное, как сделать так, чтобы при клике на нее запустился определенный бизнес процесс, скажем "LeadProcess" ?

С системой работаю еще мало, поэтому если можно больше подробностей. Буду очень благодарен.

Спасибо!

Нравится

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

Запуск БП по кнопке:
http://www.community.terrasoft.ru/forum/topic/10554#comment-47944

Добавление кнопки в активную строку (на примере кнопки позвонить водителю в кастомном разделе):
[javascript]
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) {
//функция-обработчик
}
}
};
});

[/javascript]

Попробую подробнее описать задачу.

В разделе "Лиды" в реестре есть зеленые кнопки "Квалифицировть" и т.д. наряду с "Открыть" "Копировать" и т.д.

Мне нужно чтобы при нажатии этих кнопок запускались мои собственные процессы. Например при клике на кнопку "Квалифицировать" мне нужно запустить свой процесс "SellsLeadProcessContact".

Вот код, который у меня получился:

Кнопка:

[javascript]
{
"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"}
}
}
[/javascript]

Обработка нажатия:

[javascript]
onActiveRowAction: function(buttonTag) {
if (buttonTag === "continueQualify") {
this.continueQualify();
} else {
this.callParent(arguments);
}
},
[/javascript]

Функция запуска процессов в зависимости от статуса лида

[javascript]
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 "";
},
[/javascript]

В бизнес процессе создал параметр:

222

В итоге процессы не запускаются.

В консоли при клике на кнопку выдает 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) не сработает:

[javascript]
var LeadId = this.get(id); //неправильно
[/javascript]

Ошибка ниже как раз и говорит о том, что this.get(id), вероятнее всего, возвращает undefined:

[javascript]
message: Uncaught Guid should contain 32 digits with 4 dashes (xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx)
[/javascript]

Получайте Id следующим образом:

[javascript]
var LeadId = this.get("ActiveRow");
[/javascript]

Все, получилось. Но ошибка была не только в этом.

Строка запуска процесса была написана так:
[javascript]
this.runProcess(processArgs.sysProcessName, processArgs.parameters, this);
[/javascript]

А когда заменил спереди "this" на "ProcessModuleUtilities", то процесс запустился.
[javascript]
ProcessModuleUtilities.runProcess(processArgs.sysProcessName, processArgs.parameters, this);
[/javascript]

Спасибо большое за помощь!

Вопрос снят

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