|
![]() |
#1 |
Модератор
|
Кстати, а случайно нет хранимой процедуры типа "CheckRecId" или "FixRecId"?
С Уважением, Георгий |
|
![]() |
#2 |
Участник
|
Хочется обойтись средствами самой АХ. Будем считать что нет доступа к БД.
А как теперь в AX4 сбросить кеш номеров? Половину функций поубирали из SystemSequence |
|
![]() |
#3 |
MCITP
|
![]() Цитата:
(на уровне идеи - реализовать не сложно, как мне кажеться) ![]()
__________________
Zhirenkov Vitaly |
|
![]() |
#4 |
Участник
|
Для АХ 4.0 :
1. Заходим в АХ монопольно. 2. Создаем класс, запускаемый на сервере. 3. Создаем в нем метод main и вносим в него имя нужной таблицы : X++: #define.TableName("MyTable") public static void main(Args _args) { Connection con; Statement stmt; SqlStatementExecutePermission ssep; SqlDictionary sqlDictionary; str sqlStr; int result; ; con = new Connection(); stmt = con.createStatement(); select firstonly sqlDictionary where sqlDictionary.TabId == tablenum(#TableName) && !sqlDictionary.fieldId; if (sqlDictionary) { ttsbegin; sqlStr = "UPDATE SystemSequences \n"; sqlStr += "SET NextVal = (SELECT MAX(RecID) FROM " + sqlDictionary.sqlName + " WITH (TABLOCK)) + 1 \n"; sqlStr += "WHERE DataAreaId = 'dat' AND Id = -1 AND TabId = " + int642str(tablenum(#TableName)) + " \n"; ssep = new SqlStatementExecutePermission(sqlStr); ssep.assert(); result = stmt.executeUpdate(sqlStr); CodeAccessPermission::revertAssert(); ttscommit; } } 5. Перезапускаем АОС. 6. Проверяем на всякий случай присвоение нового RecId с помощью вставки строки. PS. Если нет уверенности, то сначала "тренируемся на кошках" ![]() |
|
|
За это сообщение автора поблагодарили: Logger (2), Poleax (2), AvrDen (1). |