我创建了一个简单的自定义,以在AR发票和备忘录屏幕AR.30.10.00上添加字符串UDF。我通过添加属性[PXDefault]来实现它。
现在,当我在AR Payments and Applications,AR.30.20.00中输入现金收据,并且不将现金应用于发票时,系统会抛出错误,说明需要UDF。在付款屏幕上无法进入UDF。 UDF与发票相关,而不是付款。
为什么系统会抛出此错误?有工作吗?
答案 0 :(得分:2)
您的CustomField似乎已添加到 ARRegister DAC (扩展名),而不是 ARInvoice DAC (扩展程序)。 ARInvoice和ARPayment都从ARRegister继承,因此如果您将自定义字段(必需)添加到ARRegister DAC(扩展名),则两者都需要它。
如果您通过自定义项目中的数据访问部分添加了该字段,我认为它会将其添加到ARRegister DAC扩展中。 在自定义工具上,您可以单击代码部分,单击加号(添加),在文件模板上选择 DAC扩展,添加名称和点击确定。 这将创建一个Dac扩展文件,您可以操作并使用 ARInvoice 而不是 ARRegister 。
然后在保存文件后,您需要在顶部菜单上转到文件 - >编辑项目项目。
您需要右键单击网格区域,选择添加 - >数据库表字段:
然后在您的情况下选择所需的DAC(ARInvoice),使用字段名称和类型(DAC扩展文件上使用的匹配字段名称和类型)。 请注意,你不需要在字段中添加" Usr" ,这会自动添加到工具中。
点击确定,保存并发布,以便现在可以在屏幕部分访问该字段。
答案 1 :(得分:1)
PXDefault属性还会在保存到数据库之前检查字段值是否为空。您可以使用PersistingCheck属性调整此行为。其值指示属性是否应检查该值是否为空,检查该值是否为空或空字符串,或者不检查。
[PXDefault(PersistingCheck = PXPersistingCheck.Nothing)]
您扩展的DAC很可能在两个屏幕中使用,因此您应该更改持久检查或设置默认值。
您可以使用CacheAttached事件覆盖特定图表上您希望/不想要该行为的自定义字段:
[PXMergeAttributes(Method = MergeMethod.Merge)]
[PXDefault(PersistingCheck = PXPersistingCheck.Nothing)]
protected virtual void ARTran_UDF_CacheAttached(PXCache sender)
{
}
如果没有显式默认值,则字段将为null并在持久检查时引发错误。要为字符串字段设置非null默认值:
[PXDefault("")]