Цитата:
Как вы его использовали ?
X++:
inventTable = null;
inventTable.clear();
inventTable.initValue();
inventTable.disableCache(true)
if (InventTable::exist(sCode))
throw error(strfmt("Запись существует", sCode));

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