从代码运行Acumatica导入场景

时间:2015-08-18 15:55:02

标签: import acumatica

如何运行选择"按场景导入"场景 - >按"准备和进口"从代码?

我试过这个:

var importGraph = PX.Data.PXGraph.CreateInstance<SYImportProcessSingle>();
SYMappingActive mapactive =  PXSelect<SYMappingActive>.Search<SYMappingActive.mappingID>(importGraph, importproviderID);
importGraph.PrepareImport.PressButton();

但这无法运行&#34;准备&amp;进口&#34; for&#34;按场景导入&#34;我的DAC的图表。

2 个答案:

答案 0 :(得分:0)

要检查的第一件事。您可以从应用程序实例执行导入方案吗?我参考Process Import Scenario屏幕(SM206036)。提供程序错误可能是导入方案未分配数据提供程序,或提供程序不可用。

答案 1 :(得分:0)

以下是如何做到这一点的示例。我已经为SalesOrder写了这个,但你可以为任何其他屏幕修​​改它。此外,如果同一屏幕上存在多个导入方案,则此代码将使用第一个活动方案。

public class SOOrderEntry_Extension : PXGraphExtension<SOOrderEntry>
{
    #region Actions
    public PXAction<SOOrder> RunScenario;

    [PXButton(CommitChanges = true)]
    [PXUIField(DisplayName = "RUN")]
    protected void runScenario()
    {
        var importGraph = PXGraph.CreateInstance<SYImportProcessSingle>();
        var myMapping = PXSelect<SYMapping, Where<SYMapping.screenID, Equal<Required<SYMapping.screenID>>>>.Select(importGraph, Base.Accessinfo.ScreenID.Replace(".", string.Empty));
        if (myMapping.Any())
        {
            importGraph.MappingsSingle.Current = importGraph.MappingsSingle.Search<SYMappingActive.name>(((SYMapping)myMapping.First(x => ((SYMapping)x).IsActive ?? false)).Name);
            importGraph.Prepare.Press();
            PXLongOperation.WaitCompletion(importGraph.UID);
            importGraph.Clear(PXClearOption.ClearAll);
            importGraph.MappingsSingle.Current = importGraph.MappingsSingle.Search<SYMappingActive.name>(((SYMapping)myMapping.First(x => ((SYMapping)x).IsActive ?? false)).Name);
            importGraph.Import.Press();
            PXLongOperation.WaitCompletion(importGraph.UID);
        }
    }
    #endregion
}
相关问题