如何引用我在 AP301000 中创建的客户字段
How to reference customer field which I created in AP301000
我在 AP301000 上创建了一个客户字段。该字段在屏幕上工作正常。现在我希望在选择供应商后填充此字段,因此我尝试使用代码列表自定义业务逻辑:
protected void APInvoice_VendorID_FieldUpdated(PXCache cache, PXFieldUpdatedEventArgs e, PXFieldUpdated InvokeBaseHandler)
{
if(InvokeBaseHandler != null)
InvokeBaseHandler(cache, e);
var row = (APInvoice)e.Row;
APInvoice.UsrVendorKey="test";
}
但我收到以下错误:
'PX.Objects.AP.APInvoice' does not contain a definition for 'UsrVendorKey' in file : Code#APInvoiceEntry(56)
我建议您阅读所有技术文档,特别是 T300 课程,因为它介绍了事件模型。您的代码存在一些问题。
首先,如果您希望在选择供应商时填充数据,则应使用 FieldDefaulting。 FieldUpdating 适用于更改该字段的值。
其次,您需要先获取扩展,然后才能对 UsrVendorKey 字段执行任何操作。
例如,获取 SOOrder 扩展程序如下所示,其中 SOOrderExt 是您的 DAC 扩展程序的名称。
var currentOrder = Base.Document.Current.GetExtension<SOOrderExt>();
获得扩展后,您可以使用它来访问您的新字段
e.NewValue = currentOrder.UsrFieldName;
您的代码无法编译,因为您试图将值设置为 class,而不是此 class 的实例。 row
是 APInvoice
的实例。此外,您的自定义字段不会直接添加到 APInvoice,因此您需要先检索扩展名,然后才能更新值。假设您使用自定义管理器添加您的字段,扩展 class 通常会被命名为 APInvoiceExt
。完整可能看起来像:
protected void APInvoice_VendorID_FieldUpdated(PXCache cache, PXFieldUpdatedEventArgs e, PXFieldUpdated InvokeBaseHandler)
{
if(InvokeBaseHandler != null)
InvokeBaseHandler(cache, e);
var row = (APInvoice)e.Row;
var ext = cache.GetExtension<APInvoiceExt>();
ext.UsrVendorKey="test";
}
我在 AP301000 上创建了一个客户字段。该字段在屏幕上工作正常。现在我希望在选择供应商后填充此字段,因此我尝试使用代码列表自定义业务逻辑:
protected void APInvoice_VendorID_FieldUpdated(PXCache cache, PXFieldUpdatedEventArgs e, PXFieldUpdated InvokeBaseHandler)
{
if(InvokeBaseHandler != null)
InvokeBaseHandler(cache, e);
var row = (APInvoice)e.Row;
APInvoice.UsrVendorKey="test";
}
但我收到以下错误:
'PX.Objects.AP.APInvoice' does not contain a definition for 'UsrVendorKey' in file : Code#APInvoiceEntry(56)
我建议您阅读所有技术文档,特别是 T300 课程,因为它介绍了事件模型。您的代码存在一些问题。
首先,如果您希望在选择供应商时填充数据,则应使用 FieldDefaulting。 FieldUpdating 适用于更改该字段的值。
其次,您需要先获取扩展,然后才能对 UsrVendorKey 字段执行任何操作。
例如,获取 SOOrder 扩展程序如下所示,其中 SOOrderExt 是您的 DAC 扩展程序的名称。
var currentOrder = Base.Document.Current.GetExtension<SOOrderExt>();
获得扩展后,您可以使用它来访问您的新字段
e.NewValue = currentOrder.UsrFieldName;
您的代码无法编译,因为您试图将值设置为 class,而不是此 class 的实例。 row
是 APInvoice
的实例。此外,您的自定义字段不会直接添加到 APInvoice,因此您需要先检索扩展名,然后才能更新值。假设您使用自定义管理器添加您的字段,扩展 class 通常会被命名为 APInvoiceExt
。完整可能看起来像:
protected void APInvoice_VendorID_FieldUpdated(PXCache cache, PXFieldUpdatedEventArgs e, PXFieldUpdated InvokeBaseHandler)
{
if(InvokeBaseHandler != null)
InvokeBaseHandler(cache, e);
var row = (APInvoice)e.Row;
var ext = cache.GetExtension<APInvoiceExt>();
ext.UsrVendorKey="test";
}