Вопрос
Как поменять Caption детали для конкретной страницы редактирования?
То есть, чтобы одна и та же деталь в контактах называлась например "Деталь1", а в контрагентах "Деталь2".
Ответ
Необходимо в схеме детали в секции diff добавить следующий код:
diff: /**SCHEMA_DIFF*/[
{
"operation": "merge",
"name": "Detail",
"values": {
"caption": {"bindTo": "getDetailCaption"}
}
}
]/**SCHEMA_DIFF*/
А в методе анализировать имя карточки, в которую загружена деталь, и менять caption на необходимый. Например так:
getDetailCaption: function() {
var cardPageName = this.get("CardPageName");
if (cardPageName === "ActivityPageV2") {
return "Name 1";
}
return "Name 2";
}
Можно использовать локализируемые строки.
В типовых конфигурациях, аналогичный пример есть в схеме OpportunityContactDetailV2.
/**
* Устанавливает заголовок детали в зависимости от открытой страницы.
* @protected
* @return {String}
*/
getDetailCaption: function() {
var cardPageName = this.get("CardPageName");
if (cardPageName === "OpportunityPageV2") {
return this.get("Resources.Strings.InOpportunityCaption");
}
return this.get("Resources.Strings.InContactCaption");
},
Конкретный пример (реализована логика в ContactCommunicationDetail и AccountCommunicationDetail):
define("AccountCommunicationDetail", ["AccountCommunicationDetailResources", "terrasoft"],
function(resources, Terrasoft) {
return {
entitySchemaName: "AccountCommunication",
methods: {
init: function() {
this.callParent(arguments);
},
getDetailCaption: function() {
var cardPageName = this.get("CardPageName");
if (cardPageName === "AccountPageV2") {
return "Средства связи";
}
return "Средства связи контрагента";
}
},
diff: /**SCHEMA_DIFF*/[
{
"operation": "merge",
"name": "Detail",
"values": {
"caption": {"bindTo": "getDetailCaption"}
}
}
]
};
});
define("ContactCommunicationDetail", ["ContactCommunicationDetailResources", "terrasoft"],
function(resources, Terrasoft) {
return {
methods: {
init: function() {
this.callParent(arguments);
},
getDetailCaption: function() {
var cardPageName = this.get("CardPageName");
if (cardPageName === "ContactPageV2") {
return "Средства связи";
}
return "Средства связи контакта";
}
},
diff: /**SCHEMA_DIFF*/[
{
"operation": "merge",
"name": "Detail",
"values": {
"caption": {"bindTo": "getDetailCaption"}
}
}
]
};
});
Необходимо почистить кеш браузера.