Можно ли использовать filterMethod в мобильном приложении / Как отключить возможность добавлять, удалять и редактировать записи детали
Вопрос
Возникли у меня вопросы по работе с деталями в мобильном приложении, по которым не удалось найти примеры или документацию.
1. Можно ли использовать для детали filterMethod, как в основной версии, или каким-либо образом использовать произвольный фильтр, а не только по колонке родительской страницы?
2. Как отключить возможность добавлять, удалять и редактировать записи детали, в зависимости от значений на родительской странице?
Ответ
1. Для деталей можно указывать фильтры, используя метод configure() соотв. sdk-класса:
Terrasoft.sdk.Details.configure("Contact", "ActivityDetailV2StandartDetail", { filters: Ext.create("Terrasoft.Filter", { type: Terrasoft.FilterTypes.Group, subfilters: [ Ext.create("Terrasoft.Filter", { compareType: Terrasoft.ComparisonTypes.NotEqual, property: "Type", value: Terrasoft.GUID.ActivityTypeEmail }) ] }) });
2. В целом, изменение режима работы детали делается так:
Terrasoft.sdk.Details.setChangeModes("Contact", "ActivityDetailV2StandartDetail", [Terrasoft.ChangeModes.Read]);
Но если нужно менять режим работы от условия, то для этого в контроллерах страниц есть метод getChangeModes(). Т.е. в контроллерах соотв. страниц (грида, просмотра, редактирования) нужно расширить этот метод:
getChangeModeOperations: function() { var detailConfig = this.getDetailConfig(); if (detailConfig) { var parentRecord = detailConfig.parentRecord; if (parentRecord.get("IsNonActualEmail") === false) { return { canCreate: false, canUpdate: false, canDelete: false }; } } return this.callParent(arguments); }