使用 Business Central Dynamics AL 获取营销文本

问题描述 投票:0回答:1

我已经为客户创建了一个自定义扩展,我需要做的事情之一就是获取产品的

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;
dynamics-business-central dynamics-al businesscentral
1个回答
0
投票

我认为你已经步入正轨,但是你可以对你的代码进行一些调整。

使用

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")
© www.soinside.com 2019 - 2024. All rights reserved.