I copied the code and pasted it into GetRow, but when I previewed it, it still didn’t display any data.
Job Entry is one that does not preview well, because it checks to see what the name of the menu you launched from was (Job Entry vs. Job Tracker - or Service Job Entry)
Instead of application studio preview, try in real job entry.
Thank You
It’s very difficult to retrieve and display the data.
As usual! It is Epicor ![]()
GabeFranco
Is there another way to retrieve and display Resource information in JobEntry?
The way i showed you works on my system (What version are you, I am 2025.1.15), it looked like you have everything in place correct.
Erp.BO.JobEntry / GetRows (Post)
foreach (var r in result.JobHead) {
string rg = "";
foreach (var jo in Db.JobOpDtl.Where(x => x.Company == r.Company && x.JobNum == r.JobNum)) {
string rgd = Db.ResourceGroup.FirstOrDefault(x => x.Company == r.Company && x.ResourceGrpID == jo.ResourceGrpID).Description;
if (!String.IsNullOrEmpty(rgd)) {
if (String.IsNullOrEmpty(rg)) {
rg = $"[{rgd}]";
} else {
rg += $", [{rgd}]";
}
}
}
r["ResourceGroupDesc"] = rg;
}
Now, check in F12 dev tools when you go to job entry from the menu,.
Here, I did not put it on the grid yet. But you showed earlier in your preview that you had put it on the grid, so you know how.
Put it on the grid, then publish your layer with the cloud.
Then, go to menu maintenance, find job entry, Copy to Current Company. and put your layer on job entry.
Now, finally reload the web page with Refresh Icon / F5 - then go to Job Entry from your modified menu item with the Customized Layer added.
I’m using version…

That’s strange, or maybe the program is faulty.
Please use this code to retrieve the Resource Group description from the JobHead table within the Data Directive method.
string company = this.Company;
foreach (var jobHeadRow in ttJobHead.Where(r =>
string.Equals(r.RowMod, IceRow.ROWSTATE_ADDED, StringComparison.OrdinalIgnoreCase) ||
string.Equals(r.RowMod, IceRow.ROWSTATE_UPDATED, StringComparison.OrdinalIgnoreCase)))
{
var jobOpDtlRow = Db.JobOpDtl.FirstOrDefault(r =>string.Equals(r.Company, company, StringComparison.OrdinalIgnoreCase) && r.PONum == jobHeadRow.PONum);
if (jobOpDtlRow != null)
{
var resourceGroup = Db.ResourceGroup.FirstOrDefault(r =>string.Equals(r.Company, company, StringComparison.OrdinalIgnoreCase) &&
r.ResourceGrpID == jobOpDtlRow.ResourceGrpID);
if (resourceGroup != null)
{
jobHeadRow.ResourceDesc_c = resourceGroup.Description;
}
}
}
Change the table as per your requirement.
I do not understand
string Company = callContextClient.CurrentCompany;
string JobNum = "";
var jobHead = ds.JobHead.Where(r => r.RowMod == "A" || r.RowMod == "U").FirstOrDefault();
Company = jobHead.Company;
JobNum = jobHead.JobNum;
var jobOpr = Db.JobOpDtl.Where(r => r.Company == Company && r.JobNum == JobNum).FirstOrDefault();
if (jobOpr == null)
{
InfoMessage.Publish("No Job Operation found for Job: " + JobNum);
return;
}
var resourceGroup = Db.ResourceGroup.Where(r => r.Company == Company && r.ResourceGrpID == jobOpr.ResourceGrpID).FirstOrDefault();
//InfoMessage.Publish("Resource Group Description: " + resourceGroup.Description);
jobHead.ResourceGroupDesc = resourceGroup.Description;
“Use this code in a Method Directive. In Maintenance, select Erp.BO.JobEntry.Update and apply the following code.
-
Identify the field where you need to display the description (for example, the JobHead Description field).
-
If you need the description from the Resource Group, use the following field:
resourceGroup.Description
This field returns the description from the ResourceGroup table.
-
To store this description in the JobHead table, use the custom field:
jobHeadRow.ResourceDesc_c
-
Assign the value as shown below:
jobHeadRow.ResourceDesc_c = resourceGroup.Description; -
You can change or map this value to any other required JobHead field based on your business requirement.
Regards,
Aman Khan
Mo: +91 7510019357
Epicor Technical Consultant










