Коллеги, добрый день!

Подскажите, пожалуйста, в чем проблема. Добавили кнопку в раздел контаргенты и привязали процесс к ней, но он не запускается.
В поддержке написали: Ошибка заключается в том, что 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
}
}
]
};
});

Нравится

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

"Калушка Д." написал: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: {}

};

});

Спасибо вот это вот работает!!!!

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