Уважаемые коллеги. Нужна ваша помощь в скрытие вкладки на странице контрагента.
Я использовал следующее руководство, сделал все 1 в 1. Но при изменении типа справочника, вкладка продолжает быть невидимой. Также прикладываю фрагмент кода. Подскажите, где кроется ошибка?
//1. Находим нужную нам табу в блоке diff[]. Нас интересует ее "name". Пример:
{
"operation": "insert",
"name": "YourTabName", //Искомое значение
"values": {
"caption": {
"bindTo": "Resources.Strings.YourTabNameTabCaption" //ПОДСКАЗКА: Если не уверены, что это ваша таба, можно проверить по caption
},
"items": [],
"order": 1
},
"parentName": "Tabs", //ПОДСКАЗКА: У табы родителем всегда будет Tabs
"propertyName": "tabs",
"index": 1
}
//2. В блок methods{} добавляем метод, который проверяет значение нужного нам справочника и делает табу видимой/скрытой
initYourTabVisibility: function() {
var type = this.get("Type"); //Где "Type" - название вашего справочника в БД
if (type) {
type = type.value;
}
var result = false;
var userTab = this.$TabsCollection.get("YourTabName"); //Где "YourTabName" - найденное ранее имя вашей табы
if (type === "485382cf-0f24-411d-b4f9-78bc577d35a6" ) { //Меняем id на то значение, при котором таба должна быть видна
result = true;
}
userTab.set("Visible", result);
}
//3. В блок methods{} добавляем два метода, которые запускают нашу созданную в п.2 функцию во время загрузки страницы и
//мнгновенно при имзенении значения справочника
init: function() {
this.callParent(arguments);
this.on("change:Type", this.initYourTabVisibility, this);
},
onEntityInitialized: function() {
this.callParent(arguments);
this.initYourTabVisibility();
}
Нравится
В описании обновления до 7.12.4 (ченжлог на сайте академии) описан новый, на тот момент, способ скрытия вкладки. Возможно это Вам поможет
define("AccountPageV2", ["BaseFiltersGenerateModule", "ConfigurationEnums", "ConfigurationConstants", "AccountPageV2Resources", "CommunicationSynchronizerMixin", "AccountPageMixin", "CommunicationOptionsMixin"], function(BaseFiltersGenerateModule, Enums, ConfigurationConstants) { return { entitySchemaName: "Account", attributes: {}, modules: /**SCHEMA_MODULES*/{}/**SCHEMA_MODULES*/, details: /**SCHEMA_DETAILS*/{}/**SCHEMA_DETAILS*/, businessRules: /**SCHEMA_BUSINESS_RULES*/{}/**SCHEMA_BUSINESS_RULES*/, methods: { init: function() { this.callParent(arguments); this.on("change:Type", this.initYourTabVisibility, this); }, onEntityInitialized: function() { this.callParent(arguments); this.initYourTabVisibility(); }, initYourTabVisibility: function() { var type = this.get("Type"); //Где "Type" - название вашего справочника в БД if (type) { type = type.value; } var result = false; var userTab = this.$TabsCollection.get("Tab6789f528TabLabel"); //Где "YourTabName" - найденное ранее имя вашей табы if (type === "Рабочий клиент") { //Меняем id на то значение, при котором таба должна быть видна result = true; } userTab.set("values", result); }, }, dataModels: /**SCHEMA_DATA_MODELS*/{}/**SCHEMA_DATA_MODELS*/, diff: /**SCHEMA_DIFF*/[ { "operation": "insert", "name": "Tab6789f528TabLabel", "values": { "caption": { "bindTo": "Resources.Strings.YourTabNameTabCaption" }, "items": [], "order": 1 }, "parentName": "Tabs", "propertyName": "tabs", "index": 1 }, ]/**SCHEMA_DIFF*/ }; });
Попробуйте такой вариант:
//hide closeTabs: function() { var tabsCollection = this.get("TabsCollection"); tabsCollection.eachKey(function(tabName, tab) { var tabContainerVisibleBinding = tab.get("Name"); this.set(tabContainerVisibleBinding, false); }, this); }, //activate setActiveTab: function(activeTabName) { this.closeTabs(); this.set("ActiveTabName", activeTabName); this.set(activeTabName, true); },
Литвинко Павел,
Честно, не очень понял.
var tabContainerVisibleBinding = tab.get("Name"); Что за переменная "name"? И не вижу условия по которому бы скрывалась вкладка.
SavelyevOll,
Вместо Name, указывается нужная вам вкладка, её название, которое можете увидеть, когда получите TabsCollection. А условия запуска это уже вам решать, когда и как запускать)
Литвинко Павел,
Понял, тогда еще вопрос:
tabsCollection.eachKey(function(tabName, tab) TabName - имя вкладки tab - ?
Всем спасибо!
Доработал свой код, теперь все работает.
Кому будет интересно, пишите в личные сообщения.
В описании обновления до 7.12.4 (ченжлог на сайте академии) описан новый, на тот момент, способ скрытия вкладки. Возможно это Вам поможет