So this can be done by updating a query method init of the data source on which grid is based:
//original data source
qbds = DataSource_ds.query().dataSourceTable(tableNum(DataSourceTable));
qbds2 = qbds.addDataSource(tableNum(OtherTable));
qbdsn = qbdsn-1.addDataSource(tableNum(OtherTableN));
You know those kind of forms where you can use buttons to order records in the right position?
It is quite easy to replicate. It won’t work for all solutions though,
Example of the standard code is a WHSLocDirTable form.
To implement this solution you would have to make changes to the source table ( Add additional field, index, field group , methods for update , insert and delete, as well as moving logic,)
add changes to the the form ( additional field, buttons for up and down and related code, as well as make changes to init method of the form ( to sort by position) and some changes that will have to be implemented on the data source. )
Which stops you from assigning worker to the user ( this happens usually after migrations of data or something similar)
static void DelConBetweenNotExistWorkerandUser(Args _args)
while select forUpdate dirPersonUser notExists join UserInfo
where DirPersonUser.User == userinfo.id
info ( DirPerson::find(dirPersonUser.PersonParty).Name);
I think one of the easier methods would be to run this job, which will show number of all customers, and customer with Name Alias defined.
static void AmountOfCustomersWithNAmeAlias(Args _args)
int counter1, counter2;
while select CustTable
info (strFmt(“Counter1 %1, counter2 %2”,counter1, counter2));
In my case I was looking for 2 U letters anywhere in the name or the short name of the company.
static void Job107(Args _args)
TextBuffer companyShort = new TextBuffer();
TextBuffer companyName = new TextBuffer();
if (companyName.find(‘u.*u’) ||companyShort.find(‘u.*u’))
Nice links to check regexp stuff : http://www.zytrax.com/tech/web/regex.htm
And online editor to check if you were right: https://regex101.com/
When debugging on server do not forget to check if the Visual Studio Remote Debugging Monitor was run.
If not find it here:
Program Files\Microsoft Visual Studio 1x.0\Common7\IDE\Remote Debugger\x86\msvsmon.exe
Program Files\Microsoft Visual Studio 1x.0\Common7\IDE\Remote Debugger\x64\msvsmon.exe
and run it as administrator
So the issue was that I was supposed to create bunch of methods ( like parm) , when I knew the table fields, and where they had really similar code.
Instead doing that manually I have created a following job. Hope it helps 🙂
static void aka_createDetermineMethods(Args _args)
TreeNode tnclass, tntable,tnfield;
str code = "protected %1 %2()\n"+
"//overwritten in sub classes\n"+
" return '%3';\n"+
tnClass = TreeNode::findNode(@"\Classes\[class to add methods]");
tntable = TreeNode::findNode(@"\Data Dictionary\Tables\CustTable\Fields");
tnfield = tntable.AOTfirstChild();
name = "parm"+tnfield.treeNodeName();
tnMethod = tnClass.AOTfindChild(name);
tnMethod = tnClass.AOTadd(name);
tnMethod.AOTsetSource(strFmt(code, tnfield.AOTgetProperty("ExtendedDataType"), name,name));
tnfield = tnfield.AOTnextSibling();
If you have faced the similar situation using Microsoft Dynamics AX, do not worry as there are few solutions that may help you. Sometimes there are even less time consuming than the debugging in server itself.
One of the most favourite ones is to enter all data in the file, and than be able to trace necessary data. you Can find example below
fileName = @"\\c:\temp\sometext.txt";
perm = new FileIoPermission(fileName, 'W');
file = new AsciiIo(fileName, 'W');
//super smart code that needs debuggin
file.writeRaw("Super secret value to export");
//some other code
file = null;
When you have name of the enum and you know integer of the value that you want to display.
dictEnum = new DictEnum(enumName2Id(“NoYes”));
info( strFmt(“%1”, dictEnum.index2Label(1)));