Показать сообщение отдельно
Старый 02.02.2017, 13:38   #1  
KiselevSA is offline
KiselevSA
Злыдни
Аватар для KiselevSA
Злыдни
Лучший по профессии 2015
 
958 / 333 (13) ++++++
Регистрация: 25.01.2002
Адрес: Москва
Покупка нескольких ОС (ошибка)
В ходе проверки приобретения нескольких ОС (МОС) на версии 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, связанных со строкой.
(интересно, кто-нибудь тестировал процесс покупки ОС в российском подразделении?)
__________________
люди...считают, что если техника не ломается, то ее не нужно ремонтировать. Инженеры считают, что если она не ломается, то нуждается в совершенствовании.