首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >通用查询的批量打印

通用查询的批量打印
EN

Stack Overflow用户
提问于 2018-02-10 04:30:20
回答 1查看 216关注 0票数 0

我已经在Acumatica中创建了一个通用查询,它返回打开的工作单。我们知道可以应用打印操作,但是,我们希望打印出工作订单的多个实例。因此,我们不必单独打印它们。目前是否有批量打印的解决方案,或者是否有人可以为我指明正确的工作方向?我知道有一个可以找到的批量操作打印所有功能,但是,它没有做任何事情。

EN

回答 1

Stack Overflow用户

发布于 2018-02-22 12:36:42

与将用户重定向至生成的报表的任何其它操作一样,服务订单的打印服务订单按钮将抛出一个PXReportRequiredException,以便在新窗口中打开生成的报表:

代码语言:javascript
运行
复制
public class ServiceOrderEntry : PXGraph<ServiceOrderEntry, FSServiceOrder>
{
    ...
    public PXAction<FSServiceOrder> printServiceOrder;

    [PXUIField]
    [PXButton]
    public virtual void PrintServiceOrder()
    {
        if (this.IsDirty) Actions.PressSave();
        if (ServiceOrderRecords.Current == null) return;

        Dictionary<string, string> serviceOrderParameters = 
            GetServiceOrderParameters(ServiceOrderRecords.Current, false);
        if (serviceOrderParameters.Count != 0)
        {
            throw new PXReportRequiredException(serviceOrderParameters, 
                "SD641000", PXBaseRedirectException.WindowMode.NewWindow, string.Empty);
        }
    }
    ...
}

如果您将服务订单的打印服务订单活动作为批量活动添加至一般查询(如以下屏幕截图所示),则GI批量活动将仅为第一个选定的服务订单生成并打开服务订单报表表单。由于抛出PXReportRequiredException以显示为第一个服务订单生成的报告表单,因此无法处理任何后续服务订单。

为了将为多个服务订单生成的服务订单报告表单合并到单个报告中,您应该创建自定义处理屏幕,并在PXReportRequiredException实例上使用AddSibling方法。AddSibling方法会将为2nd+服务订单生成的报告附加到最初为第一个已处理服务订单创建的PXReportRequiredException实例。处理完所有选定的服务订单后,将抛出一个PXReportRequiredException,将用户重定向到报告查看器,一次显示所有生成的报告。

代码语言:javascript
运行
复制
public class PrintServiceOrderProcess : PXGraph<PrintServiceOrderProcess>
{
    public PXCancel<FSServiceOrder> Cancel;
    public PXProcessing<FSServiceOrder> ServiceOrderRecords;

    public PrintServiceOrderProcess()
    {
        ServiceOrderRecords.SetProcessDelegate(list => PrintServiceOrders(list));
    }

    public static void PrintServiceOrders(IEnumerable<FSServiceOrder> list)
    {
        PXReportRequiredException ex = null;
        foreach (var order in list)
        {
            Dictionary<string, string> parameters = new Dictionary<string, string>();
            string srvOrdType = SharedFunctions
                .GetFieldName<FSServiceOrder.srvOrdType>(true);
            string refNbr = SharedFunctions
                .GetFieldName<FSServiceOrder.refNbr>(true);
            parameters[srvOrdType] = order.SrvOrdType;
            parameters[refNbr] = order.RefNbr;

            if (ex == null)
            {
                ex = new PXReportRequiredException(parameters, "SD641000", "SD641000");
            }
            else
            {
                ex.AddSibling("SD641000", parameters, false);
            }
        }
        if (ex != null) throw ex;
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48713650

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档