使用包含字段SalesLine.Name
和SalesLine.ExternalItemId
的行填写任何销售订单。
然后运行以下作业,尝试修改与上述两者无关的任何字段:
SalesLine sl = SalesLine::findInventTransId('US01-000025', true);
ttsBegin;
sl.CustomerLineNum = 100; //any other field will serve as well
sl.modifiedField(fieldNum(SalesLine, CustomerLineNum)); //causes the issue
sl.update();
ttsCommit;
作业完成后,Name
和ExternalItemId
都将重置。
问题是由this.axInventDim().isFieldSet(fieldNum(InventDim, ConfigId))
中的行\Classes\AxSalesLine\isCustExternalItemDescriptionFieldsSet
引起的,该行始终返回true
。
因此,方法AxSalesLine.setName
和AxSalesLine.setExternalItemId
使用默认值填充相应字段。
有关使用Microsoft以这种方式编码的原因的任何建议,以及解决此问题的最佳方法吗?
P.S。我将问题缩小到R2 CU7中引入的方法\Classes\AxSalesLine\setRetailVariantId
答案 0 :(得分:2)
这是一个在KB3061573上于4/30/15解决的基本错误。
我认为完整的方法修复程序与您的方法很接近,但是修补程序也可能会调整其他方法。我希望这个修补程序令人满意,因为知道你并不疯狂。
public class SampleTwo {
public static void main(String[] args) throws Exception {
final CamelContext camelContext = new DefaultCamelContext();
camelContext.start();
camelContext.addRoutes(new RouteBuilder() {
@Override
public void configure() throws Exception {
from("file://target/inbox?noop=true&fileName=test.csv").to("direct://start");
from("direct://start").to("file://target/outbox"); //ADDED
}
});
Thread.sleep(1000*6000);
}}
答案 1 :(得分:0)
正如我在后记中所提到的,我将问题缩小到方法\Classes\AxSalesLine\setRetailVariantId
,这是在R2 CU7中引入的。
作为一种解决方法,我在代码中添加了一行,它解决了问题:
if (this.axInventDim().parmConfigId() != comb.inventDim().configId) // added check
this.axInventDim().parmConfigId(comb.inventDim().configId);
我会等一段时间来获得更好的答案/修复。如果没有提供,我会接受这个答案。