Добрый день, есть такая задача:
На странице есть две вкладки "Позиции заказа" и "Документы по заказу". На этих вкладках есть детали, названия деталей соответствуют вкладкам. Детали основаны на разных объектах.
Я реализовала кнопку у детали "Документы по заказу", при нажатии на которую, обновляется значение определенной колонки у этой детали и должно обновляться значение определенной колонки (имя колонки прописано в коде, пусть будет "NameColumn") в детали "Позиции заказа".
Вопрос: Как обновить значение колонки (какой-либо) в первой детали "позиции заказа"?
Пыталась сделать это так:
Колонка в детали "Документы по заказу" обновляется через UpdateQuery, нашла инструкцию в документации.
С обновлением колонок детали в первой вкладке наткнулась на трудность.
Я пыталась сделать коллекцию через esq по позициям заказа. Устанавливаю значение через инструкцию this.set("NameColumn",value);
Однако это не работает. Подскажите, пожалуйста, как правильно в такой ситуации заполнить значение колонки? И возможно ли так вообще сделать?
Нравится
Здравствуйте,
Ниже можно посмотреть пример кода для обновления двух колонок, которые смотрят на разные объекты, при нажатии на кнопку.
var value = this.get('UsrChange') – новое значение, которое вы хотите записать в необходимую колонку;
updateQuery.setParameterValue("Name", value, this.Terrasoft.DataValueType.TEXT) – в значение "Name" ("Notes" во втором запросе) подставьте название поля из объекта, в которое хотите записать изменения;
Удостоверьтесь, что вы добавили в дизайнере нужные поля на страницу. "detailColumn" - “Where detail column”, "masterColumn" - “Equals to page column”, "entitySchemaName" - “Detail”.
...
details: /**SCHEMA_DETAILS*/{
…
"UsrTabSecond": {
"schemaName": "OpportunityHistoryActivityDetail",
"entitySchemaName": "Activity",
"filter": {
"detailColumn": "Priority",
"masterColumn": "UsrLookup2"
}
},
"UsrTabFirst": {
"schemaName": "AccountContactsDetailV2",
"entitySchemaName": "Contact",
"filter": {
"detailColumn": "Job",
"masterColumn": "UsrLookup1"
}
}
}/**SCHEMA_DETAILS*/,
businessRules: /**SCHEMA_BUSINESS_RULES*/{}/**SCHEMA_BUSINESS_RULES*/,
methods: {
onMyButtonClick: function() {
var value = this.get('UsrChange');
var IdValue = this.get('UsrLookup1');
var updateQuery = Ext.create("Terrasoft.UpdateQuery", {
rootSchemaName: "Contact"});
var filters = updateQuery.filters;
filters.addItem(this.Terrasoft.createColumnFilterWithParameter(
this.Terrasoft.ComparisonType.EQUAL, "Job", IdValue));
updateQuery.setParameterValue("Name", value, this.Terrasoft.DataValueType.TEXT);
updateQuery.execute(function(result){
if(result.success) this.updateDetail({detail: "UsrTabFirst"});}, this);
var value1 = this.get('UsrChange');
var IdValue1 = this.get('UsrLookup2');
var updateQuery1 = Ext.create("Terrasoft.UpdateQuery", {
rootSchemaName: "Activity"});
var filters1 = updateQuery1.filters;
filters1.addItem(this.Terrasoft.createColumnFilterWithParameter(
this.Terrasoft.ComparisonType.EQUAL, "Priority", IdValue1));
updateQuery1.setParameterValue("Notes", value1, this.Terrasoft.DataValueType.TEXT);
updateQuery1.execute(function(result){
if(result.success) this.updateDetail({detail: "UsrTabSecond"});}, this);
}
},
...
С уважением,
Ангелина
Здравствуйте,
Ниже можно посмотреть пример кода для обновления двух колонок, которые смотрят на разные объекты, при нажатии на кнопку.
var value = this.get('UsrChange') – новое значение, которое вы хотите записать в необходимую колонку;
updateQuery.setParameterValue("Name", value, this.Terrasoft.DataValueType.TEXT) – в значение "Name" ("Notes" во втором запросе) подставьте название поля из объекта, в которое хотите записать изменения;
Удостоверьтесь, что вы добавили в дизайнере нужные поля на страницу. "detailColumn" - “Where detail column”, "masterColumn" - “Equals to page column”, "entitySchemaName" - “Detail”.
...
details: /**SCHEMA_DETAILS*/{
…
"UsrTabSecond": {
"schemaName": "OpportunityHistoryActivityDetail",
"entitySchemaName": "Activity",
"filter": {
"detailColumn": "Priority",
"masterColumn": "UsrLookup2"
}
},
"UsrTabFirst": {
"schemaName": "AccountContactsDetailV2",
"entitySchemaName": "Contact",
"filter": {
"detailColumn": "Job",
"masterColumn": "UsrLookup1"
}
}
}/**SCHEMA_DETAILS*/,
businessRules: /**SCHEMA_BUSINESS_RULES*/{}/**SCHEMA_BUSINESS_RULES*/,
methods: {
onMyButtonClick: function() {
var value = this.get('UsrChange');
var IdValue = this.get('UsrLookup1');
var updateQuery = Ext.create("Terrasoft.UpdateQuery", {
rootSchemaName: "Contact"});
var filters = updateQuery.filters;
filters.addItem(this.Terrasoft.createColumnFilterWithParameter(
this.Terrasoft.ComparisonType.EQUAL, "Job", IdValue));
updateQuery.setParameterValue("Name", value, this.Terrasoft.DataValueType.TEXT);
updateQuery.execute(function(result){
if(result.success) this.updateDetail({detail: "UsrTabFirst"});}, this);
var value1 = this.get('UsrChange');
var IdValue1 = this.get('UsrLookup2');
var updateQuery1 = Ext.create("Terrasoft.UpdateQuery", {
rootSchemaName: "Activity"});
var filters1 = updateQuery1.filters;
filters1.addItem(this.Terrasoft.createColumnFilterWithParameter(
this.Terrasoft.ComparisonType.EQUAL, "Priority", IdValue1));
updateQuery1.setParameterValue("Notes", value1, this.Terrasoft.DataValueType.TEXT);
updateQuery1.execute(function(result){
if(result.success) this.updateDetail({detail: "UsrTabSecond"});}, this);
}
},
...
С уважением,
Ангелина