Вопрос

Видимость/скрытие детали в зависимости от поля

Коллеги, добрый день! Искал информацию по скрытию детали на академии, использовал этот пост:
https://community.terrasoft.ru/articles/izmenenie-vidimosti-detali-v-zavisimosti-ot-znacenia-pola
Но ничего не получилось. 
Подскажите, где допускаю ошибку? При проверке ошибок нет, но и результата тоже нет.

 

define("AccountPageV2", ["BaseFiltersGenerateModule", "ConfigurationEnums", "ConfigurationConstants",
			"AccountPageV2Resources", "CommunicationSynchronizerMixin", "AccountPageMixin", "CommunicationOptionsMixin"],
		function(BaseFiltersGenerateModule, Enums, ConfigurationConstants) {
	return {
	modules: /**SCHEMA_MODULES*/{}/**SCHEMA_MODULES*/,
	details: /**SCHEMA_DETAILS*/{}/**SCHEMA_DETAILS*/,
    businessRules: /**SCHEMA_BUSINESS_RULES*/{}/**SCHEMA_BUSINESS_RULES*/,
    methods: {
                onEntityInitialized: function() {
                this.callParent(arguments);
                this.communicationsVisibility();
                },
         communicationsVisibility: function(){
            var type = this.get("Type");
            return !!type && type.displayValue === "Наша компания";
            },
            },
   	dataModels: /**SCHEMA_DATA_MODELS*/{}/**SCHEMA_DATA_MODELS*/,
		diff: /**SCHEMA_DIFF*/[
        {
    "operation": "merge",
    "name": "Communications",
    "values": {
        "visible" : {
            "bindTo": "communicationsVisibility"
                    }
               }
        }
         ]/**SCHEMA_DIFF*/
     	};
});

 

Нравится

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

SavelyevOll,

Да, но если деталь добавлена в схеме этого же пакета, merge делать не нужно. Можете найти в блоке diff insert вашей детали и прям в него записать атрибут видимости.

Добрый день! Вставил ваш код на пустой стенд (единственное выпилил из кода метод onEntityInitialized, т.к. он не нужен). Все работает, изменяя тип в контрагенте деталь Средства связи меняет отображаение

Дмитрий А.,
Работает, но на деталях системных.
А как применить это к деталям, созданным вручную?

SavelyevOll,

Точно так же. Там где объявляется деталь в блоке diff пропишите ей аттрибут

"visible" : {
    "bindTo": "yourDetailVisible" //название метода, который возвращает true/false по вашим условиям
}

Можете показать конкретный пример где это не работает)

Дмитрий А.,

Получается тоже самое, только "name":"communications" в diff меняю на "name":"(название детали)"?
 

SavelyevOll,

Да, но если деталь добавлена в схеме этого же пакета, merge делать не нужно. Можете найти в блоке diff insert вашей детали и прям в него записать атрибут видимости.

Дмитрий А.,

Спасибо большое!) Все работает)

Добрый день, коллеги! При использовании этого способа к отображению кнопки появляется проблема в том, что при формировании страницы сначала формируются кнопки а потом уже поля и их значения, соответственно до отрисовки кнопок невозможно считать, например, "Тип" записи. Подскажите, есть ли варианты решения?

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