Добрый день, есть такая задача:
На странице есть две вкладки "Позиции заказа" и "Документы по заказу". На этих вкладках есть детали, названия деталей соответствуют вкладкам. Детали основаны на разных объектах.
Я реализовала кнопку у детали "Документы по заказу", при нажатии на которую, обновляется значение определенной колонки у этой детали и должно обновляться значение определенной колонки (имя колонки прописано в коде, пусть будет "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); } }, ...
С уважением,
Ангелина