Interview Questions:
1.
Difference between following
condel
:- Use condel to delete one or more
items from a container.
confind
:- Use confind to locate a sequence of items in a container.
conins
:- Use conins to insert some items into
a container.
conlen
:- Use conlen to find out how many
items there are in a container.
connull
:- Use connull to explicitly dispose of
the contents of a container.
conpeek
:- Use conpeek to extract an item from a container, and to convert it into
another data type
conpoke
:- Use conpoke to replace (poke) an item in a container.
2.
Difference between edit and display method
Display Indicates that
the method's return value is to be displayed on a form or a report.
The
value cannot be altered in the form or report
Edit Indicates that the
method's return type is to be used to provide information for a field that is
used in in a form. The value in
the field can be edited.
3.
Difference between perspectives and table
collection
Perspectives can organize information
for a report model in the Application Object Tree (AOT).
A
perspective is a collection of tables. You use a report model to create
reports.
Table
collection is
a collection of table, which sharing across all the virtual companies.
4.
What are the 4 types of files we need to copy to
the standard folder?
*.aod
- application object data file
*.ahd -
Application Online Help Data file
*.ald - Application
Label data file.
*.add - Application Developer Documentation Data
file
*.khd -
Kernel Online Help Data
And
other files are
*.ahi -
Application Online Help Index files
*.adi - Application Developer Documentation Index
files
*.ali - Application
Label Index files
*.alt -
Application Label Temporary file.
*.alc
- Application Label Cache file
*. aoi - Application Object Index file
*.khd -
Kernel Online Help Data
*.khi -
Kernel Online Help Index files
5.
Why we use virtual companies?
Virtual
company accounts contain data in certain tables that are shared by any number
of company accounts. This allows users to post information in one company that
will be available to another company.
6.
How can we restrict a class to be further
extended?
using
Final Keyword for ex: public final class <ClassName>
7.
Which classes are used for data import export?
SysDataImport
and SysDataExport
8.
From which table u can get the user
permissions stored in Ax?
AccessRightList table.
9.
What should we do if we need last record to be
active when a form is opened?
In properties of datasource table set
the StartPosition property as last.
10. What is the
sequence of events while a report is generated?
Init, Run, Prompt, Fetch, send,Print
11. Name
few X++ classes/Coreclasses related to Queries?
Query, QueryRun, QueryBuildRange, QueryBuildDataSource, QueryBuildLink
Query, QueryRun, QueryBuildRange, QueryBuildDataSource, QueryBuildLink
12. What
is an index?
An
index is a table-specific database structure that speeds the retrieval of rows
from the table. Indexes are used to improve the performance of data retrieval
and sometimes to ensure the existence of unique records.
13. Define IntelliMorph
IntelliMorph is
the technology that controls the user interface in Microsoft Dynamics AX. The
user interface is how
the functionality of the application is presented or displayed to the user.
IntelliMorph
controls the layout of the user interface and makes it easier to modify forms,
reports, and menus.
14. Define MorphX
The
MorphX Development Suite is the integrated development environment (IDE) in
Microsoft Dynamics AX used to develop and customize both the Windows interface
and the Web interface.
15. Define X++
X++
is the object-oriented programming language that is used in the MorphX
environment .
16. Differentiate
refresh(),reread(),research(),executequery()
refresh() will not reread the record from the database. It
basically just refreshes the screen with whatever is stored in the form
cache.
reread() will only re-read the CURRENT record from the DB so you should not use it to refresh the form data if you have added/removed records. It's often used if you change some values in the current record in some code, and commit them to the database using .update() on the table, instead of through the form datasource. In this case .reread() will make those changes appear on the form.
research() will rerun the existing form query against the data source, therefore updating the list with new/removed records as well as updating existing ones. This will honour any existing filters and sorting on the form.
executeQuery() is another useful one. It should be used if you have modified the query in your code and need to refresh the form. It's like
research() except it takes query changes into account.
reread() will only re-read the CURRENT record from the DB so you should not use it to refresh the form data if you have added/removed records. It's often used if you change some values in the current record in some code, and commit them to the database using .update() on the table, instead of through the form datasource. In this case .reread() will make those changes appear on the form.
research() will rerun the existing form query against the data source, therefore updating the list with new/removed records as well as updating existing ones. This will honour any existing filters and sorting on the form.
executeQuery() is another useful one. It should be used if you have modified the query in your code and need to refresh the form. It's like
research() except it takes query changes into account.
17. Define AOT
The
Application Object Tree (AOT) is a tree view of all the application objects
within Microsoft Dynamics AX. The AOT contains everything you need to customize
the look and functionality of a Microsoft Dynamics AX application
18. Define AOS
The
Microsoft Dynamics AX Object Server (AOS) is the second-tier application server
in the Microsoft Dynamics AX three-tier architecture.
The
3-tier environment is divided as follows:
• First
Tier – Intelligent Client • Second Tier – AOS • Third
Tier – Database Server
In
a 3-tier solution the database runs on a server as the third tier; the AOS
handles the business logic in the second tier. The thin client is the first
tier and handles the user interface and necessary program logic.
19. Difference between temp table and container.
1.
Data in containers are stored and retrieved sequentially, but a temporary table
enables you to define indexes to speed up data retrieval.
2. Containers
provide slower data access if you are working with many records. However, if
you are working with only a few records, use a container.
3.
Another important difference between temporary tables and containers is how
they are used in method calls. When you pass a temporary table into a method
call, it is passed by reference. Containers are passed by value. When a
variable is passed by reference, only a pointer to the object is passed into
the method. When a variable is passed by value, a new copy of the variable is
passed into the method. If the computer has a limited amount of memory, it
might start swapping memory to disk, slowing down application execution. When
you pass a variable into a method, a temporary table may provide better
performance than a container
20. .What
is an EDT, Base Enum, how can we use array elements of an EDT?
EDT - To reuse its properties.
The properties of many fields can change at one time by changing the properties
on the EDT. Relations can be assigned to an edt are known as Dynamic relations.
EDT relations are Normal
and Related field fixed.
Why not field fixed –
field fixed works on only between two tables 1- 1 relation. And Related field
fixed works on 1- many tables.so edt uses related field fixed.
BaseEnum - which is a list of literals.
Enum values are represented internally as integers. you can declare up to 251
(0 to 250) literals in a single enum type. To reference an enum in X++, use the
name of the enum, followed by the name of the literal, separated by two colons .
ex -
NoYes::No
.
21. Definition and use of Maps, how AddressMap
(with methods) is used in standard AX?
Maps define X++ elements that wrap table
objects at run time. With a map, you associate a map field with a field in one
or more tables. This enables you to use the same field name to access fields
with different names in different tables. Map methods enable to you to create
or modify methods that act on the map fields.
Address map that contains an Address field.
The Address map field is used to access both the Address field in the CustTable
table and the ToAddress field in the CustVendTransportPointLine table
22. What
is the difference between Index and Index hint?
Adding
the "index" statement to an Axapta select, it does NOT mean that this
index will be used by
the
database. What it DOES mean is that Axapta will send an "order by" to
the database. Adding the "index hint" statement to an Axapta select,
it DOES mean that this index will be used by the database (and no other one).
23. How
many types of data validation methods are written on table level?
validateField(),validateWrite(),validateDelete(),aosvalidateDelete(),aosvalidateInsert(),
aosvalidateRead(),aosvalidateUpdate().
24. How
many types of relations are available in Axapta, Explain each of them.
Normal Relation: enforce referential integrity such as foreign keys.
For displaying lookup on the child table.
Field fixed:
works as a trigger to verify that
a relation is active, if an enum field in the table has a specific value then
the relation is active. It works on conditional relations and works on enum
type of data.
Ex-
Dimension table
Related field fixed:
works as a filter on the related table.it only shows records that match
the specified value for an enum field on the related table.
25. When
the recid is generated, what is its utility?
when the record is entered in the
table the recid is generated by the kernel.it is unique for each table.
26. Difference
between Primary & Cluster index.
Primary index: It works
on unique indexes. The data should be unique and not null. Retrieve data from
the database.
Clustered Index: It works
on unique and non unique indexes.retrieve data from the AOS.
The advantages of
having a cluster index are as follows:
·
Search results are quicker when
records are retrieved by the cluster index, especially if records are retrieved
sequentially along the index.
·
Other indexes that use fields
that are a part of the cluster index might use less data space.
·
Fewer files in the database;
data is clustered in the same file as the clustering index. This reduces the
space used on the disk and in the cache.
The disadvantages
of having a cluster index are as follows:
·
It takes longer to update
records (but only when the fields in the clustering index are changed).
·
More data space might be used
for other indexes that use fields that are not part of the cluster index if the
clustering index is wider than approximately 20 characters).
27. How many kind of lookups can be made
and how.
By using table relations
Using
EDT relations.
Using
morphx and using X++ code(Syslookup
class).
28. How
many types of Delete Actions are there in Standard Ax and define the use of
each
None
Cascade
Restricted
Cascade+Restricted.
29. If
any record is created in table I want to fetch the date & time stamp, how
will you do that?
30. What
is the function of super()
This
method calls the system methods to execute.
It is used to instantiating the
variables at the parent class. Used for code redundancy.
31. Utility
and use of find method.
All the tables should have at least one find method
that selects and returns one record from the table that matches the unique
index specified by the input parameters. The last input parameter in a find
method should be a Boolean variable called for update or update that is
defaulted to false. When it is set to true, the caller object can update the
record that is returned by the find method.
32. What are the different types of Table groups
defined on table properties?
Miscellaneous
Parameter
Group
Main
Transaction
WorkSheetHeader
WorkSheetLine
33. Multiple
inheritance possible or not, if not how can we overcome that.
In X++, a new class can only extend one
other class; multiple inheritance is not supported. If you extend a class, it
inherits all the methods and variables in the parent class (the superclass).
We can use Interfaces
instead of multiple inheritance in Ax.
34. Do
we need to write main method, give reasons
Yes, but to open the class
from action menu item we have to create main method of class.
35. What is difference between new & construct
method
new(): used to create a memory to the
object.
Construct():
You should create a static construct
method for each class. The method should return an instance of the class.
36. What is the utility of the RunOn property
Application objects such as reports,
tables, and methods can run on the application object server (AOS) or the
client. An object can also have the
RunOn
property value
set to Called from
. Objects set to Called from
can run from either the
client or server, depending on where the object is called from. This topic
describes the RunOn
property, tiers that class objects can run on, and hints about
using AOSRunMode.
Default value of RunOn for Classes - Called
from
MenuItems - Client
37.What
is main class used in batch process OR which class will you inherit to make a
batch job
RunBaseBatch
class
38. How
can we make a batch job occur at regular interval - Using RunbaseBatch
39. What
is the main utility of classes in standard Ax
- For business logic
40. Which
class is called when we create a SO/PO.
SalesFormLetter and PurchFormLetter
41. What
is the basic structure of a form
Methods,DataSources,Design.
42. Properties
of a form datasource
Name, Table, Index, AllowCheck, AllowEdit, AllowCreate, AllowDelete, StartPosition, JoinSource, LinkType.
43. validateWrite() method can be written in form
datasource as well as table level, when should we write it in form DS and when
in table. Similar in case of write() method
when we want the validation at the table level means in every form where
this table is uses, we can write at the table level.
If we want validations at the particular form and it doesn’t effect to
the other forms where this table was used, then we can use form level
validations.
44. How can we call table level methods from form
DS (similar methods)
By creating the variable to the table and with
tablevariable.methodname()
45. What
is the difference between form init() & DS init()
Form init(): init is activated immediately after new and
creates the run-time image of the form.
DS init(): Creates a data
source query based on the data source properties.
The form data source init method
creates the query to fetch data from the database and sets up links if the form
is linked to another form.
46. When
a form opens what are the sequential methods called.
Form init(), DataSource init(), Form run(), DataSource executeQuery(),
canClose(), close().
47. Where
is the best place to write code to perform filter in a form
FormDataSource - executeQuery()
and call this method in the design field of the form.
48. What
are the different types of menu items available, explain each of them
Display – for Form
Output - for Report
Action - for classes.
49. Action type menu item is attached to a form
but in the drop down the menu item is not appearing, what could be the
problem .
50. Difference
between pass by reference and pass by value?
Pass By Reference:
In Pass by reference address of the variable is passed to a function. Whatever changes made to the formal parameter will affect to the actual parameters
- Same memory location is used for both variables.(Formal and Actual)-
- it is useful when you required to return more than 1 values
Pass By Value:
- In this method value of the variable is passed. Changes made to formal will not affect the actual parameters.
- Different memory locations will be created for both variables.
- Here there will be temporary variable created in the function stack which does not affect the original variable.
In Pass by reference address of the variable is passed to a function. Whatever changes made to the formal parameter will affect to the actual parameters
- Same memory location is used for both variables.(Formal and Actual)-
- it is useful when you required to return more than 1 values
Pass By Value:
- In this method value of the variable is passed. Changes made to formal will not affect the actual parameters.
- Different memory locations will be created for both variables.
- Here there will be temporary variable created in the function stack which does not affect the original variable.
In case of pass by value, the change
in the sub-function will not cause any change in the main function whereas in
pass by reference the change in the sub-function will change the value in the
main function.
Pass by value sends a COPY of the data stored in the variable you
specify, pass by reference sends a direct link to the variable itself. So if
you pass a variable by reference and then change the variable inside the block
you passed it into, the original variable will be changed. If you simply pass
by value, the original variable will not be able to be changed by the block you
passed it into but you will get a copy of whatever it contained at the time of
the call.
51. What are the two most important methods on the
Report?
Init(),run(),fetch(),send(),print()
52. When
do block the super() method of fetch
Don't call
super()
when overriding
the fetch
method in a report
53. Can we make a report from wizard, if yes from
where
Yes, Tools>DevelopmentTools>Wizards>Report
Wizard
59. What is a Programmable Section, how we use it in reports
Use programmable sections to add any kind
of customized information. To activate a programmable section, activate it
explicitly with an
element.execute(
Number)
statement. The Number
must be specified in the ControlNumber property for the design section. 60. What is the difference between Auto Design Spec & Generated Design
Auto Design:
An auto design is a report design that has a layout
that is automatically generated based on the data for the report. You can use
auto designs for most common reports. Reusability is available.
This uses Report template and Section
template. Header ,Section Group and Footer is not available.
Generate Design or Precision
design: You can create a precision design for a report
that requires a very precise layout. It doesn’t use Section template and Report
template. Reusability is not available.
61. How can we sort the DS, what facility we can get in by placing fields in Ranges
this.query().datasource(1).addsortfield(fieldnum(tablename,fieldname),sorting:ascending);
62. What is the role of executeSection
You can override the
executeSection
method for a report section to modify the layout of the section and
to modify how the section is printed. If you want to do something before a
section is printed, such as go to the next page, this can be coded in the executeSection
method.63. What are Queries, how do we use them
You can create a query to retrieve data by
using the query classes.
64. what is Composite query?
A composite query uses another query as its
data source. A composite query is similar to class inheritance in X++ or C#. A
composite query is a good design choice when one of the following is true:
An existing query lacks only a range that
you want to add. An existing query lacks only a method override that you want
to add.
65. What is the use of Parameter, Enum Type Parameter/Enum Parameter properties of MenuItems?
Parameters: Specify the
arguments that are passed to the object. Optional.
Enum TypeParameter and Enum Parameter: Choose an enumerated
type as a parameter for the Object, and then select an enum value as the
EnumParameter
property. Optional.
These properties
are typically used when one form is used in several different situations. You
can change the behavior of the form, depending on the
EnumParameter
value. For example, the PriceDiscGroup form is used by three
different display menu items (PriceDiscGroup_*), which each have a different
EnumParameter value. In the form's init
method, a switch
construct checks the value, and then the form is created accordingly. 66. Why do we provide Configuration key & Security Key?
Configuration key: Configuration keys allow administrators to enable or disable
features in the application for all users. Disabling features helps to minimize
the attack surface against potential attacks.
Configuration keys
are applied to:
·
Tables
·
Fields
·
Indexes
·
Views
·
Menus
·
Menu items
·
Form controls,
·
Report controls
·
Extended data types
·
Enumerations
Security key: Security
keys allow administrators to set security on a user group level. Minimizing
access on a user group level helps to reduce the attack surface against
potential attacks.
The main reasons to apply user-level
security are to:
Allow users to do only their designated
tasks.
Protect sensitive data in the database.
Prevent users from inadvertently breaking
an application by changing code or objects on which the application depends.
You need to apply a security key to:
·
Tables
·
Views
·
Menus
·
Menu items
·
Form controls
·
Report controls
67. Normally what do we attach in Output - Forms
68. Normally what do we attach in Action - Classes
69. What is difference
between select & select firstonly statements
The
select
statement
fetches or manipulates data from the database or both fetches and manipulates
data from the database. Results of a select
statement are
returned in a table buffer variable.
If you are going to use only the first
record or if only one record can be found, use the
firstOnly
qualifier. This optimizes the select
statement for only one record. Do not use while select firstOnly
.
70. What are the keywords used to access
data from "multiple companies" and "one company to another
company".
A cross-company query returns data for
several companies in a single run.
To create a cross-company query:
In X++, use the crossCompany
keyword on the X++ select statement.
In X++, set the
allowCrossCompany
property method to true
on an instance of the Query
class.
In the AOT, set the AllowCrossCompany
property to Yes on a node under Query.
71. How can we override a lookup
AOT>Form>DatasSource>Fields>FieldName
>Lookup
Form>Design>Field>Lookup.
72. How do the following methods work in a
form DS.
ds.refresh(), ds.research(), ds.reread(), in what situation we should use these methods
ds.refresh(), ds.research(), ds.reread(), in what situation we should use these methods
Refresh(): Updates the form by
refreshing the view of all records in the data source.
Research(): Rereads the current
record from the database.
Reread(): Refreshes the
database search defined by the query, specified by the
FormDataSource.init
method.73. On closing a form name the methods which are invoked
Close(), closed(), finalise().
74. How can we provide user level/user group level security - By using security keys.
74. How can we provide user level/user group level security - By using security keys.
75. What is Visual MorphXplorer, what do we
do with that?(Reverse engineering tool has replaced Visual
MorphXplorer)
76. What is the function of Application
Hierarchy Tree?
Displays the current object's inheritance
hierarchy.
The Application Hierarchy Tree enables you
to view information about the parents and children of application objects. For
example, you can see all the classes that extend a particular class, or see
which data types a particular extended data type inherits from. It also enables
you to view the methods, fields, and indexes that are used by tables.
Information is available for application and system classes, tables, and data
types.
To view information for a single
application object
Right-click the object, and then select Add-Ins > Application Hierarchy Tree.
To view
information for all application objects
Select Tools > Development tools > Application Hierarchy Tree.
You need to
generate cross-references before you can use the Application Hierarchy Tree.
Tables are listed
under the Common node in the Application Hierarchy Tree.
All tables extend the system table called Common. Classes are listed under the
Object node.
77. If you want to monitor the database activity,
where can you get that?
Administration>Reports>DataBase
information
Administration>inquiries>
DataBase information
Administration>Reports>Size
of Company accounts
78. Where can we find the Label log and what
is its utility?
Tools>DevelopmentTools>Label>Label log.
Use this form to view the history of labels
within the system and re-create labels that have been deleted.
View
a record of all changes made to the label files.
Overview Each label is
described in terms of its identification (ID), language, status, label text,
and by whom and when it was modified. A label can also contain a description,
which is displayed at the bottom of the form.
General View information about
the selected label.
Button
Recreate Re-create
the selected label.
79. What is Label Intervals?
The SysLabelInterval table contains the
settings that control the interval of label IDs that are used to create new
labels through the label editor in MorphX.
80. What are the tools you will use to upgrade any object? - Compare
81. What is the use of System Documentation/Application Developer Documentation/Application Documentation
System Documentation is intended for developers under
the functions subnode there are hundreds of useful functions you will use when
programming in x++.
Application Developer Documentation, under this node
you find documentation about tables and
classes used by Ax. description
about tables and classes for developers.
82. What are the classes, Tables, Forms and
Methods used to post the sales orders.
SalesTableType and
SaleslineType classes will get called while creating the orders.
SalesFormLetter*
classes will be used to post the sales order at various document
status(packing, invoice etc).
SalesParm* tables
are used to prepare the data for posting
CustConfirmJour,
CustConfirmTrans - when a sales order gets confirmed
CustPackingSlipJour,
CustPackingSlipTrans - when a packing slip is posted.
CustInvoiceTable,CustInvoiceTrans
- when an invoice is posted.
These are some of
the maily used tables.
83. What are the classes, Tables, Forms and Methods used to post the purchase orders.
84. What are the classes, Tables, Forms and Methods used to post the Ledgers.
85. What are the classes, Tables, Forms and Methods used to post the Inventory.
86. What is the base class to send the on-boad E-mailing.
SysMailer and
SysINetMail.
87. What are the storage Dimensions?
87. What are the storage Dimensions?
Site,WareHouse,PalletId,BatchNumber,SerialNumber
88. What are the Item Dimensions?
88. What are the Item Dimensions?
Configuration, size,Color
89. What is the difference between RunBase and RunBaseBatch?
89. What is the difference between RunBase and RunBaseBatch?
RunBase: To
create a job or an Action class - a program that carries out processes, such as
accepting parameters from the user and then updating records in the database -
you use the RunBase framework.
The framework is
implemented by the
RunBase
application class and supplies many features, which include the
following:
·
Query
·
Dialog, with persistence of the
last values entered by the user
·
Validate
The
RunBase
class is a framework for classes that need a dialog for user interaction and
that need the dialog values to be saved per user.
RunBaseBatch: You can design your
own batch job by extending the
RunBaseBatch
class. You can also write
code to schedule the batch to run. The batch runs on the Application Object
Server (AOS) 91. What is the difference between Insert and doinsert.
Insert(): To
insert the records into the database.
Secure any related transactions with
tts
.
Doinsert():These methods should only be used under strict control because they
bypass the following:
Any validations
that have been set up.
Any code that was
written in the
insert
, update
, and delete
methods. 92. What is the Runbase Stack?
93. Difference between sql and x++ statement--
SELECT-
1.Table buffer on the FROM in x++ clause ,not the table as in SQL
2.ORDER BY clause precedes the WHERE clause
3.! for negation ,not NOT as in SQL
4.&& and || for logical operator ,not AND or OR as in SQL.
5.* and ? for like wildcards ,not % and _ as in SQL.
JOIN CLAUSE-
1.Join
clause has no ON keyword in x++,use WHERE instead
2.Default JOIN direction is left .
3.there are no LEFT and RIGHT keyword for JOIN in x++
4.The FROM clause is optional when:
-No column is listed or
-Only one table is listed in the SELECT in x++
select * FROM CustTable;
select CustTable; both are same.
OTHERS-
1.The WHILE SELECT statement provides an automatic cursor for return rows in x++
2.There is no HAVING keyword in x++
3.No null values are return in x++
2.Default JOIN direction is left .
3.there are no LEFT and RIGHT keyword for JOIN in x++
4.The FROM clause is optional when:
-No column is listed or
-Only one table is listed in the SELECT in x++
select * FROM CustTable;
select CustTable; both are same.
OTHERS-
1.The WHILE SELECT statement provides an automatic cursor for return rows in x++
2.There is no HAVING keyword in x++
3.No null values are return in x++
94. What is cluster installation?
Admin - Setup - Cluster Configuration
Click System administration > Setup > System > Cluster configuration.
Click System administration > Setup > System > Cluster configuration.
You can distribute
the user load in Microsoft Dynamics AX across multiple instances of Application
Object Server (AOS) by creating a load balancing cluster.
95. Steps in creating number sequence?
95. Steps in creating number sequence?
Basic>Setup>NumberSequences> NumberSequences –
Create a new number sequence.
Classes>NumberSequenceReference>LoadModule.
AR>Setup>parameters -
setup code.
Tables>CustParameters
- create method starts with numRefEDT.
Form>FormRun -
Create numberSequenceFormHandler method.
Form>FormDataSource
- Override create method.
96. Any module you are good at. – AR,AP,Inventory,Production.
97. Collection classes
96. Any module you are good at. – AR,AP,Inventory,Production.
97. Collection classes
You cannot store
objects in arrays or containers. The AX collection classes have been designed
for storing objects. The classes are implemented in C++ to achieve the maximum
performance (they are system classes).
Class
|
Description
|
Similar to the array type
except that it can hold values of any single type, including objects and
records. Objects are accessed in a specific order.
|
|
Contains elements that
are accessed sequentially.
|
|
Associates a key value
with another value.
|
|
Holds values of any single
type; used when order is important.
|
|
Can contain values of
more than one type. Used to group information about a specific entity.
|
98. Tables in inventory?
InvetTable,InventTableModule,InventItemLocation, InventDim, InventTrans
BOMTable , WMSShipment.InventColor, InventSize
99. If you manipulate anything which layer would it affect?
The present layer where you are working and below of that
layer.
100. What are the components in reports?
Methods , DataSources , Design.
101. How many types of classes are there?
101. How many types of classes are there?
System Classes and Application Classes.
102. Development tools?
102. Development tools?
Version control ,
Cross-reference, Code profiler, Debugger, Application Hierarchy Tree,Code
Explorer, Reverse Engineer, Number of Records, Embedded Resources, Wizards, Label.
103. Communication tools
104. Can you say few best practises in ax?
105. What is the difference between sql queries and dynamics queries.
103. Communication tools
104. Can you say few best practises in ax?
105. What is the difference between sql queries and dynamics queries.
Sql query is Select statement –
Dynamic query – AOT Query and Query class using x++.
106. What is the difference between x++ and c#?
X++ contains code and Sql select statements
C# contains only code.
107. What are the link types in Ax?
107. What are the link types in Ax?
Passive: Linked child
data sources are not updated automatically. Updates of the child data source
must be programmed on the
active
method of the master data source.
Delayed: A pause is inserted before linked child data sources are updated.
This enables faster navigation in the parent data source because the records
from child data sources are not updated immediately. For example, the user
could be scrolling past several orders without immediately seeing each order
lines.
Active:
The child data source is updated immediately when a new
record in the parent data source is selected. Continuous updates consume lots
of resources.
InnerJoin:
Selects records from the main table that have matching
records in the joined table and vice versa. There is one record for each match.
Records without related records in the other data source are eliminated from
the result.
OuterJoin:
Selects records from the main table whether they have
matching records in the joined table.
And the other
records also shown in the main table.
ExistJoin:
Selects a record from the main table for each matching
record in the joined table.
The differences between
InnerJoin and ExistJoin are as follows:
-
When the join type is
ExistJoin, the search ends after the first match has been found.
-
When the join type is
InnerJoin, all matching records are searched for.
NotExistJoin:
Select records from the main table that do not have a
match in the joined table.
108.
What can’t you store in containers
We can’t store objects in containers.
109. Difference between arrays and containers
An array can hold
only items of same and its declared type. Containers store different types of
data types at a time.
You can allocate
memory space for an array and fill that space with values later, such as in a
loop. This is efficient and performs well.
110. Logic for converting string to uppercase?
StrUpr() -Converts all
the letters in a string to uppercase.
111.What is JumpRef()?
The user activates
the Go to main table command from the shortcut menu on
the control or by pressing CTRL+ALT+F4. The
super()
call opens the
main table that contains data for the field. 112. D.B Abstract and final class.
Abstract forces the
class to be derive subclass and final stops the class not to be derive or
inheritance.
113. D.B ValidateWrite and write.
113. D.B ValidateWrite and write.
validateWrite(): Executed
when a new or updated record is to be written. Determines whether data is valid and ready to
be written.
Write(): Executed when the user inserts a
new record or updates an existing one. Calls the
FormDataSource.validateWrite
method and manages the database write operation.114. What is dialoge class.
A dialog in AX is
a simple form with a standardized layout, created by using the
Dialog
system class. Dialogs should allow users to enter some simple values.
Dialog Classes-
DialogField, DialogGroup, DialogTabPage, DialogText, DialogWindow.
Dialog Methods – addField,addGroup,addTabPage,run,pack,unpack,
115. Pack and Unpack method?
115. Pack and Unpack method?
Use the
pack-unpack pattern to save and/or store the state of an object, and then later
reinstantiate the same object.
Pack():create a
pack
method to read the state of the object and return it in a container
suitable for saving or transporting between tiers. Reading the state of the
object implies collecting the value of all its members. If the members are
tables (records, cursors, temporary tables) or classes, it must also be
possible to read their state.
Returns the state
of the object as a container.
Unpack():create an
unpack
method that takes the packed state and reinitializes an object with
it. Construct the object before creating an unpack
method.
The
unpack
method
takes the saved state of the object and reinitializes the object with it. It
reinitializes the object members according to the values in the container,
taking the supplied version number into account.
The method can
return a Boolean that signals the result of the initialization process.
116. Architecture of MS dynamics AX.
Ax has the three tier architecture --- 1 . client 2. AOS 3.DataBase.
117. Tell us about AIF(MSMQ).
117. Tell us about AIF(MSMQ).
Application
Integration Framework (AIF) is the infrastructure within AX with which you can
expose business logic or exchange data with other systems. AIF is comprised of
three primary components:
1.Services
- Enable you to expose business logic written in X++ as a service to be
consumed by other applications. Within Microsoft Dynamics AX, you can create,
customize, and publish services.
2.Document
services - A specific implementation of services in which the Microsoft
Dynamics AX business logic is exposed through document services.
3.Consume
Web services - In Microsoft Dynamics AX, you can consume external Web
services from your X++ code.
118. How to design a form in AX using X++?
118. How to design a form in AX using X++?
The
Form*
classes enable you to manipulate, create, modify, or run forms by using X++
code. You can also modify forms during run time so, for example, one or more
controls are hidden on a form, depending on the user's selections in the
preceding form.
The
Form
classes
are all system classes and are prefixed with Form.
Form, FormRun, FormDesign, FormBuildDesign,
FormDataSource, FormBuildDataSource, FormControl
119. What is report builder?
You can create
reports by using Report Builder for Microsoft SQL Server Reporting Services.
You add information to the report from a report model.
When you create a
report by using Report Builder for Microsoft SQL Server Reporting Services, you
are using secure views of the tables available in the report model.
120. What is Index, properties in Index and types of Index?
An index is a
table-specific database structure that speeds the retrieval of rows from a
table. Indexes are used to improve the performance of data retrieval and to
ensure the existence of unique records. It's up to the database-specific query
optimizer to use available indexes to facilitate efficient data retrieval.
Unique index and
non-unique index.
121. Concept of Different Layer in AX.
121. Concept of Different Layer in AX.
sys
|
syp
|
gls
|
Glp
|
hfx
|
sl1
|
sl2
|
sl3
|
bus
|
bup
|
var
|
vap
|
cus
|
cup
|
usr
|
usp
|
122. Difference between bound and unbound controls?
Form controls
belong to one of three groups, depending on their data source as follows:
·
Bound
control – associated with a field in an underlying
table. Use bound controls to display, enter, and update values from fields in
the database.
·
Unbound
control – does not have a data source. Use unbound
controls to display pictures and static text.
·
Calculated controls – uses a
method as the data source. An example of a calculated control is the sum of two
fields on a form.
123.
How to create runtime query?
You can create a
query to retrieve data by using the query classes.
Query, QueryRun, QueryBuildDataSource,
QueryBuildRange, QueryBuildLink, QueryBuildDynaLink
124. What is optimistic concurrency control and Pessimistic Concurrency Control?
124. What is optimistic concurrency control and Pessimistic Concurrency Control?
Optimistic
Concurrency Control (OCC) helps increase database
performance. Pessimistic Concurrency Control locks records as soon as they are
fetched from the database for an update. However, Optimistic Concurrency only
locks records from the time when the actual update is performed.
Following are the
advantages of using OCC:
·
Fewer resources are used to
hold the locks during the update process.
·
Records are locked for a
shorter length of time.
·
Records remain available for
other processes to update if they have been selected from the database but
haven't yet been updated.
The disadvantage
of using OCC is that the update can fail if another process updates the same
record. If the update fails, it must be retried. This can lead to a reduction
in database performance.
OCC makes it
possible for other processes to update a record even after it has been fetched.
You can catch update conflicts by catching the
UpdateConflict
and UpdateConflictNotRecovered
exceptions.125. What are transactions?
126. How to lock transactions?
127. What are macros?
Macros act as a container for defining variables used for frequent tasks. The purpose of macros is to make statements easy to reuse. A macro can’t be executed independently as a class.
An advantage macro
is that the maintenance is done in only one place.
Three types of macros
Macro libraries –
is a standalone macro that contains a collection of local macros.
Standalone macros
– is created by using the macro node in the AOT.
Local macros - is
declared with in a method.
128. What is the default link type property? - Delayed.
129.
Default join in select statement (Queries) - innerJoin
130. Difference between validate write and validate field?
130. Difference between validate write and validate field?
validateWrite():
Executed when a record is written to the database,
before the data change is committed in the database.
validateField():Executed when you leave a field in a record. For example, after
entering changes to a field on a grid control, you could click another field in
that same record or on a different record. Or you could click another control
on that same form.
The
super()
method invokes field validation checks, as guided by the value of the Validate
property.
131.
Do we have validate write and validate field in form level?
FormDataSource – validateWrite()
FormDataSource – validateWrite()
FormDataSourceField - validate()
132. What are the methods required for posting a purchase order?
133. How to give null in select query?
Select table where
table.field == “ ” ;
134. What is cache
lookup and IsLookup what is it used for?
CacheLookup : Determines how to
cache the records retrieved during a lookup operation.
Types - None , NotInTTS, Found, FoundAndEmpty,EntireTable.
IsLookup : For report models, it
specifies whether the table information is incorporated into other tables that
reference it when a report model is generated.
For OLAP cubes,
it determines whether to generate a consolidated dimension or a distinct
dimension. You can specify one of the following values.
·
Yes - Indicates that attributes from the table are to be consolidated
into the parent dimension (star schema).
·
No - Indicates that a separate dimension is to be generated for the
table (snowflake schema).
135. Difference
between table and views?
A Microsoft
Dynamics AX view is a virtual table that contains the
data records and fields that are specified by a query.Like a table, a view uses
fields and rows to represent data records. However, the data in a view is not
stored as a database object but is dynamically created when the view is
accessed. A view uses a query to retrieve data fields from one or more database
tables.
When you create
a view, the view definition is generated and stored in the database. When that
view is accessed, the view dynamically retrieves the data that satisfies the
view definition.
Views are
read-only. The data fields and tables that a view uses cannot be updated from
that view.
Benefit
|
Description
|
Focused data
|
A view enables you to
retrieve and return only the data that is relevant for a particular user or
scenario.
|
Customized data
|
A view enables you use a
complex query to create a highly-customized set of data. For example, a view
often represents data as a single table that was retrieved from multiple
joined tables and used many conditions.
|
Performance
|
A view can improve
performance by returning only relevant fields to the user. In addition, a
view definition is compiled which may provide better performance than calling
an equivalently complex query.
|
136. In which case
delete_from and delete() have same result?
When deleting only
one record in the table.
137. Explain
sales/purchase order processes in AX.
138. Can you just tell
the table properties that you can remember?
139. Explain different
types of reports?
AOT Reports , Using X++ - Report
classes, Using Report wizard.
140. Primary Key in
tables (In dynamics AX don’t have primary key)
141. What is the
default index for a table?
The system index
is created on the RecId and DataAreaId fields if the DataAreaId field exists.
Otherwise the system index is created on the RecId field. You can see system
indexes in the database but they aren't visible in the AOT.
142. What are all the
add- on tools you used in Dynamics AX (It’s an indirect question for AIF)
143. Did you work with
EP (Enterprise Portal & Workflow) how can you implement this features into
your projects?
144. Difference
between this and element?
this & element: this can be used in any objects
to reference the current object and member methods.
In forms the collection of
objects is contained within a FormRun object. You can reference members in the outer
formrun object by using the element reference.
If your code is placed at the
top level there are no functional difference between this and element.
If your code is placed in a
formdatasource but this will reference the datasource but element will
reference the formrun.
You cannot use element to refer table or class object.
145. COM & .NET
Business Connector
146. Concurrent
user & Named user
147. Primary key & Foreign key
148. AOS Load balancer concept/Clustering
149. AX 2009
Debugger concepts?
Use this debugger to debug X++ code that is
running on the following:
·
Microsoft Dynamics AX Business
Connector
·
AOS
·
Microsoft Dynamics AX Client
The debugger windows. 1.
Code 2. Variables 3.Call stack 4.Watch 5.Break
points 6. Output
150. Cross reference tool ?
The Microsoft Dynamics AX cross-reference
system allows you to see the relationships between objects. You can see the
following:
·
Which other objects use the
current object
·
Which other objects the current
object uses
For example, you can get a list of every piece of code that
uses a particular method, or you can see which forms use a particular table
field. You can also get information about where labels are used in the
application.
151. Document Management
152. Print Management
153. Caching mechanism in AX ?
Caching is to
remember the information already retrieved from the database and use this
memory when the same data is needed again.
Drawback,
if the remembered information is no longer valid this could compromise the
consistency of the database as the
updates are made based on the invalid data.
Read
ahead caching , single record caching, Entire table caching, Record view
caching, Display method caching.
154. What is cloud computing? How it is configured in AX?
155. Difference between parameter table and Normal table?
The parameter
system design pattern holds static setup information for the modules in a
company, such as information on the national currency, the posting method, and
so on. There is one instantiation of this pattern per module.
The parameter
system should be set up as described in this topic. The parameter record is
automatically created by the system and has the following:
·
A parameter table
·
A parameter form
·
A parameter menu item
There should be
one parameter table per module.
Parameter
tables have a single record per company, holding the required parameters for
the module. The record is cached. To enable the Found-cache, a key is defined.
Add an integer
field called key. It should have the
Visible
property set to
No
156. What is Configuration form in Ax?
Administration>Setup>System>Configuration -- displays all the module configuration
keys and we can enable or disable the key from this form.
157. How to change Standard table as temporary table ?
By
changing the table property to Yes and Use the
setTmp
table method to make a non-temporary table temporary rather than
creating a copy of the table, and then making it temporary.
158. What is difference between Auto design and Generate design ? If
we uses both designs in a report what design will be print?
Report prints - Generated design.
159. Oops concept what doesn’t support in Ax?
Multiple
inheritance and method overloading
160. Instead of multiple inheritance what we use in Ax?
Interfaces
161. How to open exe file in Ax?
Ax32.exe - "C:\Program
Files\Microsoft Dynamics AX\50\Client\Bin\Ax32.exe"
162. What is table properties of formRef and ReportRef ?
For tables where the Table Group property has been set to Group, Main, or WorksheetHeader, you must do
the following:
·
Have
a form to maintain the table records.
·
Set
the FormRef property to the name of a
display menu item.
The form and the display menu item that are used to
start the form should have the same name as the table. An example of this rule
is the CustTable table in Microsoft Dynamics AX.
Note
|
Don't set the FormRef property for tables where the MaxAccessMode property is set to
NoAccess. These tables are not used in a form.
Specifies the
display menu item that is activated when a table is referenced.
When you use a
primary index field on a report, this form is available as a link in the
report. A primary index is specified by using the
PrimaryIndex property.
If you leave
this field blank, the system attempts to display a form that has the same
name as the table.
The FormRef property of a table lookups display
menuitems.
|
163. How many types of exceptions are there in Ax?
15 types of exceptions in Ax are -------
Info,
warning,deadlock,error,internal,break,dderror,sequence,numeric,CLR error,Code
access
security,UpdateConflict,UpdateConflictNotRecovered,DuplicateKeyException,DuplicateKeyExceptionNot
Recovered.
164. Access modifiers and Method modifiers ?
Access Modifiers: All methods of a class
are always available to code in the class itself. To control access from other
classes, and to control inheritance by subclasses, X++ has three access control
modifiers for methods:
Classes are treated as
public
if you
do not specify an access modifier. public
: Methods that are
declared as public
can be used anywhere the class is accessible and can be overridden
by subclasses. protected
: Methods that are declared as protected
can only be
called from methods in the class and in subclasses of the class where the
protected method is declared. private
: Methods that are declared as private
can only be
called from methods in the class where the private method is declared.
Method Modifiers :
abstract
,client,server,display,edit,final,static,public,private,
protected.
165. How many types of dimensions in inventory?
Item dimensions – Configuration,size,color
Storage
dimensions – Site, Ware house, PalletId, Batch number, Serial Number.
166. If we create table relation and EDT relation for the same field
in the table which relation the field uses?
Table
relation.
167. What is Composite query where we can use?
A
query with in another query is called Composite query. Uses in the Query node
in the AOT.
168. Can run the form on server side? -- No
169. Difference between table delete and form delete?
170. What is section template
and report template?
Report Template: A report template can
specify the sections that a report includes, such as a page header and a page
footer, page numbers on each page ,company logo ,the controls included in each
section, and the layout of the controls. Only reports based on an Auto design
inherit changes that are made to a report template, Generate design doesn’t
inherit changes to report template.
Section template: This makes it
possible to define sections one time and reuse them many times. This is used
for elements appearing in more than one report.
171. When you are creating a table what is the default table group? - Miscellaneous
172. Where is the best place to write the logic in Ax?
Classes, try to avoid the code in the forms.
173. what is the thin and thick or fat client in the configurations?
Thick
client has the direct access to the database.
1.
How to generate the Sales invoice
periodically/automatically?
2.
How to send the customer’s report as an E-mail to
the particular users on daily status?
3.
What class will call when sending the E-mail?
4.
How to run the debug for the server modifier
methods?
5.
What are the delete actions?
6.
What are the relations and examples?
7.
What is Security key and configuration key?
8.
What are the query methods and what is get , getno
methods?
In the fetch method of report we call get() and getno()
methods. Get is used to get the table from the query or datasource of report,
here we will give the datasource table name. and getno() is used to get the
query number or datasource table number of a report.
9.
What is the Sales order cycle?
10.
What methods and tables
called when posting the sales order?
11.
What is purchase requisition?
12.
What is BOM?
13.
What is abstract class? what
are the abstract classes in Ax?
RunBase, RunBaseBatch, FormLetter
, FormLetterReport ,
PurchFormLetter, PurchFormLetterReport, SalesFormLetter, SalesFormLetterReport,RunBaseReport,GanttData
, InventModelType , InventMovement LedgerBalance PrintMgmtHierarchy , PrintMgmtNode , PrintMgmtSetupSettings
, SmmImport
SmmOutlookSync , SysCheckList
, SysCodeExplorer , SysDataExpImp ,
SysDefaultData, SysExcel, SysExcelApplication
, SysExcelCell , SysExcelWorkbooks , SysExcelRange ,
SysSearch, SysWizard, WorkflowElement,
AddressSelectForm, AddressZipCodeImport, AifDocument, AifDocumentService, AssetSumCalc, AssetTableInterval, AssetTableMethod, AxdBase, Barcode, BOMCalcBase, BomCalcJob, BomCalcLine, BOMCopyFrom, CustVendBalanceList, CustVendPaym, CustVendTransData, DimensionCopy
14.
What is interface and what
are interfaces classes in Ax?
Batchable, SysPackable,
SysComparable, SysMergeable,SysSaveable ,AfService, SysVersionControllable, SysTestExecutable, SysTestListener ,AifXmlSerializable, AifCustomizableService, AifGatewayReceiveManager, AifGatewaySendManager, AifIntegrationAdapter, AifPipelineComponentInterface, AfEmployeeService,WorkflowDueDateProvider,WorkflowHierarchyProviderNode,
WorkflowConfigControl, WMSOrderTransMultiUpdateHandleable, DynamicPropertyCallback, RunbaseRecsMapable, SysCompareContextProvider, WorkflowStartedEventHandler,
WorkflowCompletedEventHandler,
WorkflowCanceledEventHandler,SysVisioModelProvider, SysVersionControlChangeLists,
SysVersionControlReviews, , SysTaskRecorderIEventMonitor, SysImportStatusGettable, SysImportLoggable, SysCheckListInterfaceUpgrade, ButtonStateProvider
15.
What is polymorphism?
16.
What is primary index
,clustered index?
17.
Write a program for reversing
the string?
18.
Why SSRS using temporary
table, can we use normal table?
19.
How many types we can develop
SSRS reports?
20.
What is Data provider class?
21.
What is the best way to
develop SSRS reports? (query or DP class)
22.
Write a program to print the
sum of amount for each accountnum from CustTrans?
23.
Write a program to print the
reverse of a given number?
24.
Write a program for finding
the biggest element in the array?
25.
What are changes between
Ax2009 and Ax2012?
26.
What is table inheritance in
Ax 2012?
27.
What is table reference in
EDT – 2012?
28.
What is surrogate key in Ax
2012 ?
29.
How to cancel the sales order
from X++, what is the best place to write the code for cancelation?
30.
If I have millions of records
in a form and to open the form or perform any operation it is taking more time.
So how to speed up the process of the form to retrieve the records from the database?
31.
What is FIFO and LIFO in
inventory ,give the real time example?
32.
How to debug the batch jobs
in ax?
33.
What is amstrong number write
a program for finding the amstrong number?
34.
Where you will write the code
for filter in form and report?
35.
Differences between abstract
class and interfaces?
- Main difference is methods of a Java interface are implicitly abstract and cannot have implementations. A Java abstract class can have instance methods that implements a default behavior.
- Variables declared in a Java interface is by default final. An abstract class may contain non-final variables.
- Members of a Java interface are public by default. A Java abstract class can have the usual flavors of class members like private, protected, etc..
- Java interface should be implemented using keyword “implements”; A Java abstract class should be extended using keyword “extends”.
- An interface can extend another Java interface only, an abstract class can extend another Java class and implement multiple Java interfaces.
- A Java class can implement multiple interfaces but it can extend only one abstract class.
- Interface is absolutely abstract and cannot be instantiated; A Java abstract class also cannot be instantiated, but can be invoked if a main() exists.
- In comparison with java abstract classes, java interfaces are slow as it requires extra indirection.
Interview Questions:
1)
Tell about your Self.
2)
What kind of
Customizations you have done.
3)
How you will create
Table in Ax. In that Table how you will define Indexes, Relations, Delete
Actions and Methods. Tell me the steps First what you will do, First you will
define Indexes or Relations. Why?
4)
What is Naming
Conventions in Ax?
5)
What is Index? How
many types of Indexes are there? What is unique index and non-unique?
6)
What is Cluster Index?
7)
What is Cache Look Up?
More Questions on regarding Cache Look Up?
8)
What is FormRef?
9)
What is Configuration
Key? Why need of configuration keys?
10)
What is Security Key?
11)
What is Record Level
Security?
12)
How the ax is
providing security. What are the ways?
13)
Types of Relations.
14)
Types of Delete
Actions.
15)
What kind of methods
you will create will create a Particular Table?
16)
What is Table
Collections?
17)
How you will create
different Environments like Aos1, Aos2……………..so on……
18)
For Example: 150 users
are Accessing Aos1.How you will assign users to Aos2 for that what you
required. More Questions on regarding AOS
19)
Tell me the Invent
Table Form Data sources?
20)
Invent Dim Table What
it stores?
21)
What is Table Group?
When you creating new tables in ax by default what is the Table Group?
22)
Can you tell me the Sales Table, Table Group?
What it consists
23)
How you will do the
SSRS Repots in AX?
24)
What are all the New
Features are added in Ax 2009?
25)
How to install Ax
2009? What it Require? How you will install in Win XP & Vista? More
Questions on regarding Ax Installation.
26)
What is Workflow? How
you will do this? Ex: For Po how to configure Workflow? Steps…..
27)
For New Module how to
Achieve Workflow. Steps. more Questions on regarding WF
28)
How you will configure
Workflow For AR
29)
How to install
Workflow. What it requires (software’s).
30)
Weather Workflow
requires EP?
31)
What is EP? What it
requires (software’s). More Questions on regarding EP.
32)
What is Number
Sequence? How you will do that? Number Sequence Steps…
33)
How you configure
Number Sequence in Ax? For Example I created one record in ABC Form. I didn’t
save the record. I just deleted the record. In that Case what will happen? What
comes next….
34)
What is Global Address
Book?
35)
How can you use the
Global Address Book?
36)
How can you Create New
Employee?
37)
What is the use of
Virtual Companies?
38)
At form Level how you
will define Query Build Classes. How you will do that
39)
Tell me Form Level
Data Source Methods.
40)
What is Execute Query
41)
What is Init at form
Methods
42)
Types of Inventory
Dimensions?
43)
Types of Item
Dimensions?
44)
Types of Storage
Dimensions?
45)
Types of Dimensions in
Ax?
46)
How to define
Composite Queries in Ax?
47)
Number Sequence
Classes.
48)
Types of Link Types?
49)
Inner Join and Exists
Join?
50)
Oops Concepts?
51)
What is inheritance?
52)
Types of Inheritance?
53)
What is Abstract Class
in Ax? How you will define?
54)
What is interface?
55)
Tell me Interfaces
Classes in Ax?
56)
What is RunBase?
57)
Where we can create
item in Ax2012?
58)
Difference between change
company and cross company?
59)
What is surrogatekey
in 2012?
60)
How to import data one
application to another application?
61)
Differences in 2009
and 2012?
Hexaware
– Pune
1. What are the
differences between Ax2009 and Ax2012?
2. Table method
sequences? Validate write and write methods? Need of write method?
3. What is the
mandatory property when creating the Table?
4. What is delete
actions and what is Cascade+Restricted?
5. What is the return
type of find method?
6. What is Primary
index and Clustered index?
7. What is the
frameworks in Ax ?
8. What is Run base framework?
9. When we create the
dialog run method is needed? If not how to run the method?
10. Is it possible to move the var layer
modifications to usr layer? For ex ; if one user has created objects in var ,
how we can move these objects to usr layer?
---- by using compare tool
11. How to move
modifications from dev instance to Test and Prod instance?
12. What is layer architecture?
13. What is the
return type of unpack() method ?
Infosys – Chennai
1. What is the form methods sequence?
2. What is init() method in a form?
3. What are the report method sequences?
4. When you open a report, how many times call the fetch?
5. What is the execute method? How many times it calls?
6. What are the mandatory properties
of a table?
7. What is intivalue() in a table and
in a form?
8. what is cascade+Restricted? Differences
among the delete actions?
9. What are the joins? Explain?
10. What are all the methods call when
you save a record in a table?
11. What is polymorphism?
1) Difference between conpeek and confind
Confind :- we can find the position of an item.
static void conFindExample(Args _args)
{
container c = ["item1", "item2", "item3"];
int i;
int j;
;
i = conFind(c, "item2");
j = conFind(c, "item4");
print "Position of 'item2' in container is " + int2Str(i);
print "Position of 'item4' in container is " + int2Str(j);
pause;
}
Conpeek:- we can get the item in a particular position
static void conPeekExample(Args _arg)
{
container c;
int i;
;
c = conIns(["item1", "item2"], 1);
for (i = 1 ; i <= conLen(c) ; i++)
{
print conPeek(c, i);
}
pause;
}
2) Method overloading and Method overriding
X++ supports overriding, but it does not support overloading.
Overriding a Method [AX 2012]
The
methods in a class are inherited by any class that extends it. You can
alter the functionality of an inherited method by creating a method in
the subclass with the same name and parameters as in the superclass.
This is called overriding the method. For example:
// Superclass: Attribute
public class Attribute
{
int objectVariable;
}
void methodAtt()
{
//Some statements
}
// Subclass: ColorAttribute
public class ColorAttribute extends Attribute
{
int addedObjectVariable;
}
void methodAtt()
{
//Some statements
}
ColorAttribute is a subclass of Attribute and therefore inherits the method methodAttr. However, because ColorAttribute defines a method with the same name and the same number of arguments, the method in the superclass is overridden.
Static
methods cannot be overridden because they exist per class. To protect
other sensitive methods, or core methods, from being overridden, use thefinal modifier. In the example below, methodAtt is declared as final, and so it cannot be overridden in any class that extends Attribute.
public class Attribute
{
int objectVariable;
}
final void methodAtt()
{
//Some statements
}
Note
|
You should not specify new or finalize
|
Overloading is where there
is more than one method with the same name, but the methods have
different signatures (return type or parameter lists or both).
Overriding is where the
superclass's implementation of a method is altered by the subclass's
implementation of the method, but the signatures of both methods are the
same.
3) DictTable and DictField Class
DictTable class is used to access information ralated to table. (if you want to access the fields of a record, where you do not know the field names ex:- table_name.(field_id)
)
DictField class is used to access information ralated to table fields.
DictField class is used to access information ralated to table fields.
static void dictJob(Args _args)
{
DictTable dictTable = new DictTable(tableNum( CustTable));
DictField dictField;
int counter, fieldId;
CustTable custTable;
anytype value;
select firstonly custTable;
for (counter = 1; counter <= dictTable.fieldCnt(); counter++)
{
fieldId = dictTable.fieldCnt2Id(counter) ;
dictField = new DictField(tableNum( CustTable), fieldId);
if (!dictField. isSystem())
{
value = custTable.(fieldId); // value of the record will display
if(value)
{
info(strFmt('% 1 = %2',
an y2str(value)));
}
}
}
}
4) Difference between Array collection class and x++ arry class
An Array collection class can hold the objects.
x++ array class holds primitive data types such as str,int
5) What should we use to increase performance while inserting, updating or deleting records from a table?
ANS:
· RecordSortedList:
Allows you to insert multiple records in one database trip. Use the
RecordSortedList construct when you want a subset of data from a
particular table, and when you want it sorted in an order that does not
currently exist as an index.
Student student;
RecordSortedList recordSortedList = new RecordSortedList(tablenum( Student));
recordSortedList .sortOrder(fieldname2id( tablenum(Student),’StudentId’) );
student.clear();
student.StudentID=”123″;
student.FirstName=”DOM”;
student.LastName=”FED”;
recordSortedList.ins(student);
student.clear();
student.StudentID=”456″;
student.FirstName=”TOM”;
student.LastName=”GED”;
recordSortedList.ins(student);
student.clear();
student.StudentID=”789″;
student.FirstName=”ROM”;
student.LastName=”TED”;
recordSortedList.ins(student);
recordSortedList. insertDatabase();
· RecordInsertList:
Allows you to insert multiple records in one database trip. Use the
RecordInsertList construct when you do not need to sort the data.
· insert_recordset: Allows you to copy multiple records from one or more tables directly into another table on a single database trip.
6) Difference between update and doupdate
The
doUpdate table method updates the current record with the contents of
the buffer. This method also updates the appropriate system fields.
The doUpdate method should be used when the update method on the table is to be bypassed. Suppose
you have overridden the update method of the table but sometime there
is a situation when you don't want the code written in the overridden
update method to be executed and at the same time want any selected
record of that table to be updated. In such situation you should call
the table.doupdate() method instead of table.update() method.
7) Collection Classes
you
cannot store objects in arrays (x++ class) or containers. The Microsoft
Dynamics AX collection classes have been designed for storing objects.
Below are collection classes: Set , Map , List , Array (Collection class)
A Set is
used for the storage and retrieval of data from a collection in which
the members are unique. The values of the members serve as the key
according to which the data is automatically ordered. Thus, it differs
from a List collection class where the members are placed into a
specific position, and not ordered
automatically by their value.
static void Set(Args _args)
{
Set setOne;
Set setTwo;
SetEnumerator enumerator;
Int value;
setOne = new Set(types::Integer);
setOne.add(4);
setOne.add(6);
setOne.add(3);
enumerator = setOne.getEnumerator();
while (enumerator. moveNext())
{
value = enumerator.current();
info(strFmt("%1", value));
}
}
Output :- 3
4
6
A List object
contains members that are accessed sequentially. Lists are structures
that can contain members of any X++ type. All the members in the same
list must be of the same type.
static void List(Args _args)
{
List integerList = new List(Types::Integer);
ListEnumerator enumerator;
// Add some elements to the list
integerList.addEnd(1);
integerList.addEnd(4);
integerList.addEnd(3);
// Set the enumerator
enumerator = integerList.getEnumerator();
// Go to beginning of enumerator
enumerator.reset();
//Go to the first element in the List
enumerator.moveNext();
// Print contents of first and second elements
info(strfmt("%1", enumerator.current()));
enumerator.moveNext();
info(strfmt("%1", enumerator.current()));
enumerator.moveNext();
info(strfmt("%1", enumerator.current()));
}
Output :- 1
4
3
A Map object
associates one value (the key) with another value. Both the key and
value can be of any valid X++ type, including objects. The types of the
key and value are specified in the declaration of the map. The way in
which maps are implemented means that access to the values is very fast.
static void Map(Args _args)
{
Map mapTest;
MapEnumerator enumerator;
mapTest = new Map(Types::String, Types::Integer);
mapTest.insert("One", 1);
mapTest.insert("Two", 2);
enumerator = mapTest.getEnumerator();
while (enumerator. moveNext())
{
info(strfmt("Key - %1 , Value - %2.",enumerator.currentKey(), enumerator.currentValue()));
}
}
Output:- Key - One , Value - 1.
Key - Two , Value - 2.
8) Difference between Containers and Temp tables
· Data
in containers are stored and retrieved sequentially, but a temporary
table enables you to define indexes to speed up data retrieval.
· Containers
provide slower data access if you are working with many records.
However, if you are working with only a few records, use a container.
· Another
important difference between temporary tables and containers is how
they are used in method calls. When you pass a temporary table into a
method call, it is passed by reference. Containers are passed by value.
· When
a variable is passed by reference, only a pointer to the object is
passed into the method. When a variable is passed by value, a new copy
of the variable is passed into the method. If the computer has a limited
amount of memory, it might start swapping memory to disk, slowing down
application execution. When you pass a variable into a method, a
temporary table may provide better performance than a container.
9) Code profier
The
Code Profiler measures the execution time of individual lines of code.
Use this tool to find performance bottlenecks and to help understand
code that was developed by others.
Dev Work space > Tools > Code profiler
If you click on Profile Run button, call tree and profile lines will be there
10) Maps (AOT Element)
Maps
define X++ elements that wrap table objects at run time. With a map,
you associate a map field with a field in one or more tables. This
enables you to use the same field name to access fields with different
names but the same data type in different tables. Map methods enable you
to create or modify methods that act on the map fields.
A
table can be accessed through more than one map. Typically, if more
than one map accesses the same table, each map accesses different
subsets of fields in the table.Maps don't define database objects and so they aren't synchronized with the database.
The benefits of maps include:
Simplicity -
maps provide a single interface to fields in multiple tables. This
means that any object referencing the map field can be used against
multiple tables without changing any field names.
Consistency -
table fields with varying names can be accessed in code in a consistent
manner. For example by using a map, fields named Zip in one table,
ZipCode in another, and PostalCode in yet another table can all be
accessed by the name ZipCode.
Code reuse - a
map method enables you to add code that runs against the map fields. A
single map method prevents the duplication of methods and code on each
table.
An
example of a map in Microsoft Dynamics AX is the Address map, which can
be used to access fields in two tables (among others) called Address
and CustVendTransportPointLine. This enables developers to use one
Address map object to access common address fields and methods.
Map
Elements: In Microsoft Dynamics AX, maps are located in the Application
Object Tree (AOT) under the Data Dictionary\Maps node. Each map has
four primary elements:
- Fields
- Field Groups
- Mappings
- Methods
Fields:
The Fields node contains the map field elements. Each field must be the
same data type as the field to which it's associated. Use the
ExtendedDataType property to specify the map field's data type if the
map field is associated with a table field that's based on an extended
data type.
Field Groups:
The Field Groups node contains field groups that group together fields
that logically belong together. Field groups in maps work the same way
they do in tables. For more information about field groups, see Best
Practices for Field Groups, Defining Field Groups, and How to: Create a
Field Group.
Mappings: The
Mappings node is where the map fields are associated with table fields.
Directly under the Mappings node are the MappingTable objects. Each
MappingTable object specifies a table that the map is associated with.
Under the MappingTable object are the field mappings that associate a map field
with a table field. If a field exists in the map with no associated
field in a particular table just leave the MapFieldTo property blank.
Methods:
This node displays all the methods available from a map. In this node
you can add a new method or you can override methods on the xRecord
kernel class and add your own code.
Map
methods are useful because code that acts on the map fields can be
encapsulated in a map method instead of being in multiple table methods. For example, the
AddressMap has a formatAddress method that formats the address
consistently whether the map references the Address table or the
CustTable table.
11) Temp Tables
From
a developer's perspective, temporary tables store data in the same way
as normal physical tables, except that the data is automatically dropped
when no longer required.
They are useful in two common situations
1. As the datasource for a form or report, where the original data is too complex to be easily queried.
2. As temporary storage during complicated processing, to hold the results midway through the process.
Prior to Dynamics Ax version Ax 2012, only one type of temporary table was available. In Ax 2012, however, the Temporary property on tables was replaced with a new property: TableType, which has three possible values:
§ Regular - a standard physical table
§ InMemory -
the type of temporary table which existed in the previous versions of
Dynamics Ax. Such tables are held in memory and written to a local disk
file once they grow beyond a certain point
§ TempDB - a new option in Ax 2012. They are "physical" temporary tables held in the SQL Server database.
The new TempDB tables operate in a similar manner to InMemory tables but support more features from standard physical tables:
§ More powerful joins with physical tables are possible, and are properly supported by the database
§ Can be per-company or global
Support for normal tts transactions1) Difference between conpeek and confind
Confind :- we can find the position of an item.
static void conFindExample(Args _args)
{
container c = ["item1", "item2", "item3"];
int i;
int j;
;
i = conFind(c, "item2");
j = conFind(c, "item4");
print "Position of 'item2' in container is " + int2Str(i);
print "Position of 'item4' in container is " + int2Str(j);
pause;
}
Conpeek:- we can get the item in a particular position
static void conPeekExample(Args _arg)
{
container c;
int i;
;
c = conIns(["item1", "item2"], 1);
for (i = 1 ; i <= conLen(c) ; i++)
{
print conPeek(c, i);
}
pause;
}
2) Method overloading and Method overriding
X++ supports overriding, but it does not support overloading.
Overriding a Method [AX 2012]
The
methods in a class are inherited by any class that extends it. You can
alter the functionality of an inherited method by creating a method in
the subclass with the same name and parameters as in the superclass.
This is called overriding the method. For example:
// Superclass: Attribute
public class Attribute
{
int objectVariable;
}
void methodAtt()
{
//Some statements
}
// Subclass: ColorAttribute
public class ColorAttribute extends Attribute
{
int addedObjectVariable;
}
void methodAtt()
{
//Some statements
}
ColorAttribute is a subclass of Attribute and therefore inherits the method methodAttr. However, because ColorAttribute defines a method with the same name and the same number of arguments, the method in the superclass is overridden.
Static
methods cannot be overridden because they exist per class. To protect
other sensitive methods, or core methods, from being overridden, use thefinal modifier. In the example below, methodAtt is declared as final, and so it cannot be overridden in any class that extends Attribute.
public class Attribute
{
int objectVariable;
}
final void methodAtt()
{
//Some statements
}
Note
|
You should not specify new or finalize
|
Overloading is where there
is more than one method with the same name, but the methods have
different signatures (return type or parameter lists or both).
Overriding is where the
superclass's implementation of a method is altered by the subclass's
implementation of the method, but the signatures of both methods are the
same.
3) DictTable and DictField Class
DictTable class is used to access information ralated to table. (if you want to access the fields of a record, where you do not know the field names ex:- table_name.(field_id)
)
DictField class is used to access information ralated to table fields.
DictField class is used to access information ralated to table fields.
static void dictJob(Args _args)
{
DictTable dictTable = new DictTable(tableNum( CustTable));
DictField dictField;
int counter, fieldId;
CustTable custTable;
anytype value;
select firstonly custTable;
for (counter = 1; counter <= dictTable.fieldCnt(); counter++)
{
fieldId = dictTable.fieldCnt2Id(counter) ;
dictField = new DictField(tableNum( CustTable), fieldId);
if (!dictField. isSystem())
{
value = custTable.(fieldId); // value of the record will display
if(value)
{
info(strFmt('% 1 = %2',
an y2str(value)));
}
}
}
}
4) Difference between Array collection class and x++ arry class
An Array collection class can hold the objects.
x++ array class holds primitive data types such as str,int
5) What should we use to increase performance while inserting, updating or deleting records from a table?
ANS:
· RecordSortedList:
Allows you to insert multiple records in one database trip. Use the
RecordSortedList construct when you want a subset of data from a
particular table, and when you want it sorted in an order that does not
currently exist as an index.
Student student;
RecordSortedList recordSortedList = new RecordSortedList(tablenum( Student));
recordSortedList .sortOrder(fieldname2id( tablenum(Student),’StudentId’) );
student.clear();
student.StudentID=”123″;
student.FirstName=”DOM”;
student.LastName=”FED”;
recordSortedList.ins(student);
student.clear();
student.StudentID=”456″;
student.FirstName=”TOM”;
student.LastName=”GED”;
recordSortedList.ins(student);
student.clear();
student.StudentID=”789″;
student.FirstName=”ROM”;
student.LastName=”TED”;
recordSortedList.ins(student);
recordSortedList. insertDatabase();
· RecordInsertList:
Allows you to insert multiple records in one database trip. Use the
RecordInsertList construct when you do not need to sort the data.
· insert_recordset: Allows you to copy multiple records from one or more tables directly into another table on a single database trip.
6) Difference between update and doupdate
The
doUpdate table method updates the current record with the contents of
the buffer. This method also updates the appropriate system fields.
The doUpdate method should be used when the update method on the table is to be bypassed. Suppose
you have overridden the update method of the table but sometime there
is a situation when you don't want the code written in the overridden
update method to be executed and at the same time want any selected
record of that table to be updated. In such situation you should call
the table.doupdate() method instead of table.update() method.
7) Collection Classes
you
cannot store objects in arrays (x++ class) or containers. The Microsoft
Dynamics AX collection classes have been designed for storing objects.
Below are collection classes: Set , Map , List , Array (Collection class)
A Set is
used for the storage and retrieval of data from a collection in which
the members are unique. The values of the members serve as the key
according to which the data is automatically ordered. Thus, it differs
from a List collection class where the members are placed into a
specific position, and not ordered
automatically by their value.
static void Set(Args _args)
{
Set setOne;
Set setTwo;
SetEnumerator enumerator;
Int value;
setOne = new Set(types::Integer);
setOne.add(4);
setOne.add(6);
setOne.add(3);
enumerator = setOne.getEnumerator();
while (enumerator. moveNext())
{
value = enumerator.current();
info(strFmt("%1", value));
}
}
Output :- 3
4
6
A List object
contains members that are accessed sequentially. Lists are structures
that can contain members of any X++ type. All the members in the same
list must be of the same type.
static void List(Args _args)
{
List integerList = new List(Types::Integer);
ListEnumerator enumerator;
// Add some elements to the list
integerList.addEnd(1);
integerList.addEnd(4);
integerList.addEnd(3);
// Set the enumerator
enumerator = integerList.getEnumerator();
// Go to beginning of enumerator
enumerator.reset();
//Go to the first element in the List
enumerator.moveNext();
// Print contents of first and second elements
info(strfmt("%1", enumerator.current()));
enumerator.moveNext();
info(strfmt("%1", enumerator.current()));
enumerator.moveNext();
info(strfmt("%1", enumerator.current()));
}
Output :- 1
4
3
A Map object
associates one value (the key) with another value. Both the key and
value can be of any valid X++ type, including objects. The types of the
key and value are specified in the declaration of the map. The way in
which maps are implemented means that access to the values is very fast.
static void Map(Args _args)
{
Map mapTest;
MapEnumerator enumerator;
mapTest = new Map(Types::String, Types::Integer);
mapTest.insert("One", 1);
mapTest.insert("Two", 2);
enumerator = mapTest.getEnumerator();
while (enumerator. moveNext())
{
info(strfmt("Key - %1 , Value - %2.",enumerator.currentKey(), enumerator.currentValue()));
}
}
Output:- Key - One , Value - 1.
Key - Two , Value - 2.
8) Difference between Containers and Temp tables
· Data
in containers are stored and retrieved sequentially, but a temporary
table enables you to define indexes to speed up data retrieval.
· Containers
provide slower data access if you are working with many records.
However, if you are working with only a few records, use a container.
· Another
important difference between temporary tables and containers is how
they are used in method calls. When you pass a temporary table into a
method call, it is passed by reference. Containers are passed by value.
· When
a variable is passed by reference, only a pointer to the object is
passed into the method. When a variable is passed by value, a new copy
of the variable is passed into the method. If the computer has a limited
amount of memory, it might start swapping memory to disk, slowing down
application execution. When you pass a variable into a method, a
temporary table may provide better performance than a container.
9) Code profier
The
Code Profiler measures the execution time of individual lines of code.
Use this tool to find performance bottlenecks and to help understand
code that was developed by others.
Dev Work space > Tools > Code profiler
If you click on Profile Run button, call tree and profile lines will be there
10) Maps (AOT Element)
Maps
define X++ elements that wrap table objects at run time. With a map,
you associate a map field with a field in one or more tables. This
enables you to use the same field name to access fields with different
names but the same data type in different tables. Map methods enable you
to create or modify methods that act on the map fields.
A
table can be accessed through more than one map. Typically, if more
than one map accesses the same table, each map accesses different
subsets of fields in the table.Maps don't define database objects and so they aren't synchronized with the database.
The benefits of maps include:
Simplicity -
maps provide a single interface to fields in multiple tables. This
means that any object referencing the map field can be used against
multiple tables without changing any field names.
Consistency -
table fields with varying names can be accessed in code in a consistent
manner. For example by using a map, fields named Zip in one table,
ZipCode in another, and PostalCode in yet another table can all be
accessed by the name ZipCode.
Code reuse - a
map method enables you to add code that runs against the map fields. A
single map method prevents the duplication of methods and code on each
table.
An
example of a map in Microsoft Dynamics AX is the Address map, which can
be used to access fields in two tables (among others) called Address
and CustVendTransportPointLine. This enables developers to use one
Address map object to access common address fields and methods.
Map
Elements: In Microsoft Dynamics AX, maps are located in the Application
Object Tree (AOT) under the Data Dictionary\Maps node. Each map has
four primary elements:
- Fields
- Field Groups
- Mappings
- Methods
Fields:
The Fields node contains the map field elements. Each field must be the
same data type as the field to which it's associated. Use the
ExtendedDataType property to specify the map field's data type if the
map field is associated with a table field that's based on an extended
data type.
Field Groups:
The Field Groups node contains field groups that group together fields
that logically belong together. Field groups in maps work the same way
they do in tables. For more information about field groups, see Best
Practices for Field Groups, Defining Field Groups, and How to: Create a
Field Group.
Mappings: The
Mappings node is where the map fields are associated with table fields.
Directly under the Mappings node are the MappingTable objects. Each
MappingTable object specifies a table that the map is associated with.
Under the MappingTable object are the field mappings that associate a map field
with a table field. If a field exists in the map with no associated
field in a particular table just leave the MapFieldTo property blank.
Methods:
This node displays all the methods available from a map. In this node
you can add a new method or you can override methods on the xRecord
kernel class and add your own code.
Map
methods are useful because code that acts on the map fields can be
encapsulated in a map method instead of being in multiple table methods. For example, the
AddressMap has a formatAddress method that formats the address
consistently whether the map references the Address table or the
CustTable table.
11) Temp Tables
From
a developer's perspective, temporary tables store data in the same way
as normal physical tables, except that the data is automatically dropped
when no longer required.
They are useful in two common situations
1. As the datasource for a form or report, where the original data is too complex to be easily queried.
2. As temporary storage during complicated processing, to hold the results midway through the process.
Prior to Dynamics Ax version Ax 2012, only one type of temporary table was available. In Ax 2012, however, the Temporary property on tables was replaced with a new property: TableType, which has three possible values:
§ Regular - a standard physical table
§ InMemory -
the type of temporary table which existed in the previous versions of
Dynamics Ax. Such tables are held in memory and written to a local disk
file once they grow beyond a certain point
§ TempDB - a new option in Ax 2012. They are "physical" temporary tables held in the SQL Server database.
The new TempDB tables operate in a similar manner to InMemory tables but support more features from standard physical tables:
§ More powerful joins with physical tables are possible, and are properly supported by the database
§ Can be per-company or global
Support for normal tts transactions
No comments:
Post a Comment