【发布时间】:2020-04-21 00:45:02
【问题描述】:
我正在尝试运行一个非常基本的脚本来生成发票,现在我正处于测试阶段,试图解决我们正在使用的新 InfoPlus 系统的问题。无论如何,我将一个名为 ordersList 的二维数组声明为全局变量,然后向其中添加内容,我可以看到结果在 for 循环中是完美的,该循环遍历数组并记录每个值,我得到了发货的总和每个订单号旁边的数量。
然后,当我尝试再次访问该数组时,在脚本的更下方,我得到“未定义”的结果。我不知道为什么会这样,任何帮助将不胜感激。
utils.log("Running Invoice Worksheet Script...");
utils.log("");
utils.log("Viewing Input Entities");
var ordersList = [[]];
var incrementerDecrementer = 0;
var firstInputEntity = utils.inputEntities.get(0);
var skuTable = infoplusApi.search("item", "lobId eq '" + firstInputEntity.lobId + "'", null, 100, 'sku');
utils.log("SKU TABLE??? " + skuTable);
for(var i = 0; i < 2; i++)
{
var itemID = skuTable.get(i);
var finalItemID = itemID.toString();
var colonPos = finalItemID.lastIndexOf(":");
finalItemID = finalItemID.slice(colonPos+1);
utils.log("Final ITEM ID: " + finalItemID);
var pleaseGiveMeItemInfo = infoplusApi.getTags("item", finalItemID);
utils.log("item info ?? " + pleaseGiveMeItemInfo);
}
//var SKUinfo =
for(var i=0; i<utils.inputEntities.size(); i++)
{
var inputEntity = utils.inputEntities.get(i);
utils.log(" " + inputEntity.orderNo + " SKU: " + inputEntity.sku + " Shipped Qty: " + inputEntity.shippedQty);
// utils.log(" " + inputEntity.shippedQty);
if(inputEntity.orderNo != ordersList[incrementerDecrementer][0])
{
var arrayToPush = [inputEntity.orderNo, parseInt(inputEntity.shippedQty)];
ordersList.push(arrayToPush);
incrementerDecrementer++;
}
else
{
ordersList[incrementerDecrementer][1] += parseInt(inputEntity.shippedQty);
}
}
utils.log("");
utils.log("Manipulate data in the original lines...");
for(var i = 0; i < ordersList.length; i++)
{
utils.log(ordersList[i]);
utils.log("");
}
var orderIncrementer = 0;
for(var i=0; i< utils.inputEntities.size(); i++)
{
var line1 = utils.inputEntities.get(i);
var line2 = null;
if(i < (utils.inputEntities.size()-1))
{
line2 = utils.inputEntities.get(i+1);
}
else
{
line2 = utils.inputEntities.get(i);
}
// utils.log(" Original Line with id: " + line.lobId);
utils.log("Line1 order num = " + line1.orderNo);
if(line1.orderNo == line2.orderNo)
{
utils.log("Order numbers Match, setting extended charge to zero... ");
line1.setExtendedCharge(0);
}
else
{
utils.log("orders list 0 1: " + ordersList[0][1]);
utils.log("Order numbers don't match, setting extended charge to qty shipped: " + ordersList[orderIncrementer][1]);
line1.setExtendedCharge(ordersList[orderIncrementer][1]);
orderIncrementer++;
}
//line.description = "Test Change Description";
//utils.setOutputLines(outputLines);
}
此处的日志输出:16432 是第一个订单号。问题是我应该获取数组值的未定义事物。
运行发票工作表脚本...
查看输入实体 SKU表??? [项目:849,项目:850,项目:234,项目:228,项目:232,项目:236,项目:238,项目:230,项目:226,项目:224,项目:225,项目:223,项目项目:235,项目:231,项目:233,项目:237,项目:227,项目:229,项目:244,项目:251,项目:240,项目:249,项目:246,项目:253,项目:250 ,项目:248,项目:243,项目:245,项目:252,项目:239,项目:242,项目:241,项目:247,项目:259,项目:261,项目:257,项目:255,项目项目:258,项目:260,项目:256,项目:254,项目:265,项目:271,项目:269,项目:273,项目:267,项目:263,项目:262,项目:266,项目:272 ,项目:268,项目:270,项目:264,项目:278,项目:281,项目:276,项目:280,项目:283,项目:274,项目:279,项目:282,项目:277,项目:284,项目:275,项目:285] 最终项目 ID:849 项目信息?? [] 最终项目 ID:850 项目信息?? [] 16432.000 SKU:BBL12P-0045 发货数量:0 25140.000 SKU:BBLSP-0037 发货数量:0 25140.000 SKU:BBLSP-0038 发货数量:0 25140.000 SKU:BBLSP-0039 发货数量:0 25140.000 SKU:BBLSP-0040 发货数量:0 25140.000 SKU:BBLSP-0041 发货数量:0 25146.000 SKU:BBLSP-0037 发货数量:1 25146.000 SKU:BBLSP-0038 发货数量:1 25146.000 SKU:BBPSP-0037 发货数量:1 25146.000 SKU:BBPSP-0038 发货数量:1 25146.000 SKU:BPC13-0007 发货数量:1 25146.000 SKU:BPC13-0008 发货数量:1 25146.000 SKU:BPC13-0009 发货数量:1 25146.000 SKU:BPC13-0012 发货数量:1 25153.000 SKU:BPC13-0007 发货数量:1 25153.000 SKU:BPC13-0008 发货数量:1 25153.000 SKU:BPC13-0009 发货数量:1 25153.000 SKU:BPC13-0010 发货数量:1 25153.000 SKU:BPC13-0012 发货数量:1 25158.000 SKU:BBPSP-0034 发货数量:2 25158.000 SKU:BBPSP-0035 发货数量:2 25158.000 SKU:BRZ1-0001 发货数量:2 25158.000 SKU:BRZ1-0004 发货数量:2 25960.000 SKU:BBPSP-0034 发货数量:0 25960.000 SKU:BBPSP-0037 发货数量:1 25960.000 SKU:BBPSP-0039 发货数量:1 25961.000 SKU:BBPSP-0034 发货数量:0 25961.000 SKU:BBPSP-0035 发货数量:1 26144.000 SKU:BBLSP-0040 发货数量:2 26144.000 SKU:BBPSP-0034 发货数量:2 26144.000 SKU:BBPSP-0035 发货数量:2 26144.000 SKU:BPC13-0011 发货数量:1 26146.000 SKU:BBPSP-0035 发货数量:1 26146.000 SKU:BBPSP-0039 发货数量:1 27793.000 SKU:BBPSP-0035 发货数量:0 27793.000 SKU:BBPSP-0039 发货数量:2 27793.000 SKU:BPC13-0012 发货数量:1 27793.000 SKU:BRZ1-0002 发货数量:1 27794.000 SKU:BPC13-0009 发货数量:4 27794.000 SKU:BPC13-0011 发货数量:5 27797.000 SKU:BBLSP-0040 发货数量:3 27797.000 SKU:BBPSP-0035 发货数量:3 27797.000 SKU:BBPSP-0037 发货数量:2 27797.000 SKU:BBPSP-0039 发货数量:3 27798.000 SKU:BBPSP-0037 发货数量:3 27798.000 SKU:BBPSP-0039 发货数量:4 27799.000 SKU:BBPSP-0037 发货数量:1 27800.000 SKU:BBPSP-0037 发货数量:1 27800.000 SKU:BBPSP-0039 发货数量:2 27800.000 SKU:BP9I-0002 发货数量:2 27800.000 SKU:BP9I-0004 发货数量:4 27801.000 SKU:BBPSP-0035 发货数量:2 27801.000 SKU:BBPSP-0037 发货数量:1 27801.000 SKU:BBPSP-0039 发货数量:1 27802.000 SKU:BBPSP-0037 发货数量:2 27802.000 SKU:BBPSP-0039 发货数量:2 27802.000 SKU:BPC13-0007 发货数量:2 27802.000 SKU:BPC13-0009 发货数量:2 27802.000 SKU:BPC13-0012 发货数量:2 27808.000 SKU:BBPSP-0037 发货数量:1 27808.000 SKU:BBPSP-0039 发货数量:2 27808.000 SKU:BPC13-0009 发货数量:1 27812.000 SKU:BBLSP-0038 发货数量:3 27812.000 SKU:BBPSP-0035 发货数量:1 27812.000 SKU:BRZ1-0002 发货数量:3 27828.000 SKU:BBPSP-0037 发货数量:2 27828.000 SKU:BBPSP-0038 发货数量:1 27828.000 SKU:BBPSP-0039 发货数量:1 27828.000 SKU:BP9I-0004 发货数量:4
在原始行中操作数据...
16432.000,0
25140.000,0
25146.000,8
25153.000,5
25158.000,8
25960.000,2
25961.000,1
26144.000,7
26146.000,2
27793.000,4
27794.000,9
27797.000,11
27798.000,7
27799.000,1
27800.000,9
27801.000,4
27802.000,10
27808.000,4
27812.000,7
27828.000,8
Line1 订单数量 = 16432.000 订单列表 0 1:未定义 订单号不匹配,将扩展费用设置为发货数量:未定义
【问题讨论】:
-
在哪一行得到未定义?
-
代码太多,我无法继续分析它。作为一个友好的建议,将该代码分解为多个函数,每个函数只执行一项简单的任务。调试和维护会容易得多。
-
我在这一行未定义:utils.log("订单号不匹配,将扩展费用设置为发货数量:" + ordersList[orderIncrementer][1]);以及之前的行,您可以在日志输出中看到未定义的位置。
标签: javascript arrays