Показать сообщение отдельно
Старый 23.06.2011, 12:26   #2  
samolalex is offline
samolalex
Участник
Аватар для samolalex
Самостоятельные клиенты AX
 
259 / 107 (4) +++++
Регистрация: 18.06.2010
Адрес: Москва
Предпочитаю вариант 2:
X++:
    select firstonly paymentTrans
        where paymentTrans.AccountNum            == factureJour.CustVendInvoiceAccount
           && paymentTrans.Voucher               == factureJour.Voucher
           && paymentTrans.CurrencyCode          == factureJour.CurrencyCode
           && paymentTrans.PrepaymentFactureId_W == factureJour.FactureId
           && paymentTrans.Prepayment            == NoYes::Yes;
Использую данное оформление в силу таких факторов:
1) Более высокая читабельность кода;
2) Знаки && в начале каждого нового условия говорят о том, что данное условие является продолжением одного большого условия. Если же они стоят в конце, как в 1-м варианте, то снижается наглядность соединения условий. Данную привычку выработал, после прочтения книги Стива Макконелла "Секреты совершенного кода".

Третий пример я бы, скорее всего, оформил так:
X++:
while select bankClientPayment_RU
    where bankClientPayment_RU.RContractAccount
        notexists join RContractTable
            where ((RContractTable.RContractPartnerType == RContractPartnerType::Cust
                        && BankClientPayment_RU.PartnerType == ModuleCustVend::Cust)
                    ||(RContractTable.RContractPartnerType == RContractPartnerType::Vend
                        && BankClientPayment_RU.PartnerType == ModuleCustVend::Vend))
                  && RContractTable.RContractAccount == bankClientPayment_RU.RContractAccount
                  && RContractTable.RContractCode == bankClientPayment_RU.RContractCode
__________________
С уважением, Александр.

Последний раз редактировалось samolalex; 23.06.2011 в 12:30.