В ходе проверки приобретения нескольких ОС (МОС) на версии AX 2012 R3 столкнулся с ошибкой при проверке строк закупки. Закупается 5 штук, например, ноутбуков стоимостью 25000 каждый. Подтверждаю заказ на покупку и "Количество ОС для номенклатуры не соотвествует количеству указанных инвентарных номеров" (орфография - фиг с ней).
Кто-то добрый в таблице RAssetPurchTrans организовал следующую проверку (метод checkBeforePost()):
X++:
if (! _line.Category &&
localAcquisitionPrice <= rAssetParameters.LowCostAmountLimit)
{
if (RAssetPurchTrans::exist(_line))
{
return checkFailed("@GLS116219");
}
return true;
}
Проверка на принадлежность категории закупок спорная, но бог бы с ней. При проверке совпадения количества закупаемых ОС (МОС) и количества связанных карточек используется метод exist() !!!:
X++:
public static boolean exist(Common _common)
{
return (select firstonly rassetPurchTrans
where rassetPurchTrans.TableRecId == _common.RecId &&
rassetPurchTrans.TableTableId == _common.TableId).RecId != 0;
}
Эта же проверка используется и при покупке ОС (стоимость поднял до 50000).
Проверять надо не наличие записей, а на совпадение количества в строке покупки с количеством записей в таблице RAssetPurchTrans, связанных со строкой.
(интересно, кто-нибудь тестировал процесс покупки ОС в российском подразделении?)