05.06.2008, 14:20 | #1 |
Участник
|
Ошибка в методе или я что-то не понимаю ?
Имеется стандартный метод класса - WMSJournalCheckPostReception.checkPalletZone
в строке 34 написано - X++: inventItemLocation = InventItemLocation::find(otherTrans.itemId, this.destinationInventLocationId(otherTrans)); X++: static InventItemLocation find(ItemId _itemId, InventDimId _inventDimId, boolean _forUpdate = false) Почему тогда компиляция не выдает ошибку ? Или я не понимаю как это работет ? |
|
05.06.2008, 14:32 | #2 |
MCTS
|
последняя переменная (_forUpdate) передается по умолчанию, поэтому не обязательна. Вторая переменная также стринговая, как и InventDimId.
|
|
05.06.2008, 14:33 | #3 |
Мрачный тип
|
В первом приближении - да хоть Voucher, главное что бы тип и размер совпали.
Оба созданы на основе примитивного string и , несмотря на разные родительские EDT(Num и SysGroup), имеют один и тот же размер. Хотя во втором приближении очевидна необходимость все-таки соблюсти строгость - не дай бог поменяют у одного из типов родительский EDT по размеру. Тогда начнется всякое интересное
__________________
Мы летаем, кружимся, нагоняем ужасы ... Последний раз редактировалось TasmanianDevil; 05.06.2008 в 14:40. |
|
05.06.2008, 14:34 | #4 |
Участник
|
3-й параметр - _forUpdate = false необязательный, и если не указан в вызове явно, инициализируется еще в загололовке метода InventItemLocation::find как false.
|
|
05.06.2008, 14:39 | #5 |
MCTS
|
Цитата:
P.S. Eldar9x, речь идет о том , что передается переменная типа c EDT InventLocationId, а принимается c EDT InventDimId - что вообще-то не есть хорошо
Цитата:
Вторая переменная также стринговая, как и InventDimId.
Цитата:
Оба созданы на основе примитивного string
Последний раз редактировалось Eldar9x; 05.06.2008 в 14:41. |
|
05.06.2008, 14:40 | #6 |
Участник
|
Там действительно ошибка. Проверки вообще не происходит, так как в итоге находится настройка для пустой аналитики, а в ней поле зоны хранения пустое, соответственно, не проверяется подходит ли зона.
А компилятор не ругается вполне понятно почему: и код склада и код аналитики имеют строковый формат. |
|
05.06.2008, 14:48 | #7 |
Участник
|
про 3-й параметр это понятно. Со 2-м вопрос!
То что они оба string - я тож так подумал, но логически - явный глюк! Что тогда туда передать - otherTrans.InventDimId ? |
|
05.06.2008, 15:02 | #8 |
Участник
|
В 5:
X++: inventDimTemp.data(otherTrans.inventDim()); inventDimTemp.InventLocationId = this.destinationInventLocationId(otherTrans); inventDimTemp.InventSiteId = ''; // No reason to default Site as InventLocation is unique across sites inventDimTemp = InventDim::findOrCreate(inventDimTemp); inventItemLocation = this.inventItemLocation(otherTrans, inventDimTemp); |
|