首页 > 解决方案 > 在 Genexus 中将 SDT 数据转换为 BC

问题描述

我用 Genexus 15 中的数据填充了 SDT,需要将其保存在事务中。SDT 具有包含标题信息和详细信息项的两级结构。

我尝试使用此 DataProvider 但出了点问题,因为在尝试执行它时出现外键违规错误:

规则:

parm(in: &NewInvoice); // SDT variable

资源:

DPInvoice 
{
    StampId = &NewInvoice.StampId
    InvoiceNumber = &NewInvoice.InvoiceNumber
    CustomerId = &NewInvoice.CustomerId
    Concept
    {
        ProductId = &NewInvoice.Concept.CurrentItem.ProductId
        ConceptQty = &NewInvoice.Concept.CurrentItem.ConceptQty
    }
}

Webpanel 中触发 DP 的事件:

&Invoice = DPInvoice(&NewInvoice)
&Invoice.Insert()
commit

这是交易结构

这是 SDT 结构

请帮我!

标签: dataprovidergenexusbc

解决方案


您必须遍历&NewInvoice.

&NewInvoiceItem在 DataProvider 中定义一个类型的变量SDTInvoiceCopy1.ConceptItem并使用以下源代码:

DPInvoice 
{
    StampId = &NewInvoice.StampId
    InvoiceNumber = &NewInvoice.InvoiceNumber
    CustomerId = &NewInvoice.CustomerId
    Concept Input &NewInvoiceItem in &NewInvoice.Concept
    {
        ProductId = &NewInvoiceItem.ProductId
        ConceptQty = &NewInvoiceItem.ConceptQty
    }
}

推荐阅读