Цитата:
Сообщение от
Blog bot
Here is a small project for AX 2012
X++:
if(_record1.TableId != _record2.TableId)
{
error(strFmt('Both records are supposed to be of the same table type!'));
}
В 2012-й с учетом наследования таблиц такого сравнения уже недостаточно, потому что на вход могут подать два буфера родительской таблицы, которые содержат записи из разных производных таблиц, и тогда простое сравнение по полям будет некорректно.
Цитата:
Сообщение от
Blog bot
X++:
// create the list of all the fields in the table
for (i = dictTable.fieldCnt(); i; i--)
{
fieldId = dictTable.fieldCnt2Id(i);
dictField = new DictField(dictTable.id(), fieldId);
list.addEnd([fieldId, fieldId2name(dictTable.id(), fieldId)]);
}
А вот ни разу это не даст полный список полей в случае с таблицей в иерархии наследования. Нужно еще проверить, есть ли у нее родительская таблица, и при необходимости дополнить список ее полями, и так - до корневой таблицы в иерархии. См., например, \Classes\SysDictField\findFieldById. Еще непонятно, почему было не воспользоваться dictField.name().