Skip to main content
Solved

Processing Screen - can I make Acumatica allow me to be able to manually add items to a grid?

  • September 16, 2022
  • 2 replies
  • 443 views

Joe Schmucker
Captain II
Forum|alt.badge.img+3

I’d like to make a processing screen that will allow me to add items to the grid of items to process.

I’m basically trying to make a grid that you can run processing on that I can add/delete items.  The only filter I have is at the top of the form that is a checkbox that changes the grid from “Show Posted”, “Show Unposted”.  The filter checkbox pulls data from a custom table, so it is a “real filter”  I want to be able to add items to the grid, and THEN process them.  I also want to be able to import items into the grid.

From all the things I can see, processing screens are designed to pull data for the grid that already exists in the system and are not editable.  I’ve tried a plethora of things to try to get the grid on my processing screen editable with no luck.

At this point, I created a Form/Grid screen and put “manual” processing buttons on it to process my grid items, but I want to be able to show the typical processing screen where it shows the Successful, Warnings, Failed etc.  I am at least able to show the long processing dialog that allows you to cancel the operation, but the normal processing screen is preferred.

Anyone know of a way?

 

Best answer by mariankharechko60

I had a similar task — implementing a processing screen for custom data handling in Acumatica.

After thorough investigation, I found that the PXProcessing attribute, commonly used for processing rows in a processing screen, is read-only. Therefore, it cannot be used like a typical PXSelect or SelectFrom view that allows inserts or updates.

Solution

The best approach is to reuse the same DAC and separate the functionality into two screens:

  1. Data Entry Screen – for importing or editing records. (MK101000 in my case)

  2. Processing Screen – for executing logic against the imported data. (MK505000 in my case)

public class CreateUserEntry : PXGraph<CreateUserEntry>
{
    public PXSave<CreateUserbyEmail> Save;

    [PXImport(typeof(CreateUserbyEmail))]
    public PXSelect<CreateUserbyEmail> Emails;
}

This screen allows users to import or manually enter email addresses for processing.

 

public class CreateUserProcessing : PXGraph<CreateUserProcessing>
{
    public PXCancel<CreateUserbyEmail> Cancel;
    public PXProcessing<CreateUserbyEmail> Emails;

    public CreateUserProcessing()
    {
        Emails.SetSelected<CreateUserbyEmail.selected>();
        Emails.SetProcessDelegate(Process);
    }

    public static void Process(CreateUserbyEmail entry)
    {
        if (entry == null || string.IsNullOrWhiteSpace(entry.Email))
            return;

        var graph = PXGraph.CreateInstance<CreateUserProcessing>();
        graph.CreateUser(entry);
    }

    private void CreateUser(CreateUserbyEmail entry)
    {
        // Implement your user creation logic here
    }
}
This screen uses the PXProcessing view to process the entries entered in the Data Entry screen.

Notes

  • Use [PXImport] in the entry graph to support Excel imports.

  • Use PXProcessing<T> only for processing (not editing).

  • This pattern follows Acumatica's intended architecture and provides a clean separation of concerns.

2 replies

mariankharechko60
Jr Varsity I

I had a similar task — implementing a processing screen for custom data handling in Acumatica.

After thorough investigation, I found that the PXProcessing attribute, commonly used for processing rows in a processing screen, is read-only. Therefore, it cannot be used like a typical PXSelect or SelectFrom view that allows inserts or updates.

Solution

The best approach is to reuse the same DAC and separate the functionality into two screens:

  1. Data Entry Screen – for importing or editing records. (MK101000 in my case)

  2. Processing Screen – for executing logic against the imported data. (MK505000 in my case)

public class CreateUserEntry : PXGraph<CreateUserEntry>
{
    public PXSave<CreateUserbyEmail> Save;

    [PXImport(typeof(CreateUserbyEmail))]
    public PXSelect<CreateUserbyEmail> Emails;
}

This screen allows users to import or manually enter email addresses for processing.

 

public class CreateUserProcessing : PXGraph<CreateUserProcessing>
{
    public PXCancel<CreateUserbyEmail> Cancel;
    public PXProcessing<CreateUserbyEmail> Emails;

    public CreateUserProcessing()
    {
        Emails.SetSelected<CreateUserbyEmail.selected>();
        Emails.SetProcessDelegate(Process);
    }

    public static void Process(CreateUserbyEmail entry)
    {
        if (entry == null || string.IsNullOrWhiteSpace(entry.Email))
            return;

        var graph = PXGraph.CreateInstance<CreateUserProcessing>();
        graph.CreateUser(entry);
    }

    private void CreateUser(CreateUserbyEmail entry)
    {
        // Implement your user creation logic here
    }
}
This screen uses the PXProcessing view to process the entries entered in the Data Entry screen.

Notes

  • Use [PXImport] in the entry graph to support Excel imports.

  • Use PXProcessing<T> only for processing (not editing).

  • This pattern follows Acumatica's intended architecture and provides a clean separation of concerns.


Joe Schmucker
Captain II
Forum|alt.badge.img+3
  • Author
  • Captain II
  • June 11, 2025

Hi ​@mariankharechko60 ,  Thank you for the detailed reply!  That is exactly what I ended up doing.  It actually was a better approach in the end.