Добрый день!
Возник вопрос, как на странице раздела можно изменить значение поля на странице редактирования по нажатии кнопки?
Добавил в совмещенном режиме в раздел "Активности" кнопку "завершить", добавил метод обработчик нажатия, необходимо чтобы при прохождении всех проверок изменялся Статус и результат активности. Все изменения должны быть выполнены на клиенте и отобразиться сразу
 

//Метод-обработчик нажатия кнопки завершить
				doneActivityClick: function(){
					var activeRow = this.get("ActiveRow");
				if (activeRow) {
					var cOwnerId = $("#ActivityPageV2OwnerLookupEdit-link-el").attr('href').split('ViewModule.aspx#CardModuleV2/ContactPageV2/edit/')[1].toUpperCase();
					var esq = this.Ext.create("Terrasoft.EntitySchemaQuery", {
						rootSchemaName: "Activity"
					});
					esq.addColumn("Opportunity.Owner.Id","OpportunityOwnerId");
					esq.addColumn("Opportunity.UsrSaleAgreemAmountPlan", "OpportunityCountAgreem");
					esq.addColumn("Opportunity.UsrSalePriseSum","OpportunityPriseSum");
					esq.addColumn("Opportunity.UsrObjCountPlan","UsrObjCountPlan");
					esq.getEntity(activeRow, function(result) {
										if (!result.success) {
										// обработка/логирование ошибки, например
										this.showInformationDialog("Ошибка запроса данных");
										return;
										}
										var oSumPrise = result.entity.get("OpportunityPriseSum");
										var oOwnerId = result.entity.get("OpportunityOwnerId");
										var oCountAgreem = result.entity.get("OpportunityCountAgreem");
										var oCountObj =result.entity.get("UsrObjCountPlan");
										var mesSumPrise= (oSumPrise<=0)?"Планируемая премия\n":"";
										var mesCountAgreem=(oCountAgreem<=0)?"Планируемое количество договоров\n":"";
										var mesCountOdj= (oCountObj<=0)?"Количество объектов\n":"";
										if (cOwnerId!=oOwnerId.toUpperCase()) {
											this.showInformationDialog("Ответственный по задаче отличается от ответственного по активности");
										}
										else{
											if (oCountAgreem<=0 || oSumPrise<=0|| oCountObj<=0){
												this.showInformationDialog("Заполните поля в продаже:\n"+mesSumPrise+mesCountAgreem+mesCountOdj);
											}
											//завершение задачи
											else{
												var newStatus ={
													displayValue: "Завершена",
													value: "4BDBB88F-58E6-DF11-971B-001D60E938C6"
												};
												var newResult ={
													displayValue: "Реализовано",
													value: "BB360D72-1AD7-4BBC-BADC-AABC0E334A74"
												};
											// как установить в данные поля значения?
												this.set("Status", newStatus);
												this.set("Result", newResult );
												this.set("ButtonEnabled", false);
												
											//сохраняем все изменения
											var cardModuleSandboxId = this.getCardModuleSandboxId();
											var resultMes =	this.sandbox.publish("OnCardAction", "save", [cardModuleSandboxId]);
											
											}
										}
				},this);
					
				}//if(activeRow)
					
				}

 

Нравится

1 комментарий

Добрый день, Владислав!

Используя this.set() отобразить изменения сразу, Вы можете проверить это добавив обработчик кнопки в котором без проверок измените значения полей, в результате при нажатии на кнопку изменения сразу отобразятся. 

Судя из Вашего кода, значения не меняются так как this содержит другую область видимости.

Потому, рекомендую передать внешний скоуп используя bind:

...
esq.getEntity(activeRow, function(result) {
...
				}.bind(this));
...

 

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