Показать сообщение отдельно
Старый 05.10.2006, 11:57   #1  
Deep Dreamer is offline
Deep Dreamer
Участник
 
76 / 25 (1) +++
Регистрация: 05.03.2004
Адрес: Москва
Нашёл баг, причем очень похоже на баг ядра (SP5 FP2 KR2)
Работаю в трехзвенке. Версия приложения SP5 KR2 FP2 (Build #14).
Открываем справочник номенклатуры, создаём новую, на закладке количество (Склад) ставим единицу измерения. Начинается проверка в таблице InventTableModule, которая смотрит были ли по этой номенклатуре открытые проводки. И если были - не даёт менять. Для этого вызывается метод inventTrans :: openTransactionsExist(), в котором выполняется вот какой запрос:

PHP код:
       select inventTrans
            index hint itemIdx
            where inventTrans
.itemId        == _itemId &&
                  
inventTrans.StatusIssue   == StatusIssue::QuotationIssue
        exists join smmQuotationTable
            where smmQuotationTable
.QuotationId == inventTrans.TransRefId &&
                
smmQuotationTable.QuotationStatus == smmQuotationStatus::InProcess
Приводящий вот к какой ошибке:

Невозможно выбрать запись в "Складские проводки" ("InventTrans")
Временные таблицы должны быть вложенными (inner), когда вы объединяете их оператором join с постоянными таблицами.

Казалось бы всё ясно... Но!
Обе таблицы НЕ являются временными! Это во-первых.
Таблица smmQuotationTable относится к модулю CRM, который в нашем случае не включен, и, в принципе, при попытке открыть её говорит "Недостаточно прав". Это во-вторых.
И, что самое интересное, в двухзвенке этого глюка нет!!! Это в-третьих.
Аналогичные действия в SP3 и других версиях к таким ошибкам не приводят. Это в-четвёртых.

Из всего вышесказанного возникает предположение, что в SP5 KR2 в трёхзвенке неправильно обрабатываются securityKeys на таблицах.

Что думает по этому поводу AxСообщество?