PartRev custom field to show up on Engineering Workbench

I’m trying to get a custom checkbox from PartRev to show up on Engineering Workbench Method of Mfg > Operations > Detail.

It allows me to link it to the PartRev, however if I check that box on the part revision tab it does not reflect that change inside Engineering Workbench even though it’s the same PartRev.

I did find a couple of other tables that have the custom field on them AltMethod and ECORev, and just to try I attempted to link to those but it still doesn’t link.

Is there some trick to get it to link properly?

There are two tables:

  1. PartRev - this holds the partrev data after the part is checked in from the Engineering Workbench
  2. ECORev - this hold the partrev data while it is checked out to the Engineering Workbench
    These two data tables are separate but equal. Normally, any changes that you make while it is in the EWB are moved to PartRev during check-in.

BUT, in the case of UD FIelds, you must MAP the fields to each other. There is a very special program just for doing this mapping called UD Column Map (or User Defined Column Map Maintenance)… This allows you to specify which UD Fields get mapped to which… note that the UD Fields do NOT have to have the same exact names.
You also must map both directions (Note Target and Source table fields). You map what gets pushed TO the ECORev, and what gets pushed to PartRev.
There are many maps here… pushing data from Partmtl, PartRev, PartOpr, QuoteMtl, JobMtl, etc etc etc.

3 Likes

Thank you! That’s the piece of info I was missing.

1 Like

For EWB->Operations you will have to use the table ECOOpr or ECORev depending on your use case. And then you will have to define Extended Field Map to map the field from ECOOpr to PartOpr or ECORev to PartRev.

Records from ECO tables move to PartRev etc after approval in the EWB.

Vinay Kamboj

Just curious, can this be used to map let’s say, a OrderHead UD field to an InvoiceHead UD field? Is this just for a limited number of tables?

the field mapping is only for engineering type functions where you “get details” or Check-in/check-out… so it is for the following table sets:
Quote???, Job???, Part???, and ECO???
where the last portion of the table name is like the following examples:
???Mtl, ???Opr, ???Rev, ???Assy,

This allows you to give the translation for how Quote Details will be pulled into a Job, or into the EWB, and vise versa

1 Like

This is awesome.

What I think this means is the following Data Directive is not needed. I just need to map the Part Information to the Job.

foreach (var job in ttJobAsmbl.Where(ttJobAsmbl_Row =>
  ttJobAsmbl_Row.Added() || ttJobAsmbl_Row.Updated()))
  
{
  var PartRev = Db.PartRev.Where(PartRev_Row => PartRev_Row.Company == job.Company
                  && PartRev_Row.PartNum == job.PartNum 
                  && PartRev_Row.RevisionNum == job.RevisionNum).FirstOrDefault();

  if (PartRev != null)
  {
    job.BuildInstructRev_c = PartRev.ShortChar01;       /* Build Instruction Revision */
    job.FirmwareRev_c = PartRev.ShortChar02;       /* Firmware Package Revision */
    job.FinalTestRev_c = PartRev.ShortChar03;       /* Final Test Revision */
    job.ImageID_c = PartRev.ShortChar04;       /* Image ID */
    job.Deviation_c = PartRev.ShortChar05;       /* Deviation */
    job.BurnIn_c = PartRev.BurnIn_c;
    /* job.ShortChar19 = "New Job Row was Updated by Data Directive";              Flag indicating the record has been updated */    
  }
}
1 Like

CORRECT (I just corrected this post)… you are correctly relating PartRev to JobAssy, which DOES have a map.
You are limited to the pre-defined maps that are in this combo box… there are 74 maps.
image

BUT… in my never ending quest to make code more readable, and more efficient, i have taken the opportunity to tweak your C# block… Changes made:

  1. simplifed Lambda queries (less wordy)
  2. added .Select to PartRev query so that it only selects needed data (eliminating extra record data)
  3. removed the comments since the code is self documenting.
  4. renamed the “job” variable to ttJAsmbl so that you know you are touching job assembly.

(In reality it is only change 2 that makes any real performance difference in this BPM).

foreach (var ttJAsmbl in ttJobAsmbl.Where(j => j.Added() || j.Updated())) {
    var PartRev = Db.PartRev.Where(p =>
        p.Company == ttJAsmbl.Company &&
        p.PartNum == ttJAsmbl.PartNum &&
        p.RevisionNum == ttJAsmbl.RevisionNum).Select(p =>
        new { p.ShortChar01, p.ShortChar02, p.ShortChar03, p.ShortChar04, p.ShortChar05, p.BurnIn_c }).FirstOrDefault();

    if (PartRev != null) {
        ttJAsmbl.BuildInstructRev_c = PartRev.ShortChar01;
        ttJAsmbl.FirmwareRev_c = PartRev.ShortChar02;
        ttJAsmbl.FinalTestRev_c = PartRev.ShortChar03;
        ttJAsmbl.ImageID_c = PartRev.ShortChar04;
        ttJAsmbl.Deviation_c = PartRev.ShortChar05;
        ttJAsmbl.BurnIn_c = PartRev.BurnIn_c;
    }
}
2 Likes

Thanks for the rewrite. That helps for future queries.

I made the UD Column Map change and everything worked as expected!!!

1 Like

Funny… This shows the power of Forums like this… You were not the Original poster nor was this the original question, Nor were you directly trying to fix this… BUT, you saw the post, realized that you could benefit, and as a result, you have a better solution than before.

Let me add one more person that this has helped. Got here because when creating a UD Field for the ECOOpr table, the field wasn’t even showing up in any lists to be bound on forms (such as Method Tracker). Once we enabled the maps, the field showed up for binding. Thanks @timshuwy, you are still one of my favorite “Epicor” people. :+1: