Показать сообщение отдельно
Старый 27.02.2013, 12:33   #1  
user_ax is offline
user_ax
Участник
Аватар для user_ax
 
599 / 39 (3) +++
Регистрация: 07.10.2012
Адрес: ZP
:( Условия в запросе sql в аксапте
Поставлена задача модифицировать запрос, который генерирует отчёт Свод дебиторской/кредиторской задолженности.
Нужно, если выборка идёт из журнала накладных(LedgerjournalTable.JournalType = 10), вместо поля RcontractAccount выводить поле LedgerJournalTrans.PaymPurpose_ZTR.

Нашёл класс, который генерирует этот отчёт. В создании отчёта(createdQuery), где есть большой запрос, который, я так понимаю, и генерирует сам отчёт, нашёл блок с условиями и добавил туда свои условия. Проблема в том, что если моё условие добавить в конец блока, метод возвращает false и отчёт не создаётся(будет throw), а если условие поставить посредине блока - пишет. что неверное названия поля PaymPurpose_ZTR. Но! Такое поле есть, проверено.
Подскажите пожалуйста, в какую сторону копать. Вроде такая простая задача и столько стопоров...первый раз просто столкнулся с sql -запросами в аксапте подобного вида..

Условие:

X++:
 case
            when SubjectOfAgreement_ZTR != '' then SubjectOfAgreement_ZTR
            when (LedgerjournalTrans.BankCentralBankPurposeText is not null and LedgerjournalTrans.BankCentralBankPurposeText != '' and  Journaltype = 4)
                then LedgerjournalTrans.BankCentralBankPurposeText
                  --->3780 26.02.2013
          when (LedgerJournalTable.Journaltype = 10 and LedgerjournalTrans.PaymPurpose_ZTR is not null)
           then LedgerjournalTrans.PaymPurpose_ZTR
          --<-
            when (LedgerjournalTrans.Txt is not null and LedgerjournalTrans.Txt != '' and (Journaltype = 0 or Journaltype = 45))
                then custtrans.Txt
            when (substring(rContractTable.RContractSubject,1,1000) is not null and substring(rContractTable.RContractSubject,1,1000) != '')  then substring(rContractTable.RContractSubject,1,1000)

            else ''
        end as RContractSubject,
" + @"
это в select, ниже ещё insert есть

X++:
case
            when SubjectOfAgreement_ZTR != '' then SubjectOfAgreement_ZTR
                  --->3780 26.02.2013
         when (LedgerJournalTable.Journaltype = 10 and LedgerjournalTrans.PaymPurpose_ZTR is not null)
         then LedgerjournalTrans.PaymPurpose_ZTR
          --<-
            when (LedgerjournalTrans.Txt is not null and LedgerjournalTrans.Txt != '' /*and (Journaltype = 0 or Journaltype = 45)*/)
                then custtrans.Txt
            when (substring(rContractTable.RContractSubject,1,1000) is not null and substring(rContractTable.RContractSubject,1,1000) != '')  then substring(rContractTable.RContractSubject,1,1000)

            else ''
        end as RContractSubject,
DAX 2009, 5.0.1500, ,SQL Server 2008.

Буду благодарен за любые ответы.