Тема: Баг inventTable
Показать сообщение отдельно
Старый 19.03.2009, 16:38   #15  
Eldar9x is offline
Eldar9x
MCTS
Аватар для Eldar9x
Oracle
MCBMSS
 
1,064 / 166 (8) ++++++
Регистрация: 29.09.2006
Адрес: Казань
Цитата:
Как вы его использовали ?
X++:
 inventTable = null;
        inventTable.clear();
        inventTable.initValue();

inventTable.disableCache(true) 
        if (InventTable::exist(sCode))
             throw error(strfmt("Запись существует", sCode));
есть подозрение, что если перенести это в InventTable::exist (что, разумеется делать, не стоит)
или делать запрос по курсору inventTable прямо в методе, то это тоже сработает. Завтра проверю.

Цитата:
Не думаю, что это некрасиво. В стандарте достаточно мест, где запись выбирается для обновления, хотя затем никакого обновления не происходит. Насколько я понимаю, именно для того, чтобы получать актуальную версию, в не зависимости от того правильно ли отрабатывает кэш или нет.

Для примера можно посмотреть классы работы с журналами главной книги - ledgerJournalEngine - например.
не только поэтому. Пример: Проверяются два поля. Соответственно нужно два курсора. Если при проверке окажется, что выбралась одна и та же запись, получим блокировку. Не проверял, но рисковать не хочется.

Последний раз редактировалось Eldar9x; 19.03.2009 в 17:04.