Вопрос

Переопределение addRecord детали "Адреса контрагента"

Попытался переопределить метод addRecord() вот таким образом, чтобы на деталь "адреса контрагента" нельзя было добавить адреса с одинаковыми типами. Все нормально работает, но вопрос в том - допустимо ли вот так переопределять или это плохая практика?

Добавил свой аргумент isAllowed.

addRecord: function(editPageUId, isAllowed) {
 if (!isAllowed) {
  var esq = Ext.create("Terrasoft.EntitySchemaQuery", {
   rootSchemaName: "AccountAddress"
  });
  //...фильтр
  esq.getEntityCollection(function(result) {
   if (result.collection.collection.length === 0) {
   //Вызываю addRecord еще раз, передав в него мой аргумент
    this.addRecord(editPageUId, true);
   }
   else {
    this.showInformationDialog("Адрес с таким типом уже существует.");
   }
  }, this);
 }
 else {
  this.callParent(arguments);
 }
}

 

Нравится

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

Добрый день!

Допустимо.

Можно сделать еще так:

addRecord: function(editPageUId) {
	this.someCheckMethod(function(res){
		if (res) {
			this.superclass.addRecord.apply(this, editPageUId);
		}
	}, this);
}

Обратите внимание, что вам по вашей задаче еще нужно сделать проверку на редактирование адреса: чтобы нельзя было изменить тип на уже существующий.

Добрый день!

Допустимо.

Можно сделать еще так:

addRecord: function(editPageUId) {
	this.someCheckMethod(function(res){
		if (res) {
			this.superclass.addRecord.apply(this, editPageUId);
		}
	}, this);
}

Обратите внимание, что вам по вашей задаче еще нужно сделать проверку на редактирование адреса: чтобы нельзя было изменить тип на уже существующий.

Сидоров Александр В.,

благодарю за советы.

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