【问题标题】:Automatically setting parent id when creating item from list part in Business Central/AL从 Business Central/AL 中的列表部分创建项目时自动设置父 ID
【发布时间】:2020-05-19 02:04:07
【问题描述】:

我对使用 AL for Business Central 构建扩展非常陌生。我正在尝试为学校申请设置扩展。我建立的表工作,它们遵循这个数据模型:

School - Course - Lecture
  |     /
Teacher

CardSchool 内,我展示了Course 的列表部分。它正确显示给定学校的所有课程。到目前为止,一切都很好。但是现在,每当我从这个视图创建Course 时,我必须记住手动设置SchoolId,但我想自动执行此操作,因为我们已经知道我们在哪个School

Course 表如下所示:

table 50110 Course
{
    DataClassification = ToBeClassified;
    DrillDownPageId = "Course List";
    LookupPageId = "Course List";


    fields
    {
        field(1; "No."; Code[20])
        ...
        field(5; "SchoolId"; Code[20])
        {
            DataClassification = ToBeClassified;
            TableRelation = School."No.";
        }
    }

    keys
    {
        key(PK; "No.")
        {
            Clustered = true;
        }
    }
}

Course 列表部分明确不包含 SchoolId,因为我们希望它可以自动管理:

page 50118 "Course List Part"
{
    PageType = ListPart;
    UsageCategory = None;
    SourceTable = Course;
    CardPageId = "Course Card";
    // InsertAllowed = false;

    layout
    {
        area(Content)
        {
            repeater(GroupName)
            {
                field("No."; "No.") { ApplicationArea = All; }
                field(Name; Name) { ApplicationArea = All; }
                field(CourseOwnerId; CourseOwnerId) { ApplicationArea = All; }
                // field(SchoolId; SchoolId) { ApplicationArea = All; }
            }
        }
    }
}

School 卡在相应视图上调用 Course list part

page 50117 "School Card"
{
    PageType = Card;
    UsageCategory = None;
    SourceTable = School;

    layout
    {
        area(Content)
        {
            group(General)
            {
                field("No."; "No.")
                {
                    ApplicationArea = All;

                }
                field(Name; Name)
                {
                    ApplicationArea = All;

                }
            }
            group("Extras 1")
            {
                part("Courses"; "Course List Part")
                {
                    ApplicationArea = All;
                    SubPageLink = SchoolId = field("No.");
                    UpdatePropagation = Both;
                }
            }
        }
    }
}

当然还有School 表,其中No. 属性设置为主键:

table 50113 School
{
    DataClassification = ToBeClassified;
    DrillDownPageId = "School List";
    LookupPageId = "School List";

    fields
    {
        field(1; "No."; Code[20])
        {
            DataClassification = ToBeClassified;
        }
        ...
    }

    keys
    {
        key(PK; "No.")
        {
            Clustered = true;
        }
    }
}

仍然没有运气。

【问题讨论】:

    标签: customization dynamics-business-central dynamics-al


    【解决方案1】:

    当您将“课程”页面添加到“学校页面”时,子页面链接将自动为您处理该部分关系;当您插入新记录时,它会自动用“SchoolId”填充编号。

    例如这就是它在销售订单页面上的工作方式。

     part(SalesLines; "Sales Order Subform")
                {
                    ApplicationArea = Basic, Suite;
                    Editable = DynamicEditable;
                    Enabled = "Sell-to Customer No." <> '';
                    SubPageLink = "Document No." = FIELD("No.");
                    UpdatePropagation = Both;
                }
    

    您还必须定义从“子”表到“父”表的表关系,例如

    table 50121 child
    { 
        fields
        {
            field(1; ParentID; Integer)
            {          
                TableRelation = Parent.ID;
    

    您要链接的字段必须是 Child 表的主键,即 “SchoolID”必须在代码中“课程”的主键中。

    【讨论】:

    • 谢谢,我刚刚尝试过,但不幸的是我没有设法让您的代码正常工作。单独的 SubPageLink 不负责更新,在我的示例中,No. 肯定在Course 的主键中。我既没有Enabled,也没有Editable,但我无法想象他们为什么需要在那里实现这种行为(我不知道为什么(仍然是初学者),但DynamicEditable 无法编译)。知道我还能尝试什么吗?
    • 我自己试了一下,发现我们都漏掉了一些东西,显然也需要从子表的字段中定义一个表关系,我猜是有道理的,你这样做了吗?更新了答案。
    • 好奇者和好奇者,因为我确实希望这能像你描述的那样工作。我正在用更多代码更新我的原始问题。就我没有经验的眼睛所见,它看起来与您的建议一致......
    • 我尝试添加TableRelation = Parent.Id,因为它是TableRelation = Parent,但仍然:没有运气。
    • 啊哈,我认为 schoolid 必须是课程表主键的一部分。
    猜你喜欢
    • 2023-02-19
    • 1970-01-01
    • 1970-01-01
    • 2021-01-15
    • 2022-01-28
    • 1970-01-01
    • 1970-01-01
    • 2022-08-12
    • 2022-11-04
    相关资源
    最近更新 更多