Предпочитаю вариант 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