D365 新按钮创建空行价格线
D365 New Button creates price line with empty line
在添加有关为网格中的对象创建价格的逻辑后,它总是创建 "one line more",它是空的。
因此,如果需要创建两行,则会创建 3 行,并且添加的那一行将为空。
我在代码中遗漏了什么吗?
[Control("CommandButton")]
class AreaActionPaneNew
{
void clicked()
{
PMCParameters contractParameters = PMCParameters::find();
PMETmpRentalObjectArea groupedAreaList; // Group by area_type and cost_type
PMERentalObjectPrice priceList;
date workingDate = currWorkingDate.dateValue();
;
super();
// Get grouped area values. Values are summed up by area_type and ancost_type
groupedAreaList = PMERentalObjectAreaCl::getRentalAreaPrCostType(pmeRentalobject.RentalObjectId, userSetting.validFrom(), userSetting.validTo() , workingDate);
ttsbegin;
while select groupedAreaList
{
select forupdate firstonly priceList
where priceList.RentalObjectId == pmeRentalObject.RentalObjectId &&
priceList.RentalCostType == groupedAreaList.RentalCostTypeId &&
priceList.AreaType == groupedAreaList.Areatype && priceList.ValidFrom == pmeRentalObject.ValidFrom;
if (!priceList)
priceList.initValue();
priceList.RentalObjectId = pmeRentalObject.RentalObjectId;
priceList.RentalCostType = groupedAreaList.RentalCostTypeId;
priceList.ValidFrom = pmeRentalobject.ValidFrom;
priceList.AreaType = groupedAreaList.Areatype;
priceList.Amount = groupedAreaList.Price;
priceList.Area = groupedAreaList.AreaValue;
priceList.Quantity = groupedAreaList.RentalQty;
if (!priceList)
priceList.Period = contractParameters.ReportPeriod;
if (priceList)
priceList.update();
else
priceList.insert();
}
ttscommit;
pmeRentalObjectPrice_ds.research();
}
}
代码看起来只是 updates/inserts 而没有创建空行。
根据您的属性,您正在使用 Command Button
(see here),它可能有一个关联的命令,例如 New
,它有效地推动 Ctrl+N
,并会解释为什么你有一个空行。
最简单的检查方法就是创建一个常规 Button
并覆盖点击的方法,然后 copy/paste 您的代码并按下两个按钮,看看它们是否有不同的行为。
检查按钮上的 Command
属性,看看那里是否有东西。尝试注释掉 super();
调用。
您或许应该只考虑 Button
或 Menu Item Button
与关联对象。
在添加有关为网格中的对象创建价格的逻辑后,它总是创建 "one line more",它是空的。 因此,如果需要创建两行,则会创建 3 行,并且添加的那一行将为空。
我在代码中遗漏了什么吗?
[Control("CommandButton")]
class AreaActionPaneNew
{
void clicked()
{
PMCParameters contractParameters = PMCParameters::find();
PMETmpRentalObjectArea groupedAreaList; // Group by area_type and cost_type
PMERentalObjectPrice priceList;
date workingDate = currWorkingDate.dateValue();
;
super();
// Get grouped area values. Values are summed up by area_type and ancost_type
groupedAreaList = PMERentalObjectAreaCl::getRentalAreaPrCostType(pmeRentalobject.RentalObjectId, userSetting.validFrom(), userSetting.validTo() , workingDate);
ttsbegin;
while select groupedAreaList
{
select forupdate firstonly priceList
where priceList.RentalObjectId == pmeRentalObject.RentalObjectId &&
priceList.RentalCostType == groupedAreaList.RentalCostTypeId &&
priceList.AreaType == groupedAreaList.Areatype && priceList.ValidFrom == pmeRentalObject.ValidFrom;
if (!priceList)
priceList.initValue();
priceList.RentalObjectId = pmeRentalObject.RentalObjectId;
priceList.RentalCostType = groupedAreaList.RentalCostTypeId;
priceList.ValidFrom = pmeRentalobject.ValidFrom;
priceList.AreaType = groupedAreaList.Areatype;
priceList.Amount = groupedAreaList.Price;
priceList.Area = groupedAreaList.AreaValue;
priceList.Quantity = groupedAreaList.RentalQty;
if (!priceList)
priceList.Period = contractParameters.ReportPeriod;
if (priceList)
priceList.update();
else
priceList.insert();
}
ttscommit;
pmeRentalObjectPrice_ds.research();
}
}
代码看起来只是 updates/inserts 而没有创建空行。
根据您的属性,您正在使用 Command Button
(see here),它可能有一个关联的命令,例如 New
,它有效地推动 Ctrl+N
,并会解释为什么你有一个空行。
最简单的检查方法就是创建一个常规 Button
并覆盖点击的方法,然后 copy/paste 您的代码并按下两个按钮,看看它们是否有不同的行为。
检查按钮上的 Command
属性,看看那里是否有东西。尝试注释掉 super();
调用。
您或许应该只考虑 Button
或 Menu Item Button
与关联对象。