Chronus采购发票FactBox选中行后如何获取对应记录?
解决Chronus采购发票场景下FactBox消失及选中记录获取问题
问题原因分析
你遇到的FactBox消失问题,大概率是原“Incoming Doc. Attach. FactBox”的数据源关联逻辑被干扰,或是自定义扩展未正确维持与主页面的上下文绑定。原FactBox依赖采购发票主页面的“Incoming Document No.”字段关联附件记录,切换选中文件时若上下文传递中断,就会导致FactBox失去数据源而消失。
正确获取选中记录的实现方式
要捕获选中的Incoming Document Attachment记录,OnAfterGetCurrRecord触发器是合适的选择,你需要在触发器中获取当前选中记录并传递给目标FactBox。以下是完整实现步骤:
1. 扩展原附件FactBox,捕获选中记录
修改你的pageextension代码,在触发器中同步选中记录到自定义FactBox:
pageextension 51101 "IncomingDoc.Attach.FactBoxExt" extends "Incoming Doc. Attach. FactBox" { trigger OnAfterGetCurrRecord() var SelectedFileFactBox: Page "Selected File Details FactBox"; begin // 将当前选中的附件记录传递给自定义FactBox if SelectedFileFactBox.IsOpen() then SelectedFileFactBox.SetRecord(Rec); end; }
2. 创建自定义FactBox展示选中文件信息
新建一个CardPart类型页面,用于展示选中文件的详情:
page 51102 "Selected File Details FactBox" { PageType = CardPart; SourceTable = "Incoming Document Attachment"; CardPageID = "Incoming Document Attachment Card"; layout { area(content) { group(FileDetails) { field("File Name"; Rec."File Name") { ApplicationArea = All; } field("File Size"; Rec."File Size") { ApplicationArea = All; } field("Created Date-Time"; Rec."Created Date-Time") { ApplicationArea = All; } field("Document Type"; Rec."Document Type") { ApplicationArea = All; } } } } }
3. 将自定义FactBox添加到采购发票页面
扩展采购发票页面,把自定义FactBox加入FactBox区域:
pageextension 51103 "Purchase Invoice FactBox Ext" extends "Purchase Invoice" { layout { addlast(Factboxes) { part("Selected File Details"; "Selected File Details FactBox") { ApplicationArea = All; // 初始绑定主页面的入库文档编号,确保FactBox初始加载有上下文 SubPageLink = "Incoming Document No." = field("Incoming Document No."); } } } }
解决FactBox消失的关键要点
- 不破坏原FactBox的数据源关联:原FactBox的
SubPageLink绑定了主页面的“Incoming Document No.”,扩展时不要修改这个配置,否则会导致原FactBox失去数据源。 - 手动同步选中记录:同一入库文档下切换附件时,主页面字段未变化,
SubPageLink不会自动刷新,需在原附件FactBox的触发器中手动调用SetRecord传递选中记录。 - 检查扩展ID冲突:确保自定义扩展ID(51101、51102、51103)未与现有自定义对象重复,避免页面逻辑异常。
内容的提问来源于stack exchange,提问作者kuhi
相关产品推荐
相关产品推荐

