【发布时间】:2020-08-03 11:38:58
【问题描述】:
我想在 acumatica 基本屏幕“CR306000”ex:attributes 选项卡的网格视图中显示默认值
我需要编写什么代码来实现这一点?
【问题讨论】:
我想在 acumatica 基本屏幕“CR306000”ex:attributes 选项卡的网格视图中显示默认值
我需要编写什么代码来实现这一点?
【问题讨论】:
答案 1(属性)
您在问题中显示的屏幕是 Acumatica 的一个非常特殊的功能,称为属性。将属性分配给“类”,例如库存项目的项目类。要在屏幕中添加其他属性,首先在属性屏幕 (CS2050000) 上定义属性,然后将其添加到您希望使用它的对象的每个类中。对于您的屏幕截图,这将是案例类 (CS206000)。定义类后,您可以转到“属性”选项卡添加您定义的与该类相关的属性。 (例如,泵的项目类别可能包括马力作为属性,但办公用品的项目类别不会。)
将使用属性的功能添加到自定义屏幕需要:
这是我学会这样做的问题的链接。包括代码示例,并指出了我的问题的修复。 How do I enable custom attributes? (can assign on class, but not displaying for transaction)
答案 2(具有默认详细信息的主详细信息)
如果您不熟悉 Acumatica 开发,您应该先完成他们提供的免费培训课程。这些可以在 Acumatica 网站上的https://openuni.acumatica.com/courses/development/ 找到。您要为此案例复习的特定课程是 T210 自定义表格和主从关系。在当前培训材料第 99 页的第 4.2 节中,您将找到一个显示在创建新的服务-设备记录对时预填充“默认保修”示例的部分。培训课程中创建的记录和所有自定义,仅作为示例。
实际上,您必须为培训指南中的示例做两件事。首先,您创建一个“默认记录”。在培训指南中,您定义了默认情况下将与您的服务设备记录关联的保修记录。接下来,您创建一个事件处理程序,以便在创建标题中的父级时实际填充详细信息选项卡中的网格。培训指南显示了如何执行所有这些操作,但重点... 使用 RowInserted 事件创建详细记录。培训指南中的示例如下:
//Insert the default detail record.
protected virtual void _(Events.RowInserted<RSSVRepairPrice> e)
{
if (Warranty.Select().Count == 0)
{
bool oldDirty = Warranty.Cache.IsDirty;
// Retrieve the default warranty.
Contract defaultWarranty = (Contract)DefaultWarranty.Select();
if (defaultWarranty != null)
{
RSSVWarranty line = new RSSVWarranty();
line.ContractID = defaultWarranty.ContractID;
// Insert the data record into
// the cache of the Warranty data view.
Warranty.Insert(line);
// Clear the flag that indicates in the UI whether the cache
// contains changes.
Warranty.Cache.IsDirty = oldDirty;
}
}
}
其中的关键部分是您定义记录(RSSVWarranty line = ...),然后将其插入到与网格关联的视图中(Warranty.Insert(line) ;) 该示例的其余部分是利用特殊视图从保修主表(合同)中获取默认保修记录。
【讨论】: