Вопрос

Скрытие вкладки

Уважаемые коллеги. Нужна ваша помощь в скрытие вкладки на странице контрагента.



Я использовал следующее руководство, сделал все 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();

    }

Нравится

8 комментариев
Лучший ответ

В описании обновления до 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 - ?

Сам объект вкладки, элемент коллекции tabsCollection.

Всем спасибо!

Доработал свой код, теперь все работает.

Кому будет интересно, пишите в личные сообщения.

В описании обновления до 7.12.4 (ченжлог на сайте академии) описан новый, на тот момент, способ скрытия вкладки. Возможно это Вам поможет

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