Добрый день. Подскажите пожалуйста, не как не могу решить данный кейс (причем когда-то такой решал давно но не могу не как вспомнить как).
Есть кнопка в группе кнопок "Действие" - "Отправить на визирование", она запускает процесс визирования. Данная кнопка должна быть активна если в таблице визирования уже есть как минимум одна положительная запись (автор согласовал). Для этого сделал запрос к базе данных и получил результат. Через свойство "Enabled" нужно реализовать доступность кнопки.
Код кнопки:
actionMenuItems.addItem(this.getButtonMenuItem({ "Caption": VisaHelper.resources.localizableStrings.SendToVisaCaption, "Tag": VisaHelper.SendToVisaMenuItem.methodName, "Enabled": {"bindTo": "canEntityBeOperated"} }));
"Enabled": {"bindTo": "canEntityBeOperated"} - сюда и надо отправить true и false.
Код запроса к базе данных:
var opportunityId = this.get("Id"); var ownerContact = ""; if (this.get("Owner")) { ownerContact = this.get("Owner").value; } var esq = this.Ext.create("Terrasoft.EntitySchemaQuery", { rootSchemaName: "KtOpportunityVisa" }); esq.addColumn("VisaOwner.Contact", "VisaOwnerContact"); esq.addColumn("KtOpportunity", "KtOpportunity"); esq.addColumn("Status", "Status"); var esqOwnerContactFilter = esq.createColumnFilterWithParameter(Terrasoft.ComparisonType.EQUAL, "VisaOwner.Contact", ownerContact); var esqOpportunityFilter = esq.createColumnFilterWithParameter(Terrasoft.ComparisonType.EQUAL, "KtOpportunity", opportunityId); var esqVisaСanceledFilter = esq.createColumnFilterWithParameter(Terrasoft.ComparisonType.EQUAL, "Status", KtConfigurationConstantsKarTel.VisaStatus.Positive); esq.filters.add("esqOwnerContactFilter", esqOwnerContactFilter); esq.filters.add("esqOpportunityFilter", esqOpportunityFilter); esq.filters.add("esqVisaСanceledFilter", esqVisaСanceledFilter); esq.getEntityCollection(function (result) { if (result.success && result.collection.getCount() === 0) { return false; } else { return true; } }, this);
Так как запрос асинхронный то на сколько помню решается это через Terrasoft.chain с Callback, но как это сделать хоть убейте не помню.
Нравится
По поводу упомянутого механизма Вы недавно задавали вопрос в этой теме. Также см. публикацию.
По поводу упомянутого механизма Вы недавно задавали вопрос в этой теме. Также см. публикацию.
Зверев Александр,
решил вопрос через создание в таблице процесса что срабатывал при изменении в ней и отправлял сообщение на фронт, а на фронте подписался на него и запускаю функцию что меняет атрибут который и дает ответ в каком состоянии должна быть кнопка. Могу написать код реализации тут если кому нужно. Но в итоге бизнес решил что им это не надо потому далее не оптимизировал код. Сейчас проблема в активности этой кнопки в совмещенном режиме, создал отдельный вопрос