Коллеги, добрый день!
Подскажите, пожалуйста, в чем проблема. Добавили кнопку в раздел контаргенты и привязали процесс к ней, но он не запускается.
В поддержке написали: Ошибка заключается в том, что define схемы не была передана зависимость для ProcessModuleUtilities. Пример передачи зависимости от модуля в define схемы:
define("AccountSectionV2", ["ProcessModuleUtilities"], function(ProcessModuleUtilities)
Сделал так, теперь не загружается даже страница контрагента. (Кэш чистил и компилировал все)
Вот код:
define("AccountSectionV2", [ProcessModuleUtilities], function(ProcessModuleUtilities) {
return {
// Название схемы объекта страницы редактирования.
entitySchemaName: "Account",
methods: {
runProcess: function() {
var activeRowId = this.get("Id");
var args = {
sysProcessName: "UsrMyProcess",
parameters: {
OppID: activeRowId
}
};
ProcessModuleUtilities.executeProcess(args.sysProcessName, args.parameters, this);
}
},
//Настройка визуализации кнопки на странице редактирования.
diff: [
// Метаданные для добавления на страницу пользовательской кнопки.
{
// Указывает на то, что выполняется операция добавления элемента на страницу.
"operation": "insert",
// Мета-имя родительского элемента управления, в который добавляется кнопка.
"parentName": "CombinedModeActionButtonsCardLeftContainer",
// Указывает на то, что кнопка добавляется в коллекцию элементов управления
// родительского элемента (мета-имя которого указано в parentName).
"propertyName": "items",
// Мета-имя добавляемой кнопки.
"name": "runProcessButton",
// Дополнительные свойства элемента.
"values": {
// Тип добавляемого элемента — кнопка.
"itemType": Terrasoft.ViewItemType.BUTTON,
// Привязка заголовка кнопки к локализуемой строке схемы.
"caption": "Запустить БП",
// Привязка метода-обработчика нажатия кнопки.
"click": {bindTo: "runProcess"},
// Стиль отображения кнопки.
"style": Terrasoft.controls.ButtonEnums.style.GREEN,
"enabled": true
}
}
]
};
});
Нравится
"Калушка Д." написал:define("AccountSectionV2", [ProcessModuleUtilities], function(ProcessModuleUtilities)
Во-первых: ProcessModuleUtilities должен быть в кавычках в []
Во-вторых: executeProcess принимает лишь 1 аргумент
executeProcess: function(args) {...}
либо можно использовать метод runProcess из того же ProcessModuleUtilities
runProcess: function(processName, processParameters, callback, scope) {...}
Ну и Id активной записи берется через this.get("ActiveRow")
Данила, большое спасибо!
Кому интересно, вот рабочий код :
define("AccountSectionV2", ["ProcessModuleUtilities"], function(ProcessModuleUtilities) {
return {
// Название схемы объекта страницы редактирования.
entitySchemaName: "Account",
methods: {
runProcess: function() {
var activeRowId = this.get("ActiveRow");
var args = {
sysProcessName: "UsrMyProcess",
parameters: {
OppID: activeRowId
}
};
ProcessModuleUtilities.executeProcess(args);
}
},
//Настройка визуализации кнопки на странице редактирования.
diff: [
// Метаданные для добавления на страницу пользовательской кнопки.
{
// Указывает на то, что выполняется операция добавления элемента на страницу.
"operation": "insert",
// Мета-имя родительского элемента управления, в который добавляется кнопка.
"parentName": "CombinedModeActionButtonsCardLeftContainer",
// Указывает на то, что кнопка добавляется в коллекцию элементов управления
// родительского элемента (мета-имя которого указано в parentName).
"propertyName": "items",
// Мета-имя добавляемой кнопки.
"name": "runProcessButton",
// Дополнительные свойства элемента.
"values": {
// Тип добавляемого элемента — кнопка.
"itemType": Terrasoft.ViewItemType.BUTTON,
// Привязка заголовка кнопки к локализуемой строке схемы.
"caption": "Запустить БП",
// Привязка метода-обработчика нажатия кнопки.
"click": {bindTo: "runProcess"},
// Стиль отображения кнопки.
"style": Terrasoft.controls.ButtonEnums.style.GREEN,
"enabled": true
}
}
]
};
});
Еще момент.
Решил добавить в карточку контрагента еще кнопку, чтобы не только в совместном режиме она отображалась, но что-то она никак не появляется - Кнопка. Может контейнер не тот...
define("AccountPageV2", ["ProcessModuleUtilities"], function(ProcessModuleUtilities) {
return {
// Название схемы объекта страницы редактирования.
entitySchemaName: "Account",
methods: {
runProcess: function() {
var activeRowId = this.get("ActiveRow");
var args = {
sysProcessName: "UsrMyProcess",
parameters: {
OppID: activeRowId
}
};
ProcessModuleUtilities.executeProcess(args);
}
},
//Настройка визуализации кнопки на странице редактирования.
diff: [
// Метаданные для добавления на страницу пользовательской кнопки.
{
// Указывает на то, что выполняется операция добавления элемента на страницу.
"operation": "insert",
// Мета-имя родительского элемента управления, в который добавляется кнопка.
"parentName": "LeftContainer",
// Указывает на то, что кнопка добавляется в коллекцию элементов управления
// родительского элемента (мета-имя которого указано в parentName).
"propertyName": "items",
// Мета-имя добавляемой кнопки.
// родительского элемента (мета-имя которого указано в parentName).
"name": "runProcessButton",
// Дополнительные свойства элемента.
"values": {
// Тип добавляемого элемента — кнопка.
"itemType": Terrasoft.ViewItemType.BUTTON,
// Привязка заголовка кнопки к локализуемой строке схемы.
"caption": "Запустить БП",
// Привязка метода-обработчика нажатия кнопки.
"click": {bindTo: "runProcess"},
// Стиль отображения кнопки.
"style": Terrasoft.controls.ButtonEnums.style.GREEN
}
}
]
};
});
Еще момент.
Решил добавить в карточку контрагента еще кнопку, чтобы не только в совместном режиме она отображалась, но что-то она никак не появляется - Кнопка. Может контейнер не тот...
define("AccountPageV2", ["ProcessModuleUtilities"], function(ProcessModuleUtilities) {
return {
// Название схемы объекта страницы редактирования.
entitySchemaName: "Account",
methods: {
runProcess: function() {
var activeRowId = this.get("ActiveRow");
var args = {
sysProcessName: "UsrMyProcess",
parameters: {
OppID: activeRowId
}
};
ProcessModuleUtilities.executeProcess(args);
}
},
//Настройка визуализации кнопки на странице редактирования.
diff: [
// Метаданные для добавления на страницу пользовательской кнопки.
{
// Указывает на то, что выполняется операция добавления элемента на страницу.
"operation": "insert",
// Мета-имя родительского элемента управления, в который добавляется кнопка.
"parentName": "LeftContainer",
// Указывает на то, что кнопка добавляется в коллекцию элементов управления
// родительского элемента (мета-имя которого указано в parentName).
"propertyName": "items",
// Мета-имя добавляемой кнопки.
// родительского элемента (мета-имя которого указано в parentName).
"name": "runProcessButton",
// Дополнительные свойства элемента.
"values": {
// Тип добавляемого элемента — кнопка.
"itemType": Terrasoft.ViewItemType.BUTTON,
// Привязка заголовка кнопки к локализуемой строке схемы.
"caption": "Запустить БП",
// Привязка метода-обработчика нажатия кнопки.
"click": {bindTo: "runProcess"},
// Стиль отображения кнопки.
"style": Terrasoft.controls.ButtonEnums.style.GREEN
}
}
]
};
});
"Калушка Д." написал:но что-то она никак не появляется
Все вроде как правильно. Проверьте в адресной строке, находитесь ли вы в AccountPage.
+ На схеме редактирования страницы Id берется через this.get("Id");
И ради все богов, используйте для кода теги (кнопочка js)
//Вот так вот
"Варфоломеев Данила" написал:И ради все богов, используйте для кода теги (кнопочка js)
Так, вроде, стоят практически повсюду )
В AccountSectionV2 кнопка есть, а тут AccountPageV2 не появляется
define("AccountPageV2", ["ProcessModuleUtilities"], function(ProcessModuleUtilities) {
return {
// Название схемы объекта страницы редактирования.
entitySchemaName: "Account",
diff: [
// Метаданные для добавления на страницу пользовательской кнопки.
{
// Указывает на то, что выполняется операция добавления элемента на страницу.
"operation": "insert",
// Мета-имя родительского элемента управления, в который добавляется кнопка.
"parentName": "LeftContainer",
// Указывает на то, что кнопка добавляется в коллекцию элементов управления
// родительского элемента (мета-имя которого указано в parentName).
"propertyName": "items",
// Мета-имя добавляемой кнопки.
// родительского элемента (мета-имя которого указано в parentName).
"name": "runProcessButton",
// Дополнительные свойства элемента.
"values": {
// Тип добавляемого элемента — кнопка.
"itemType": Terrasoft.ViewItemType.BUTTON,
// Привязка заголовка кнопки к локализуемой строке схемы.
"caption": {bindTo: "Resources.Strings.runProcessButtonCaption"},
// Привязка метода-обработчика нажатия кнопки.
"click": {bindTo: "runProcess"},
"visible": true,
"enabled": true,
// Стиль отображения кнопки.
"style": Terrasoft.controls.ButtonEnums.style.GREEN,
"layout": {
"column": 1,
"row": 6,
"colSpan": 1
}
}
}
]
};
});
"Калушка Д." написал:AccountPageV2 не появляется
триждыдолбаный layout во всем виноват.... если его не указать даже debugger в onEntityInitialized не отрабатывает. 11/8 would add button again, как говорится.
{ "operation": "insert", "parentName": "LeftContainer", "propertyName": "items", "name": "customBtn", "values": { "itemType": Terrasoft.ViewItemType.BUTTON, "caption": "RunProcess", "click": {"bindTo": "runProcess"}, "visible": true, "layout": { "column": 1, "row": 7, "colSpan": 1 } } }
Сорян, но нет *(
По прежнему не видно.
Вот эта демка -https://005176-crm-bundle.bpmonline.com
Supervisor
Если будет желание узнать в чем причина. Только надо открывать не из раздела (там все ок), а по ссылке, например из контакта.
"Калушка Д." написал:По прежнему не видно.
Сегодня с утра еще раз перепроверил, вот такой код сработал локально на последней демке:
define("AccountPageV2", ["ProcessModuleUtilities"], function(ProcessModuleUtilities) { return { // Название схемы объекта страницы редактирования. entitySchemaName: "Account", methods: { runProcess: function() { alert("Работай, чертова кнопка >:-("); } }, //Настройка визуализации кнопки на странице редактирования. diff: [ { "operation": "insert", "parentName": "LeftContainer", "propertyName": "items", "name": "customProcessButton", "values": { "itemType": Terrasoft.ViewItemType.BUTTON, "caption": "RunProcess", "click": {"bindTo": "runProcess"}, "visible": true, "style": "red" } }, { "operation": "insert", "parentName": "LeftContainer", "propertyName": "items", "name": "customProcessButtonSecondary", "values": { "itemType": Terrasoft.ViewItemType.BUTTON, "caption": "KNOPKA #2", "click": {"bindTo": "runProcess"}, "visible": true, "style": "blue" } } ]}; });
Самое странное, что вчера абсолютно такой же код не отрабатывал ни в какую. У вас на системе протестить не могу - все дико лагает + система не может даже страницу сохранить, конфигурация валится с ошибкой)
Ребята, большое спасибо за помощь!!!
В итоге, вот рабочий код :
define("AccountPageV2", ["ProcessModuleUtilities"], function(ProcessModuleUtilities) {
return {
entitySchemaName: "Account",
details: /**SCHEMA_DETAILS*/{}/**SCHEMA_DETAILS*/,
diff: /**SCHEMA_DIFF*/[
{
// Указывает на то, что выполняется операция добавления элемента на страницу.
"operation": "insert",
// Мета-имя родительского элемента управления, в который добавляется кнопка.
"parentName": "LeftContainer",
// Указывает на то, что кнопка добавляется в коллекцию элементов управления
// родительского элемента (мета-имя которого указано в parentName).
"propertyName": "items",
// Мета-имя добавляемой кнопки.
// родительского элемента (мета-имя которого указано в parentName).
"name": "runProcessButton",
// Дополнительные свойства элемента.
"values": {
// Тип добавляемого элемента — кнопка.
"itemType": Terrasoft.ViewItemType.BUTTON,
// Привязка заголовка кнопки к локализуемой строке схемы.
"caption": "Запустить БП",
// Привязка метода-обработчика нажатия кнопки.
"click": {bindTo: "runProcess"},
// Стиль отображения кнопки.
"style": Terrasoft.controls.ButtonEnums.style.GREEN
}
}
]/**SCHEMA_DIFF*/,
methods: {
runProcess: function() {
var activeRowId = this.get("Id");
var args = {
sysProcessName: "UsrMyProcess",
parameters: {
OppID: activeRowId
}
};
ProcessModuleUtilities.executeProcess(args);
}
},
rules: {}
};
});
Калушка Д. пишет:
Ребята, большое спасибо за помощь!!!
В итоге, вот рабочий код :
define("AccountPageV2", ["ProcessModuleUtilities"], function(ProcessModuleUtilities) {
return {
entitySchemaName: "Account",
details: /**SCHEMA_DETAILS*/{}/**SCHEMA_DETAILS*/,
diff: /**SCHEMA_DIFF*/[
{
// Указывает на то, что выполняется операция добавления элемента на страницу.
"operation": "insert",
// Мета-имя родительского элемента управления, в который добавляется кнопка.
"parentName": "LeftContainer",
// Указывает на то, что кнопка добавляется в коллекцию элементов управления
// родительского элемента (мета-имя которого указано в parentName).
"propertyName": "items",
// Мета-имя добавляемой кнопки.
// родительского элемента (мета-имя которого указано в parentName).
"name": "runProcessButton",
// Дополнительные свойства элемента.
"values": {
// Тип добавляемого элемента — кнопка.
"itemType": Terrasoft.ViewItemType.BUTTON,
// Привязка заголовка кнопки к локализуемой строке схемы.
"caption": "Запустить БП",
// Привязка метода-обработчика нажатия кнопки.
"click": {bindTo: "runProcess"},
// Стиль отображения кнопки.
"style": Terrasoft.controls.ButtonEnums.style.GREEN
}
}
]/**SCHEMA_DIFF*/,
methods: {
runProcess: function() {
var activeRowId = this.get("Id");
var args = {
sysProcessName: "UsrMyProcess",
parameters: {
OppID: activeRowId
}
};
ProcessModuleUtilities.executeProcess(args);
}
},
rules: {}
};
});
Спасибо вот это вот работает!!!!