Сообщение от
Slava Chernenko
Наткнулся на ошибку, полез смотреть откуда ноги растут, оказалось так всегда было, в смысле в SYS слое такой код.
AX 2009, EmplTable form, datasource EmplTable write():
X++:
public void write()
{
.....
ttsbegin;
......
if (emplTable.PartyId && dirPartyTable.Name && !DirPartyTable::exist(emplTable.PartyId))
{
.......
if (dirPartyTable.validateWrite())
{
// Create a new DirPartyTable row.
dirPartyTable.write();
lastNewUnusedId = "";
}
else
{
// Abort the transaction.
ttsabort;
}
}
else if (emplTable.PartyId && dirPartyTable.Name && dirPartyTableChanged && DirPartyTable::exist(emplTable.PartyId))
{
if (dirPartyTable.validateWrite())
{
// Update the existing DirPartyTable row.
dirPartyTable.write();
}
else
{
// Abort the transaction.
ttsabort;
}
}
super();
.....
ttscommit;
}
Проблема в комбинации ttsabort в середине кода и ttscommit в конце.
Интересно, куда этот код разползся в следующих версиях и выжил ли в AX 7...