15.06.2007, 15:08 | #1 |
MCTS
|
Поведение equal() метода в классе RunOn Server v3.0 SP4
Дано:
Трёхуровневая Аксапта v3.0 SP4 Класс WMSOrderTransSplit - разбиение строк в методе run() есть проверка: X++: select firstonly forupdate WMSOrderTransCopy index hint OrderIdx where WMSOrderTransCopy.orderId == WMSOrderTrans.orderId && WMSOrderTransCopy.itemId == WMSOrderTrans.itemId && WMSOrderTransCopy.recId == WMSOrderTrans.recId; if (!WMSOrderTransCopy || !bufCmp(WMSOrderTransCopy, WMSOrderTrans)) throw error("@SYS18447"); !WMSOrderTransCopy - не удалил ли пользователь строку перед разбиением !bufCmp(WMSOrderTransCopy, WMSOrderTrans) - не изменил ли пользователь строку перед разбиением Так вот bufCmp(...) в случае RunOn Server работает некорректно, а именно возвращает false, когда строка не была изменена. Иными словами - строка пришедшая в класс, и строка взятая в качестве эталона, для метода equal() понимаются как разные. Изменяя же свойство класса RunOn на Called from, метод equal() работает правильно. Как вариант, !bufCmp(WMSOrderTransCopy, WMSOrderTrans) можно попытаться заменить на WMSOrderTransCopy.xml() != WMSOrderTrans.xml() Причём такое поведение equal() характерно не только для таблицы WMSOrderTrans, но и для для других таблиц.
__________________
В глухомани, в лесу Несмотря на красу Дни проводит Лиса Патрикевна. Я никак не пойму Отчего, почему Не пускают куму На деревню |
|
|
За это сообщение автора поблагодарили: Logger (1). |
Теги |
ax3.0 |
|
|