.net 使用C#和JScript汇总表

nzk0hqpo  于 2023-02-26  发布在  .NET
关注(0)|答案(1)|浏览(129)

我用C#编写了代码来汇总InvoiceTable的值,并将这些汇总值移动到Abbyy FlexiCapture中的GroupTable。该软件相对较新,运行时没有显示任何错误。
需要编写两组代码:
1.在技术领域。
1.在事件处理程序中。
InvoiceTable包含:

  • 税号
  • 装运数量
  • 金额
  • 首席运营官

GroupTable包含:

  • HS代码
  • 数量
  • 金额
  • 国家OO

事件处理程序代码如下(C#):

if (ChangedStates.Has(7)) {
    int currentRow = 0;
    int i;
    for (i = 0; i < Document.Field("Invoice2\\InvoiceTable").Items.Count; i++) {
        if (Document.Field("Invoice2\\InvoiceTable").Cell("TariffNumber", i).Value == "") {
            Document.Field("Invoice2\\GroupTable").Cell("HSCode", currentRow).Value = Document.Field("Invoice2\\InvoiceTable").Cell("TariffNumber", i).Value;
            Document.Field("Invoice2\\GroupTable").Cell("Amt", currentRow).Value = Document.Field("Invoice2\\InvoiceTable").Cell("Amount", i).Value;
            Document.Field("Invoice2\\GroupTable").Cell("Qty", currentRow).Value = Document.Field("Invoice2\\InvoiceTable").Cell("ShipQty", i).Value;
            currentRow++;
        }
    }
}

技术字段如下所示(JScript):

for (i = 0; i < Field("ShipQty").Items.Count - 1; i++) {
    for (j = i + 1; j < Field("ShipQty").Items.Count; j++) {
        // if same new items are found
        if (Field("TariffNumber").Items(i).Value == Field("TariffNumber").Items(j).Value && Field("CoO").Items(i).Value == Field("CoO").Items(j).Value)
        {
            // summarise quantities
            Field("ShipQty").Items(i).Value = parseInt(Field("ShipQty").Items(i).Value) + parseInt(Field("ShipQty").Items(j).Value);

            // and weights
            Field("Amount").Items(i).Value = parseFloat(Field("Amount").Items(i).Value) + parseFloat(Field("Amount").Items(j).Value);
        }
    }
}

条件:
InvoiceTable中,如果TariffNumberCOO相等,则应将ShipQty和Amount的值相加并放入GroupTable中。
代码没有显示任何错误,但也没有给出输出。如果你们中的任何人能帮我解决这个问题,那就太好了。

f0brbegy

f0brbegy1#

您可以尝试在文档定义中添加一个汇总节。这可能需要您创建一个文档集。
我发现创建字段被识别时检查的规则更容易。这里有一些信息:https://help.abbyy.com/en-us/flexicapture/12/distributed_administrator/docsets_settings/

相关问题