AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 18.10.2013, 10:22   #1  
matew is offline
matew
Участник
 
37 / 10 (1) +
Регистрация: 10.07.2006
Адрес: Москва
Поиск проводки ГК по сумме с корреспонденцией
MS DAx 2009, KernelVersion: 5.0.1500.6491
MS SQL Server 2008 R2

Есть задача: найти проводку с корреспондирующей проводкой, по определенным условиям.
а) Запрос такой:

X++:
LedgerTrans             ledgerTrans, ledgerTransCorr;
AmountCur               amountCur = 36809351.98;

select ledgerTrans
    where ledgerTrans.Voucher    == "ОСЖ002243"
        && ledgerTrans.TransDate  == 30\09\2011
        && ledgerTrans.AmountCur == amountCur
        && (ledgerTrans.AccountNum == "41.10159")
    exists join ledgerTransCorr
          where ledgerTransCorr.BondBatch_RU      == ledgerTrans.BondBatch_RU
              && ledgerTransCorr.BondBatchTrans_RU == ledgerTrans.BondBatchTrans_RU
              && ledgerTransCorr.Crediting         != ledgerTrans.Crediting
              && (ledgerTransCorr.AccountNum == "00.010");
Запрос проводку не находит.

б) Если выполнить запрос без поиска корреспонденции:
X++:
select ledgerTrans
    where ledgerTrans.Voucher    == "ОСЖ002243"
               && ledgerTrans.TransDate  == 30\09\2011
               && ledgerTrans.AmountCur == amountCur
               && (ledgerTrans.AccountNum == "41.10159");
Этот запрос находит проводку X.

в) Если выполнить запрос без жесткого условия по сумме:

X++:
select ledgerTrans
      where ledgerTrans.Voucher    == "ОСЖ002243"
          && ledgerTrans.TransDate  == 30\09\2011
          && ledgerTrans.AmountCur >=  amountCur - 0.0001
          && ledgerTrans.AmountCur <=  amountCur + 0.0001
          //&& ledgerTrans.AmountCur == amountCur
          && (ledgerTrans.AccountNum == "41.10159")
      exists join ledgerTransCorr
            where ledgerTransCorr.BondBatch_RU      == ledgerTrans.BondBatch_RU
                && ledgerTransCorr.BondBatchTrans_RU == ledgerTrans.BondBatchTrans_RU
                && ledgerTransCorr.Crediting         != ledgerTrans.Crediting
                && (ledgerTransCorr.AccountNum == "00.010")
                   ;
Этот запрос находит ту же самую проводку Х, что и в запросе б). То есть на самом деле есть 2 проводки по условиям запроса а). Сумму в БД проверял: 36809351.980000000000.

Получается система при запросе с 1 таблицей и с 2-мя по разному сравнивает суммы.
В чем может быть дело? У кого-нибудь есть какие-то соображения?
Старый 18.10.2013, 10:35   #2  
raz is offline
raz
NavAx
Аватар для raz
NavAx Club
Лучший по профессии 2014
Лучший по профессии 2009
 
1,494 / 1065 (38) ++++++++
Регистрация: 22.07.2003
Адрес: МО
Думаю надо посмотреть результат.

X++:
select ledgerTrans
      where ledgerTrans.Voucher    == "ОСЖ002243"
          && ledgerTrans.TransDate  == 30\09\2011
          && ledgerTrans.AmountCur >=  amountCur - 0.0001
          && ledgerTrans.AmountCur <=  amountCur + 0.0001
          //&& ledgerTrans.AmountCur == amountCur
          && (ledgerTrans.AccountNum == "41.10159")
      exists join ledgerTransCorr
            where ledgerTransCorr.BondBatch_RU      == ledgerTrans.BondBatch_RU
                && ledgerTransCorr.BondBatchTrans_RU == ledgerTrans.BondBatchTrans_RU
                && ledgerTransCorr.Crediting         != ledgerTrans.Crediting
                && (ledgerTransCorr.AccountNum == "00.010")
                   ;

print((ledgerTrans.AmountCur - amountCur)*1000);
pause;

Последний раз редактировалось raz; 18.10.2013 в 10:38.
Старый 18.10.2013, 11:48   #3  
matew is offline
matew
Участник
 
37 / 10 (1) +
Регистрация: 10.07.2006
Адрес: Москва
Результат = 0,00.

Интересно, что для проводок с другими суммами все работает, как надо.
И если в этих проводках подменить суммы, например на 36809351.33, то все работает.
Проблемы начинаются, если сумма больше 36809351.5.
Старый 18.10.2013, 12:00   #4  
raz is offline
raz
NavAx
Аватар для raz
NavAx Club
Лучший по профессии 2014
Лучший по профессии 2009
 
1,494 / 1065 (38) ++++++++
Регистрация: 22.07.2003
Адрес: МО
и все же стоит проверить в отладчике, наверняка в каком то знаке различаются.
Старый 18.10.2013, 12:08   #5  
Wamr is offline
Wamr
----------------
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
 
1,737 / 858 (32) +++++++
Регистрация: 15.01.2002
Адрес: Москва
Записей в блоге: 7
попробуйте повторить те же запросы на SQL
и посмотрите на результаты
Старый 18.10.2013, 13:59   #6  
BOAL is offline
BOAL
Участник
Аватар для BOAL
MCBMSS
Злыдни
1C
Лучший по профессии 2015
 
621 / 453 (17) +++++++
Регистрация: 28.04.2003
Адрес: Москва
Проводка чем пишется? Есть ли при разноске Currency:amount() к сумме?
Старый 22.10.2013, 09:32   #7  
matew is offline
matew
Участник
 
37 / 10 (1) +
Регистрация: 10.07.2006
Адрес: Москва
Цитата:
Сообщение от Wamr Посмотреть сообщение
попробуйте повторить те же запросы на SQL
и посмотрите на результаты
На SQL запрос со строгим равенством по сумме находит проводку.
Старый 22.10.2013, 09:58   #8  
matew is offline
matew
Участник
 
37 / 10 (1) +
Регистрация: 10.07.2006
Адрес: Москва
Цитата:
Сообщение от BOAL Посмотреть сообщение
Проводка чем пишется? Есть ли при разноске Currency:amount() к сумме?
Cумму в проводке уже менял "руками" именно на такую, которую ищу.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Заказы на перемещения и проводки в ГК в DAX2009 Starling DAX: Функционал 16 10.06.2009 11:43
По каким счетам формируются проводки в ГК при обработке накладной? matew DAX: Программирование 1 12.10.2007 13:30
По каким счетам формируются проводки в ГК при обработке накладной? matew DAX: Функционал 5 11.10.2007 17:50
Знак в форме ГК/Бухгалтерские проводки chel DAX: Функционал 7 11.03.2005 04:28
Проводки в ГК по производственному заказу xan DAX: Функционал 0 26.03.2003 14:37

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 19:09.