![]() |
#1 |
Участник
|
Ошибка поиска цены в стандарте AX2012(все версии)
Провел сегодня увлекательный день отлаживая один интерестный баг. Периодически, у клиента пропадали значения цен для нескольких номенклатур в выгрузке. Причем повторить они это не могли
Оказалось что в методе поиска цены присутствует интерестный баг, который повторяется только при использовании кеширования цен и при условии что у цены стоит галка PriceDiscTable\Fields\SearchAgain(Find next) Т.е. найденная цена сохраняется путем присваивания курсоров, а дальше когда нет кеша, этот же курсор учавствует в другом поиске, что автоматически сбивает сохраненную переменную. При последующих запусках значение уже достается из кеша, и ошибка не воспроизводится В последнем CU13 баг присутсвует Решение довольно простое(в D365FO уже поправлено), заменить выделенную строчку на следующее X++: actualPriceTable = priceDiscTable.data(); Тестовый пример ниже(но должны быть данные). Так что если используете галку SearchAgain, советую проверить свои приложения ![]() X++: PriceDisc priceDiscLocal; classFactory.globalObjectCache().clear('PriceDisc:FindPrice'); priceDiscLocal = PriceDisc::newFromItem("WEB-RENCRMBLK", inventDim::findOrCreateBlank(), "EACH", 1, "USAWSTORE02", "USD" ); priceDiscLocal.findPrice("USA_WEB"); info(strFmt("%1", priceDiscLocal.priceTable().RecId)); |
|
|
За это сообщение автора поблагодарили: Vadik (1), raz (5), Manner (1), S.Kuskov (5), Pandasama (2), Capodastr (1). |
|
|