Влияние selectLocked(false) на возвращаемый курсор
Добрый день, коллеги!
Столкнулись с непонятным.
Имеем запись в SalesTable и поле в ней (поле добавленное, не из стандарта).
Визуально:
- Смотрим через обозреватель таблицы - видим значение в поле.
- Смотрим через форму - видим значение в поле.
- Смотрим через "Паспорт записи" - видим значение в поле.
В коде:
- Ищем запись через SalesTable::findRecId() - видим значение поля.
- Ищем запись через SalesTable::find() - не видим значение поля.
Раскопки привели к тому, что SalesTable::findRecId() не использует salesTable.selectLocked(). То есть, используется значение по-умолчанию (true). А вот SalesTable::find() использует, причём выставляет этот флаг равным false.
Имитация на уровне запроса SQL напрямую с NOLOCK и без этой инструкции всегда возвращают корректное значение поля (как и ожидается).
Кто-нибудь сталкивался в подобными странностями? И как их обойти?
__________________
MS Dynamics AX 2009
Kernel 5.0.1600.4110
Application 5.0.1500.6491
|