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

И самое главное, как сделать так, чтобы при клике на нее запустился определенный бизнес процесс, скажем "LeadProcess" ?
С системой работаю еще мало, поэтому если можно больше подробностей. Буду очень благодарен.
Спасибо!
Нравится
Запуск БП по кнопке:
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]
В бизнес процессе создал параметр:

В итоге процессы не запускаются.
В консоли при клике на кнопку выдает 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]
Спасибо большое за помощь!