Extended UD Table Maintenance - How's it Work?

I’m curious as to how the UD fields I make in, for example, “QuoteHed_UD” appear in the “QuoteHed” table when looking in BAQ designer. How are these 2 tables linked together? Why can’t I find the QuoteHed_UD table inside BAQ designer? Are _UD tables actually real tables or is there some kind of wizardry taking place?

If I make a new table without selecting an existing table to work with, would it then appear in BAQ designer? I’d test it but our test server is in the process of being updated and I don’t want to have to regenerate the database during work hours.

Just looking to expand my Epicor knowledge, thank you!

Your UD fields should already be available within the QuoteHed table in your BAQ designer… is it not the case ?

EDIT: But I see your point. I too sometimes see that _UD table box showing in the wild when I open a BAQ made some time ago… When I try to edit and save it gives me errors…or maybe because I deleted them ? :roll_eyes: (is this a bug or a new feature? I see this happening since 10.2 upgrade… the view of _UD table box…)

Pierre

If you look in the SQL database, you’ll see that they exist as two separate tables.

Assuming you’ve done the Data Model Regeneration steps, the UD fields should appear as fields in the original table. They’ll be at the end.

Here’s the avaialable fields for my OrderHed table:
image

When creating a new Extended UD table, you must select an existing table.

P.S. One thing that is confusing, is that the Table Name... search button will only let you select an existing UD table. It’s not for searching for the original table to extend. The steps for making a table are:

  1. Open Extended UD Table Maint
  2. Select File -> New -> New Table
  3. In the search window that pops up, select the table to extend
  4. Now you can add UD fields using File -> New -> New Column
1 Like

No, the fields appear fine in BAQ designer. Just not where I would expect them to. If I’m creating a UD table and adding columns to it, I would expect to find the UD table in BAQ designer… but I don’t. I see these UD fields are on the QuoteHed table, not QuoteHed_UD.

There must be some kind of Child/Parent relationship at play here.

I see!

So not only is there a separate table, with the UD fields, but it adds the UD fields to the original table and links it all up for you? Now that’s cool.

There is… open both of your table in SSRS and see the ForeignSysRowID in the UD table
It corresponds to the SysRowID of the original table

1 Like

It just had me confused because when I write out a code to change a UD field I’m usually referencing the original table and not the UD table. See example:

EpiDataView qq = (EpiDataView)oTrans.EpiDataViews["QuoteQty"];

qq.dataView[qq.Row].BeginEdit();
qq.dataView[qq.Row]["QtBurden_c"] = QtBurden;
qq.dataView[qq.Row].EndEdit(); 

So it would still work if I changed the EpiDataView to look at QuoteQty_UD?

The are separate tables in the DB, but the system does “link” them automatically.

In a customization’s control’s binding. you’d see the UD fields under the original table too.

One last note…

If your UD field’s name begins with the name of a UD field from prior versions (like “Number”, “Character”, “Checkbox”, etc …), it won’t get the “_c” suffix added.

But if you make a UD filed with one of those “reserved” names, and with a number that exceeds the prior versions max UD field (like “Checkbox20”), you’ll have problems. “Checkbox01” would be fine, “Checkbox21” would not.

and FWIW, if you get to name the column, make it something more readable than just the data type.

1 Like

Awesome! You’re the man. Thank you for laying it out for me. Learn something new everyday. I did notice reserved names didn’t get appended with _c, I did not know that if I used a reserved name with a number that exceeds the reserved name numbers that I’d run into issues. So I appreciate the heads up before I run into problems lol.

I always name my columns if I can. I hate having to dig through old columns wondering what the hell shortchar05 is used for lol.

Thanks again, much appreciated!