Переопределение базовой детали (Продукты в продаже) в деталь с редактируемым реестром

Добрый день!
Работаю в версии 7.8. В разделе "Продажи" есть вкладка "Продукты" внутри которой есть базовая деталь "Продукты в продаже". Цель: сделать базовую деталь "Продукты в продаже" с редактируемым реестром и добавить туда дополнительные поля.
Для этого:
- создал замещающий объект OpportunityProductInterest, куда добавил свои необходимые поля;
- создал замещающий клиентский модуль OpportunityProductPageV2, куда добавил свои поля;
- создал свою схема детали "Продукт в продаже" SuOpportunityProductDetailV2 (родительский объект Базовая схема детали с реестром ( NUI )), куда добавил следующий код:

define("SuOpportunityProductDetailV2", ["ConfigurationGrid", "ConfigurationGridGenerator",
   "ConfigurationGridUtilities"],
   function() {
   return {
      entitySchemaName: "OpportunityProductInterest",
      attributes: {
         "IsEditable": {
            dataValueType: Terrasoft.DataValueType.BOOLEAN,
            type: Terrasoft.ViewModelColumnType.VIRTUAL_COLUMN,
            value: true
         }
      },
      details: {},
      diff: [
         {
            "operation": "merge",
            "name": "DataGrid",
            "values": {
               "className": "Terrasoft.ConfigurationGrid",
               "generator": "ConfigurationGridGenerator.generatePartial",
               "generateControlsConfig": {"bindTo": "generatActiveRowControlsConfig"},
               "changeRow": {"bindTo": "changeRow"},
               "unSelectRow": {"bindTo": "unSelectRow"},
               "onGridClick": {"bindTo": "onGridClick"},
               "activeRowActions": [
                  {
                     "className": "Terrasoft.Button",
                     "style": this.Terrasoft.controls.ButtonEnums.style.TRANSPARENT,
                     "tag": "save",
                     "markerValue": "save",
                     "imageConfig": {"bindTo": "Resources.Images.SaveIcon"}
                  },
                  {
                     "className": "Terrasoft.Button",
                     "style": this.Terrasoft.controls.ButtonEnums.style.TRANSPARENT,
                     "tag": "cancel",
                     "markerValue": "cancel",
                     "imageConfig": {"bindTo": "Resources.Images.CancelIcon"}
                  },
                  {
                     "className": "Terrasoft.Button",
                     "style": this.Terrasoft.controls.ButtonEnums.style.TRANSPARENT,
                     "tag": "remove",
                     "markerValue": "remove",
                     "imageConfig": {"bindTo": "Resources.Images.RemoveIcon"}
                  }
               ],
               "initActiveRowKeyMap": {"bindTo": "initActiveRowKeyMap"},
               "activeRowAction": {"bindTo": "onActiveRowAction"},
               "multiSelect": false
            }
         }
      ],
      mixins: {
         ConfigurationGridUtilites: "Terrasoft.ConfigurationGridUtilities"
      },
      methods: {
                addRecord: function() {
                                        var defValues = this.get("DefaultValues") || [];
                                        defValues.push({
                                                name: "Quantity",
                                                value: 1
                                        });
                                        defValues.push({
                                                name: "OfferDate",
                                                value: new Date()
                                        });
                                        this.set("DefaultValues", defValues);
                                        this.callParent(arguments);
                                },

                               
                                getFilterDefaultColumnName: function() {
                                        return "Product";
                                },

                                getGridDataColumns: function() {
                                        return {
                                                "Product.Name": {path:  "Product.Name"}
                                        };
                                }
      }
   };
});
;

- в OpportunityPageV2 переопределил базовую деталь

//Переопределение базовой детали "Продукт в продаже(OpportunityProduct)"
                        OpportunityProduct: {
                                "schemaName": "SuOpportunityProductDetailV2",
                                "entitySchemaName": "OpportunityProductInterest",
                                "filter": {
                                        "detailColumn": "Opportunity",
                                        "masterColumn": "Id"
                                }
                        }

В результате:
- поля добавились;
- имею ту же деталь, только вместо нередактируемых полей выводится строка с редактируемыми полями. То что мне и нужно, но когда я нажимаю на +, то не открывается карточка для добавления полей, а вместо этого добавляется строка с полями.
Хотелось бы сделать, чтобы октрывалась карточка, как это было в базовой детали. Возможно ли это?

Заранее благодарен.

Нравится

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

Здравствуйте, Кирилл.

За функционал открытия новой страницы редактирования, при нажатии кнопки "+" отвечает метод addRecord из схемы "BaseGridDetailV2". Вам стоит смотреть в сторону переноса логики данного метода в схему детали "SuOpportunityProductDetailV2".

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