Источник:
http://dev.goshoom.net/en/2014/09/re...ps-in-ax-2012/
==============
AX 2012 introduced a new type of form control called “Replacement group”. It’s very handy, nevertheless quite a few developers still don’t know about it or are not sure how to use it effectively.
This post is not going to details; the intention is rather to show something simple, though still from end to end.
Let’s say that we want to create a form showing released products. We create a form with
InventTable as the data source and with a grid.
We’re especially interested in the
Product field, so we drag it from the data source and drop it to the grid.
Notice that the type of the control is
ReferenceGroup – we’ll talk about it very soon.
Without changing anything, we can run the form; it successfully displays product numbers:
Let’s say that users insist on working with product names instead of product codes. Maybe they should have used a better convention for product codes, but that’s another topic. Now we have meet the request.
What should we do? Providing an edit method that would display names and find IDs from names specified by users? No, it’s much simpler with reference groups. Open properties of the reference group and change the value of
ReplacementFieldGroup property from
AutoIdentification to
ProductInformation:
Save the form and open it again – it now shows product names. It’s that simple!
If the product was editable (which is not normally the case in
InventTable), you would also get a lookup and would be able to select (or type) product names:
You could also override the lookup, if you don’t like the default one.
Now we should look more closely at how it works.
First of all, look at the
Product field in
InventTable. Its base type is
Int64 and extended data type is
EcoResProductRecId. Properties of the EDT shows that
ReferenceTable = EcoResProduct, therefore the
Product field contains record IDs of
EcoResProduct table.
If we used the
Int64Edit control to display the
Product field, we would see just numbers, which wouldn’t be very useful.
That’s why we have
Reference group controls. The reference group in our form is bound to the
Product field (set in
ReferenceField property), so that’s what gets saved to database. But we don’t display it to users – instead of that, we use a replacement field group. Field groups are defined on tables in AOT – here we can see the groups of
InventTable that we used in our example:
AX looks at the field (or even fields) contained in the field group and displays them instead of the record ID. If you change a value of the replacement field, AX finds the corresponding
RecId and put it to the underlying field.
As you can see, reference groups allow you to change fields displayed to users by a simple property change. Also notice that it has zero effect to data stored in database – it still refers to a record ID.
There is one last thing I would like to mention, because it often confuses people. You may have a reference group for a worker showing the worker name (e.g. the
Sales responsible person in
Sales order form). The control uses the
AutoIdentification field group of the
HcmWorker table. The group contains a single field,
Person, which is a
RecId of
DirPerson table.
AutoIdentification group on
DirPerson is empty, so where the name comes from? The trick is that
DirPerson table inherits from
DirPartyTable, which contains the
Name field in its
AutoIdentification group. AX deals with all this complexity for you.
Источник:
http://dev.goshoom.net/en/2014/09/re...ps-in-ax-2012/