Запретить к удаление записи на детали
Добрый вечер, коллеги.
Подскажите, как реализовать запрет к удалению записи на детали в зависимости от определенного условия. Подскажите реализацию на клиенте и сервере. Заранее благодарен за помощь.
Нравится
Henkal Vadym,
О какой именно кнопке речь?
Если я правильно думаю о чем вы спросили, то вот:
На схему страницы детали добавьте то, что хотите скрыть
diff: /**SCHEMA_DIFF*/[
{
"operation": "remove",
"name": "ToolsButton"
},
{
"operation": "remove",
"name": "CardDetail"
},
{
"operation": "remove",
"name": "AddRecordButton"
},
{
"operation": "remove",
"name": "ViewButton"
}
]/**SCHEMA_DIFF*/,
methods: {
getAddRecordButtonVisible: function() {
return false;
},
getAddTypedRecordButtonVisible: function() {
return false;
},
addRecordOperationsMenuItems: Terrasoft.emptyFn
}
Все можно сделать на клиенте
1)Заместите вашу деталь
2) для кнопки добавления переопределите свойство доступность для ваших условий
А может есть метод по аналогии save, где можно в зависимости от условия не вызывать родительскую реализацию?
Можно делать с зацепом на права доступа, можно просто делать доступной/не доступной саму кнопку удалить, можно обрабатывать нажатие кнопки и выдавать исключение, вариантов много, все зависит от того, какой вариант вам нужен
Пример кода (здесь в зависимости от наличия записей на деталей, отображается либо не отображается кнопка)
attributes: {
"EnabledRecommendation": {
"dataValueType": this.Terrasoft.DataValueType.BOOLEAN,
"value": true
}
},
methods: {
addRecordOperationsMenuItems: function(toolsButtonMenu) {
this.callParent(arguments);
var data = this.getCalcRecom();
if (data) {
toolsButtonMenu.addItem(data);
}
},
getCalcRecom: function() {
return this.getButtonMenuItem({
Caption: "Рассчитать рекомендации",
Enabled: {bindTo: "EnabledRecommendation"}
});
},
fireDetailChanged: function() {
this.callParent(arguments);
this.enableRecommendation();
},
enableRecommendation: function() {
var esq = this.Ext.create("Terrasoft.EntitySchemaQuery", {rootSchemaName: "OrderProduct"});
esq.addColumn("Id");
esq.addColumn("Product");
esq.filters.addItem(esq.createColumnFilterWithParameter(
Terrasoft.ComparisonType.EQUAL,
"Order.Id",
this.get("MasterRecordId")));
esq.getEntityCollection(function(result) {
this.set("EnabledRecommendation", result.collection.getCount() > 0);
console.log(result.collection.getCount());
}, this);
Литвинко Павел,
Cпасибо за помощь. Но как быть в случае детали с редактируемым реестром. Ведь там есть еще одна кнопка?
Henkal Vadym,
О какой именно кнопке речь?
Если я правильно думаю о чем вы спросили, то вот:
На схему страницы детали добавьте то, что хотите скрыть
diff: /**SCHEMA_DIFF*/[
{
"operation": "remove",
"name": "ToolsButton"
},
{
"operation": "remove",
"name": "CardDetail"
},
{
"operation": "remove",
"name": "AddRecordButton"
},
{
"operation": "remove",
"name": "ViewButton"
}
]/**SCHEMA_DIFF*/,
methods: {
getAddRecordButtonVisible: function() {
return false;
},
getAddTypedRecordButtonVisible: function() {
return false;
},
addRecordOperationsMenuItems: Terrasoft.emptyFn
}
Литвинко Павел,
Спасибо. Реализовал с помощью вброса ошибки на сервере.