View Code Extensions
Views in D365 F&O support code extensions through augmentation classes using Chain of Command, just like tables. Since views inherit from Common, many of the same methods are available for wrapping.
Creating a View Extension Class
[ExtensionOf(tableStr(SAMOCustTransView))]
final class SAMOCustTransView_Extension
{
// Wrapped methods and new methods
}
note
Views use tableStr() (not viewStr()) in the [ExtensionOf] attribute because views are treated as table-like objects in the X++ type system.
Naming Convention
| Element | Pattern | Example |
|---|---|---|
| Extension class | <Prefix><ViewName>_Extension | SAMOCustTransView_Extension |
Methods That Can Be Wrapped
Views support a subset of table methods for CoC wrapping. Since views are typically read-only, data manipulation events are less common.
| Method | Description |
|---|---|
validateWrite() | Validate before write (if the view supports updates). |
validateDelete() | Validate before delete. |
validateField(FieldId) | Field-level validation. |
modifiedField(FieldId) | React to field changes. |
initValue() | Set default values. |
postLoad() | Post-load processing for computed display values. |
Example: Adding Post-Load Logic
[ExtensionOf(tableStr(SAMOCustTransView))]
final class SAMOCustTransView_Extension
{
public void postLoad()
{
next postLoad();
// Populate a display field after load
this.SAMODisplayStatus = SAMOStatusHelper::getStatusText(this.Status);
}
}
Adding New Methods
[ExtensionOf(tableStr(SAMOCustTransView))]
final class SAMOCustTransView_Extension
{
public AmountCur SAMOCalculateBalance()
{
return this.AmountMST - this.SettleAmountMST;
}
}