Публикация
Как поменять Caption детали в зависимости от страницы
22 января 2018 02:58
Вопрос
Как поменять 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"} } } ] }; });
Необходимо почистить кеш браузера.
Показать все комментарии
Войдите или зарегистрируйтесь, что бы комментировать