You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Acumatica Excel导入无数据显示:如何排查问题?

Acumatica Excel导入无数据问题排查与解决

问题描述

在Acumatica中配置Excel导入功能时,导入按钮正常显示,可弹出导入对话框,完成表单选择、字段映射等步骤后,网格中无任何数据导入。

当前配置

  • 已声明PXImport属性,关联基础图的主视图SOShipment(未重定义)
  • 已设置Grid的AllowUpload="True"
  • 表单选择、字段映射对话框正常显示
  • 完成导入流程后网格仍为空

已尝试操作

  • 修改PXImport指向DAC名称,无变化
  • 将Grid的DataKeyNames改为导入的LotSerialNbr,无变化

相关代码片段

Graph扩展代码

[PXCopyPasteHiddenView]
[PXImport(typeof(SOShipment))]
public PXSelect<MQMJSOShipmentEntryExtScanLabel> MQMJSOShipmentEntryExtScanLabels;

DAC代码(虚拟表)

public class MQMJSOShipmentEntryExtScanLabel : PX.Data.IBqlTable
{
    #region LineNbr
    public abstract class lineNbr : PX.Data.IBqlField { }

    protected Guid? _LineNbr;

    [PXGuid(IsKey = true)]
    public virtual Guid? LineNbr
    {
        get => _LineNbr;
        set => _LineNbr = value;
    }
    #endregion LineNbr

    #region LotSerialNbr
    public abstract class lotSerialNbr : PX.Data.IBqlField { }

    protected string _LotSerialNbr;

    [PXDBString(100, IsUnicode = true)]
    [PXDefault("", PersistingCheck = PXPersistingCheck.Nothing)]
    [PXUIField(DisplayName = "Lot Serial Number")]
    [PXSelector(typeof(Search5<INLotSerialStatus.lotSerialNbr,
        InnerJoin<SOShipLine, On<SOShipLine.inventoryID,Equal<INLotSerialStatus.inventoryID>, And<SOShipLine.locationID,Equal<INLotSerialStatus.locationID>>>>,
        Where<INLotSerialStatus.qtyOnHand, Greater<decimal0>, And<SOShipLine.shipmentNbr, Equal<Current<SOShipment.shipmentNbr>>
            >>,Aggregate<GroupBy<INLotSerialStatus.lotSerialNbr, Max<INLotSerialStatus.qtyAvail>>>>),
        new Type[] { typeof(INLotSerialStatus.lotSerialNbr), typeof(INLotSerialStatus.qtyAvail) })]
    public virtual string LotSerialNbr
    {
        get => _LotSerialNbr;
        set => _LotSerialNbr = value;
    }
    #endregion LotSerialNbr
}

页面代码

<px:PXSmartPanel runat="server" ID="MQMJSOShipmentEntryExtScanLabelPopup" DesignView="Content" TabIndex="13700" Width="800px" LoadOnDemand="True" CreateOnDemand="True" AutoReload="True" AutoRepaint="True" CaptionVisible="True" Caption="Scan Labels to Ship" AlreadyLocalized="False" Key="MQMJSOShipmentEntryExtScanLabels">
    <px:PXGrid ID="PXGridMQMJSOShipmentEntryExtScanLabel" runat="server" Width="100%" DataSourceID="ds" AutoAdjustColumns="true" Caption="Shipped Items" Height="240px" AllowFilter="False" SkinID="Details" CaptionVisible="False" AllowPaging="True" AllowSearch="True" AdjustPageSize="Auto" SyncPosition="true">
        <Mode AllowUpload="True" InitNewRow="false"/>
        <Levels>
            <px:PXGridLevel DataMember="MQMJSOShipmentEntryExtScanLabels" DataKeyNames="LotSerialNbr">
                <Columns>
                    <px:PXGridColumn DataField="LotSerialNbr" AutoCallBack="true"/>
                    <px:PXGridColumn DataField="InventoryID" AutoCallBack="true"/>
                    <px:PXGridColumn DataField="InventoryID_InventoryItem_Descr" AutoCallBack="true"/>
                    <px:PXGridColumn DataField="QtyShip" AutoCallBack="true"/>
                </Columns>
            </px:PXGridLevel>
        </Levels>
    </px:PXGrid>
    <px:PXPanel runat="server" ID="PXPanel43A57822CF0444CF5ABE29C6CBD06F100" SkinID="Buttons" Height="50px">
        <px:PXButton runat="server" ID="PXButton43A57822CF0444CF5ABE29C6CBD06F100" Text="Ship" DialogResult="OK">
            <AutoCallBack Target="ds" Command="Commit">
                <Behavior CommitChanges="True" PostData="Content"/>
            </AutoCallBack>
        </px:PXButton>
        <px:PXButton runat="server" ID="PXButton53A57822CF0444CF5ABE29C6CBD06F100" Text="Cancel" DialogResult="Cancel"/>
    </px:PXPanel>
</px:PXSmartPanel>

排查与解决步骤

  1. 修正主键字段的自动生成配置
    DAC的LineNbr作为主键,导入时Excel无法提供Guid值,需设置自动生成:

    [PXGuid(IsKey = true, AutoGenerate = true)]
    

    这样系统在导入时会自动为每条记录生成唯一Guid,避免主键缺失导致数据无法存入缓存。

  2. 对齐Grid的DataKeyNames与DAC主键
    Grid的DataKeyNames必须指向DAC的主键字段,而非业务字段,修改页面代码:

    <px:PXGridLevel DataMember="MQMJSOShipmentEntryExtScanLabels" DataKeyNames="LineNbr">
    

    确保Acumatica能正确识别导入的每条记录的唯一标识。

  3. 检查DAC字段属性与内存表适配性
    由于该表是永不写入的虚拟表,将数据库绑定属性PXDBString改为内存字段属性PXString,避免数据库层面的验证干扰:

    [PXString(100, IsUnicode = true)]
    
  4. 验证导入字段映射的完整性

    • 确保Excel中的列与DAC字段正确映射,尤其是LotSerialNbr、InventoryID、QtyShip等必填字段
    • 若Excel列名与DAC字段名不一致,需手动在导入对话框中完成映射,避免字段匹配失败
  5. 启用系统Trace日志排查隐藏错误
    在Acumatica中开启Trace日志(系统管理 > 系统维护 > 跟踪),执行导入操作后查看日志,检查是否存在字段验证失败、缓存未更新或主键冲突等错误信息。

  6. 确保主视图Current值有效
    PXImport(typeof(SOShipment))要求当前主视图(SOShipment)有选中的记录,导入时子记录会关联到该主记录。验证导入时Shipment记录已正确加载,Current<SOShipment.shipmentNbr>有有效值。

内容的提问来源于stack exchange,提问作者user3708398

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 07:29:59