|
|
#1 |
|
MCITP
|
Затрудняюсь с позиционированием вопроса, пусть будет "Прочий".
![]() Просьба перенести при необходимости. Указанный в сабже метод на таблице (Версии 3.0 - 2009, вроде не менялось) X++: boolean checkCustAccount()
{
boolean ok = true;
;
if (this.CustAccount)
{
ok = LedgerTable::checkAllowPosting(this.CustAccount);
}
if (this.CustType != MarkupType::LedgerAccount && (this.CustType != MarkupType::Item || !PurchParameters::find().PostChargeAccount))
{
if (this.CustAccount)
ok = checkFailed("@SYS25165");
}
else
{
if (this.CustType != MarkupType::Item || !PurchParameters::find().PostChargeAccount)
if (!this.CustAccount)
ok = checkFailed("@SYS25989");
}
return ok;
}![]() Поясню: - В первый блок ( if (this.CustType != MarkupType::LedgerAccount && (this.CustType != MarkupType::Item || !PurchParameters::find().PostChargeAccount)) ) заходим, если тип Клиент/Поставщик, либо тип Номенклатура с НЕустановленной птичкой PostChargeAccount. В этом случае счёт задавать нельзя. С этим всё понятно. - Во второй блок (else) мы заходим соответсвенно в остальных случаях (Тип = Бух.Счёт либо тип Номенклатура с установленной птичкой). Но на горизонте появляется этот второй IF (if (this.CustType != MarkupType::Item || !PurchParameters::find().PostChargeAccount)), вторая часть которого вообще в данном случае бессмысленна, т.к. с неустановленной галкой при типе Номенклатура мы в этот блок в принципе не зайдём. Может конечно они ошиблись с отрицанием, но тогда весь этот IF во втором блоке - тавтология. Да и судя по соседнему методу checkCustType(), это не совсем верно... Вообщем не совсем понятно с точки зрения функционала, как правильно...
__________________
Zhirenkov Vitaly |
|
|