Do not move them, do not remove them, do not hide them from the screen. =)
Use the ExtendedProps and let Epicor do the magic for you, including which ones to disable and which ones to mark as ReadOnly.
Dont even change the Label (or was it the Grid Heading) on them, let Epicor do the magic for you.
edvUD100.dataView.Table.Columns["Key1"].ExtendedProperties["Caption"] = "Batch ID";
edvUD100A.dataView.Table.Columns["Key1"].ExtendedProperties["Caption"] = "Batch ID";
edvUD100.dataView.Table.Columns["Key2"].ExtendedProperties["IsHidden"] = true;
edvUD100.dataView.Table.Columns["Key2"].ExtendedProperties["ReadOnly"] = true;
edvUD100A.dataView.Table.Columns["Key2"].ExtendedProperties["IsHidden"] = true;
edvUD100A.dataView.Table.Columns["Key2"].ExtendedProperties["ReadOnly"] = true;
edvUD100.dataView.Table.Columns["Character01"].ExtendedProperties["Caption"] = "Batch Description";
Now if I have the Extended Prop set as ReadOnly, if I only fill out the Non-Readonly fields, it will say “hey, would you like a new record?” or it will even attempt to load the existing record, ignoring the other keys.
By not using ExtendedProps, you have to handle it on your own.
You know what happens in 10.2.300?
If your Label is -1000 or 1000 off screen, you get a Warning/Fail on Cosmetic Customization Maintenance. Because it no longer tolerates Intersections and labels being off screen… its REALLY ANNOYING!!! Having to “force validate” everything.