Скрытие вкладки
Уважаемые коллеги. Нужна ваша помощь в скрытие вкладки на странице контрагента.
Я использовал следующее руководство, сделал все 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 (ченжлог на сайте академии) описан новый, на тот момент, способ скрытия вкладки. Возможно это Вам поможет