【问题标题】:Running Acumatica import scenario from code从代码运行acumatica导入方案
【发布时间】:2015-11-11 16:03:57
【问题描述】:

如何运行选择“Import by Scenario”场景 -> 从代码中按“Prepare&Import”?

我试过这个:

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

但这对于我的 DAC 的“按场景导入”图表运行“准备和导入”不起作用。

【问题讨论】:

  • 我收到“未找到提供程序”错误
  • 问题是我无法正确选择导入场景
  • 替代问题是:“如何正确运行 SYImportProcess.RunScenario()”
  • 请大家帮忙!!!

标签: import acumatica


【解决方案1】:

首先要检查。您可以从应用程序实例执行导入场景吗?我参考流程导入场景屏幕 (SM206036)。提供程序错误可能是导入方案没有分配数据提供程序,或者提供程序不可用。

【讨论】:

  • 是的,我可以通过在浏览器中按下浏览器按钮“准备和导入”从流程导入场景屏幕 (SM206036) 执行导入场景。
  • 在代码中似乎只需要运行类似:SYImportProcess.RunScenario("imporSO") 但它不起作用
  • 来自 Web 服务帮助文章:要执行 API 调用,您必须构建一个命令数组并通过调用 Submit() 函数将其提交到表单。要处理批量导入和导出操作,您需要定义一个场景并使用 Import() 和 Export() 函数。查看您的导入方案的 Web 服务 API 中的服务描述。
  • 我没有使用网络服务,我正在创建自定义项目
【解决方案2】:

这里是如何做到这一点的示例。我已经为 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
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-10-29
    • 2020-04-06
    • 2019-04-13
    • 1970-01-01
    • 1970-01-01
    • 2021-09-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多