我已经为客户创建了一个自定义扩展,我需要做的事情之一就是获取产品的
Marketing Text
。这些数据存储在一个名为 Entity Text
的表中,我不知道如何获取它。
我知道我必须执行
.Get
,但我不知道如何获取所有主键组件或如何将它们组合在一起(我以前从未查询过带有组合键的表)。获取 Source System Id
进行记录很容易,但看起来我还需要提供 Company
、Source Table Id
和 Scenario
。
我对
Source Table Id
进行了硬编码,只是因为我没有找到一种我认为可以通过编程方式获取它的方法;但我非常愿意这样做。我知道 Scenario
应该是一个枚举,但我不知道如何找到并提供它。
此代码是我尝试获取数据的位置,它位于
OnAfterGetCurrRecord
内
Clear(EntityText); //Do I need to clear before fetching?
if EntityText.Get(Rec.CurrentCompany(), 27, Rec.SystemId, 'Marketing Text') then
MarketingText := EntityText."Preview Text";
这是[我认为]相关的变量声明
var
EntityText: Record "Entity Text";
MarketingText: Text;
我认为你已经步入正轨,但是你可以对你的代码进行一些调整。
使用
Clear
通常被认为是反模式。如果您在循环中使用变量或者将其声明为全局变量,则可能需要它,但在这两种情况下,都应该尝试将代码重构为例如将代码包含在带有局部变量的过程中,从而无需使用 Clear
。
对于
Get
上的 Entity Text
,您应该使用系统函数 CompanyName
,对于 Database
使用 Source Table Id
以及(如您自己建议的那样)对于 Entity Text Scenario
使用 Scenario
枚举:
EntityText.Get(CompanyName, Database::Item, Rec.SystemId(), "Entity Text Scenario"::"Marketing Text")