Вставить данные в сетку в acumatica - PullRequest
0 голосов
/ 14 декабря 2018

У меня есть сетка (показать устройства) и действие МАТЕРИАЛЫ (сетка на умной панели - показать материалы каждого устройства).

В действии Получить устройства (код ниже) я хочу загрузить устройства из другой таблицы в эту сетку, а также материалы каждого устройства в смарт-панель МАТЕРИАЛЫ.

После выполнения действия отображаются только устройства.На панели МАТЕРИАЛЫ нет записей, я пытаюсь нажать кнопку Обновить, но там по-прежнему нет данных.

Волшебство заключается в том, что после нажатия кнопки Сохранить в заголовке отображаются данные в МАТЕРИАЛАХ.правильно.

public PXAction<PSMTPhieuYeuCauSuaChuaMHTBHeader> GetDevices;
    [PXUIField(DisplayName = "Get Devices")]
    [PXButton(CommitChanges = true)]
    protected void getDevices()
    {
        PSMTRequestRepairMaint thisGraph = PXGraph.CreateInstance<PSMTRequestRepairMaint>();
        foreach (var record in PSMTPhieuYeuCauSuaChuaMMTBDeviceSelectedView.Cache.Updated)
        {
            PSMTPhieuYeuCauSuaChuaMMTBViewDevice device = (PSMTPhieuYeuCauSuaChuaMMTBViewDevice)record;
            if (device.Check.HasValue && device.Check.Value)
            {
                PSMTPhieuYeuCauSuaChuaMMTBLineGrid line = (PSMTPhieuYeuCauSuaChuaMMTBLineGrid)thisGraph.PSMTPhieuYeuCauSuaChuaMMTBLineGridView.Cache.CreateInstance();
                line = PSMTPhieuYeuCauSuaChuaMMTBLineGridView.Insert(line);
                line.DeviceID = device.HeaderID;
                line.FromDate = device.LastMaintenanceDate;
                line.ToDate = device.LastMaintenanceDate;
                device.Check = false;
                line = PSMTPhieuYeuCauSuaChuaMMTBLineGridView.Update(line);


                var materials = PXSelect<PSMTAllowedReplacementMaterial,
                            Where<PSMTAllowedReplacementMaterial.headerID,
                            Equal<Required<PSMTPhieuYeuCauSuaChuaMHTBHeader.soMay>>>>.Select(this, line.DeviceID);
                foreach (var item in materials)
                {
                    var allowedMaterial = (PSMTAllowedReplacementMaterial)item;
                    PSMTPhieuYeuCauSuaChuaMMTBMaterial material = (PSMTPhieuYeuCauSuaChuaMMTBMaterial)thisGraph.PSMTPhieuYeuCauSuaChuaMMTBMaterialView.Cache.CreateCopy(new PSMTPhieuYeuCauSuaChuaMMTBMaterial());
                    material = PSMTPhieuYeuCauSuaChuaMMTBMaterialView.Insert(material);
                    //material.LineGridID = line.GridID;
                    material.MaterialID = allowedMaterial.MaterialID;
                    material.Quantity = allowedMaterial.Quantity;
                    material = PSMTPhieuYeuCauSuaChuaMMTBMaterialView.Update(material);
                }
            }
        }
    }

Сетка

enter image description here

Панель

enter image description here

...