![]() |
#2 |
Участник
|
Я пользуюсь таким скриптом для AX 2012. Попробуйте применить его для AX 4 на тестовом приложении.
После исправлений, выполненных скриптом, перегрузите АОС. X++: protected void checkNextVal(boolean _fixNextVal = false) { SystemSequences systemSequences; Common record; while select forUpdate systemSequences where systemSequences.TabId != 0 { if (!(new SysDictTable(systemSequences.TabId))) continue; record = new SysDictTable(systemSequences.TabId).makeRecord(); new SkipAOSValidationPermission().assert(); record.skipAosValidation(true); select firstOnly crossCompany RecId from record where record.RecId >= systemSequences.NextVal; if (record.RecId) { warning(tableId2Name(systemSequences.TabId)); new SystemSequence().suspendRecIds(systemSequences.TabId); new SystemSequence().flushValues(systemSequences.TabId); if (_fixNextVal) { this.fixNextVal(systemSequences.TabId); } } CodeAccessPermission::revertAssert(); } } X++: protected void fixNextVal(TableId _tableId) { Connection dbConnection = new Connection(); str sqlStatement; Common record = new SysDictTable(_tableId).makeRecord(); select crossCompany maxOf(RecId) from record; sqlStatement = strFmt('update %1 set NextVal = %2 where TabId = %3', new SysDictTable(tableNum(SystemSequences)).name(DbBackend::Sql), int642str(record.RecId + 1), int2str(_tableId)); new SqlStatementExecutePermission(sqlStatement).assert(); dbConnection.createStatement().executeUpdate(sqlStatement); CodeAccessPermission::revertAssert(); } Последний раз редактировалось Morpheus; 27.05.2016 в 10:24. |
|
|
За это сообщение автора поблагодарили: AlGol (2). |
|
|