|
03.12.2008, 11:32 | #1 |
совсем зелен
|
RecordSortedList как проверить???
смотрю тут код...
transList = new RecordSortedList(tableNum(LedgerJournalTrans)); далее заполняются поля... transList.ins(journalTransLocal, true); в результате LedgerJournalTrans ничего не появляется...как проверить RecordSortedList отработал или нет??? |
|
03.12.2008, 11:36 | #2 |
Участник
|
найдите в коде RecordSortedList.insertDatabase()
|
|
03.12.2008, 11:38 | #3 |
совсем зелен
|
вродь нет такого...
|
|
03.12.2008, 11:46 | #4 |
MCITP
|
в коде нет?
тогда не отработает ))) Вставка происходит при вызове RecordSortedList.insertDatabase(). Также (если не ошибаюсь) периодически эта вставка происходит "пачками" до данного вызова, если набирается много данных. Эта тема пару раз уже обсуждалась на форуме - поищите.
__________________
Zhirenkov Vitaly |
|
03.12.2008, 11:43 | #5 |
Участник
|
тогда вставки в базу новых строк не произойдет
|
|
03.12.2008, 11:45 | #6 |
совсем зелен
|
ну понятно...тока если вставить такую строчку ругается что RecordSortedList должен быть отработан на сервере...
что я не так делаю??? |
|
03.12.2008, 12:05 | #7 |
MCITP
|
Цитата:
По смыслу этот объект и должнет быть на сервере - это правильно.
__________________
Zhirenkov Vitaly |
|
03.12.2008, 12:14 | #8 |
Участник
|
Цитата:
Может быть, проблема где-то здесь: Цитата:
RecordSortedList objects must be server-located before the insertDatabase method can be called. Otherwise, an exception is thrown.
|
|
03.12.2008, 12:18 | #9 |
MCITP
|
Цитата:
Не уверен. Но и не проверял.
__________________
Zhirenkov Vitaly |
|
03.12.2008, 12:28 | #10 |
Участник
|
Я тоже не проверял ))), но судя по описанию, RecordSortedList раньше вызова insertDatabase() записи вставлять не должна:
http://msdn.microsoft.com/en-us/libr...29(AX.10).aspx http://msdn.microsoft.com/en-us/libr...22(AX.10).aspx У второго явно указано: Цитата:
Records are inserted only when the kernel finds the time appropriate, but they are inserted no later than the call to the insertDatabase.
|
|
03.12.2008, 14:35 | #11 |
MCITP
|
Цитата:
Вопрос к ТопикСтартеру - а вы не забыли сделать в коде? X++: recordSortedList.sortOrder(...);
__________________
Zhirenkov Vitaly |
|
|
За это сообщение автора поблагодарили: coolibin (1). |
03.12.2008, 11:51 | #12 |
совсем зелен
|
да я поискал...не нашел ничего...толи искать не умею...толи смотрю не туда...
|
|
03.12.2008, 12:02 | #13 |
MCITP
|
__________________
Zhirenkov Vitaly |
|
03.12.2008, 12:02 | #14 |
совсем зелен
|
поможите человеки...я ж не знаю ничего...
|
|
03.12.2008, 12:03 | #15 |
MCTS
|
Цитата:
Remarks
The method will fall back to record-by-record insert, if (a) the table is not SQL stored, (b) the insert() method is overloaded, or (c) the tables includes memo- or container-fields. Also, a RecordSortedList must be server-located before insertDatabase() can be called, otherwise an exception is thrown. Example Below is an example of how to insert N, or in this case 3, records in one, single database operation. X++: { RecordSortedList recordSortedList; CustTable custTable; ; recordSortedList = new RecordSortedList(tablenum(CustTable)); recordSortedList.sortOrder(fieldnum(custTable,AccountNum)); ttsbegin; custTable.AccountNum = '1000'; // prepare record #1 for insertion custTable.CreditMax = 10000.0; recordSortedList.ins(custTable); custTable.AccountNum = '2000'; // prepare record #2 for insertion custTable.CreditMax = 500.0; recordSortedList.ins(custTable); custTable.AccountNum = 'N000'; // prepare record #N for insertion custTable.CreditMax = 9999999.9; recordSortedList.ins(custTable); recordSortedList.insertDatabase(); // all N records are inserted in one database operation ttscommit; } |
|
03.12.2008, 12:14 | #16 |
MCTS
|
Перенесите работу кода на сервер и всего делов.
|
|
03.12.2008, 12:34 | #17 |
MCTS
|
Цитата:
Я тоже не проверял ))), но судя по описанию, RecordSortedList раньше вызова insertDatabase() записи вставлять не должна:
insertDatabase |
|
03.12.2008, 14:16 | #18 |
Участник
|
Цитата:
Написал небольшой кусок для эксперимента : X++: static server void main( Args _args) { RecordSortedList recordSortedList ; CustTable custTable ; Counter counter ; ; recordSortedList = new RecordSortedList( tablenum( CustTable ) ); recordSortedList.sortOrder( fieldnum( custTable,AccountNum ) ) ; ttsbegin; for( counter = 1; counter <= 100; counter++ ) { custTable.AccountNum = strfmt( "Cust_%1", counter ) ; custTable.CreditMax = counter * 100.0 ; info( strfmt( "before recordSortedList.ins %1 record", counter ) ) ; recordSortedList.ins( custTable ) ; } info( 'before recordSortedList.insertDatabase' ) ; recordSortedList.insertDatabase() ; ttscommit; } |
|
03.12.2008, 13:26 | #19 |
совсем зелен
|
извиняюсь отвлекли...
что значит перенести на сервер??? я просто чайник в этих делах...нада разобраться почему не вносит записи в таблицу... полностью ошибка звучит так Ошибка: Невозможно создать запись в Строки журнала (LedgerJournalTrans). Чтобы использовать databaseInsert(), RecordSortedList должен быть обработан на сервере. ttsbegin и ttscommit ставил...ошибка та же... |
|
03.12.2008, 13:31 | #20 |
MCTS
|
Ну, например, если этот код у вас в статическом методе (static в определении метода), то дописать в определение
static server Это смотря, где код написан. Где он находится, в каком классе? Полность метод можете показать? |
|