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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 21.07.2010, 11:52   #1  
Silphidae is offline
Silphidae
Участник
 
96 / 15 (1) ++
Регистрация: 17.11.2008
Извиняюсь, что не сразу указал про фильтр по счету ГК =)

Я считаю, например, по клиенту 2545 по 30.06.2010 по счету 76.20.00. Этому счету сейчас в системе соответствует профиль разноски "76.20". Так вот сумма
X++:
select sum(AmountMST) from custTrans 
where custTrans.AccountNum == "2545" 
   && custTrans.PostingProfile == "76.20"  
        && custTrans.TransDate <= str2date("30.06.2010", 123)
получается -300, а в ОСВ конечное сальдо +300.

А помощь мне нужна, скорее всего, с кодом =)
Старый 21.07.2010, 12:13   #2  
sukhanchik is offline
sukhanchik
Administrator
Аватар для sukhanchik
MCBMSS
Злыдни
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,342 / 3563 (125) ++++++++++
Регистрация: 13.06.2004
Адрес: Москва
ОСВ по клиенту когда строится - то берется текущий профиль разноски клиента. Когда берется сумма по CustTrans - то берется профиль разноски который был по факту.
Т.е. если "в процессе жизненного пути" в профиле разноски меняли счет ГК или у клиента меняли профиль разноски - то все исторические проводки в ОСВ (до изменений) отобразятся как будто эти изменения были с самого начала.
В то время как в CustTrans "все ходы записаны" и коверкания истории не будет
__________________
Возможно сделать все. Вопрос времени
За это сообщение автора поблагодарили: Ivanhoe (-1), -xXx- (1).
Старый 21.07.2010, 12:31   #3  
Silphidae is offline
Silphidae
Участник
 
96 / 15 (1) ++
Регистрация: 17.11.2008
Да я понимаю, что всему виной баловство пользователей с настройками профилей разноски.
Подскажите, все же, пожалуйста, как считать сальдо так, чтобы оно сходилось с конечным сальдо по ОСВ?
Старый 21.07.2010, 12:40   #4  
sukhanchik is offline
sukhanchik
Administrator
Аватар для sukhanchik
MCBMSS
Злыдни
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,342 / 3563 (125) ++++++++++
Регистрация: 13.06.2004
Адрес: Москва
Цитата:
Сообщение от Silphidae Посмотреть сообщение
Да я понимаю, что всему виной баловство пользователей с настройками профилей разноски.
Подскажите, все же, пожалуйста, как считать сальдо так, чтобы оно сходилось с конечным сальдо по ОСВ?
2 варианта:
Правильный: Не смотреть на ОСВ - т.к. там (если меняли настройки профилей разноски) заведомо неверные данные. Если по клиенту сделаны 5 проводок по 62 счету и 10 - по 76-му, то неверно считать что все 15 проводок сделаны действительно по 76-му счету (или по 62-му).

Неправильный: Также как считает его ОСВ. Т.е. считать, что все проводки сделаны по профилям разноски с текущими настройками. Если при вызове ОСВ Вы ставите фильтр по счету ГК еще - то значит нужно отсекать записи в CustTrans, которым соответствуют записи в LedgerTrans с другим счетом ГК
__________________
Возможно сделать все. Вопрос времени

Последний раз редактировалось sukhanchik; 21.07.2010 в 12:44.
Старый 21.07.2010, 12:44   #5  
Zick-Zibn is offline
Zick-Zibn
Участник
 
78 / 38 (2) +++
Регистрация: 28.05.2004
Адрес: Moscow
Добавьте в запрос таблицу LedgerTrans.
Старый 21.07.2010, 13:04   #6  
Silphidae is offline
Silphidae
Участник
 
96 / 15 (1) ++
Регистрация: 17.11.2008
Цитата:
Неправильный: Также как считает его ОСВ. Т.е. считать, что все проводки сделаны по профилям разноски с текущими настройками. Если при вызове ОСВ Вы ставите фильтр по счету ГК еще - то значит нужно отсекать записи в CustTrans, которым соответствуют записи в LedgerTrans с другим счетом ГК
Да, мне нужне неправильный вариант, лишь бы сходилось с ОСВ. Но проблема в том, что однозначной связи между CustTrans и LedgerTrans нет.

Получается какая-то ерунда типа:
X++:
while select custTrans 
where custTrans.AccountNum == "2545" 
   && custTrans.PostingProfile == "76.20"  
        && custTrans.TransDate <= 30\06\2010
{
     select firstonly ledgerTrans
          where ledgerTrans.AccountNum == "76.20.00"
              && ledgerTrans.Voucher == custTrans.Voucher
              && ledgerTrans.Dimension == custTrans.Dimension;
     if(ledgerTrans.recId)
          saldo += custTrans.AmountMST;
}
Старый 21.07.2010, 13:21   #7  
sukhanchik is offline
sukhanchik
Administrator
Аватар для sukhanchik
MCBMSS
Злыдни
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,342 / 3563 (125) ++++++++++
Регистрация: 13.06.2004
Адрес: Москва
Цитата:
Сообщение от Silphidae Посмотреть сообщение
Но проблема в том, что однозначной связи между CustTrans и LedgerTrans нет.
Однозначной нет. Но это не значит что ее вообще нет.

X++:
while select custTrans 
where custTrans.AccountNum == "2545" 
//   && custTrans.PostingProfile == "76.20"  
        && custTrans.TransDate <= 30\06\2010
{
     select firstonly ledgerTrans
          where ledgerTrans.AccountNum == "76.20.00"
              && ledgerTrans.Voucher == custTrans.Voucher
              && ledgerTrans.TransDate == custTrans.TransDate ;
     if(ledgerTrans.recId) // Это условие лишнее - запись есть всегда
          saldo += custTrans.AmountMST;
}
Можно это переписать сразу в джойн. Только убедитесь что у Вас разным хоз операциям соответствуют разные значения поля Voucher.
Например, так:
X++:
select sum(AmountMST) from custTrans 
where custTrans.AccountNum == "2545" 
        && custTrans.TransDate <= 30\06\2010
exists join ledgerTrans
      where ledgerTrans.AccountNum == "76.20.00" &&
               ledgerTrans.Voucher == custTrans.Voucher &&
               ledgerTrans.TransDate == custTrans.TransDate;
__________________
Возможно сделать все. Вопрос времени

Последний раз редактировалось sukhanchik; 21.07.2010 в 13:24.
За это сообщение автора поблагодарили: Silphidae (1).
Теги
как правильно, клиент, оборотно-сальдовая ведомость, осв, полезное, расчеты с клиентами

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
DAX 4.0 Ген. фин. отчетов - Активное сальдо (дебет) и Сальдо дебет - в чем разница? Aleks_K DAX: Функционал 5 17.01.2008 01:47
Налоговая проводка, не увеличивающая сальдо по клиенту cherv DAX: Функционал 7 12.12.2006 12:35
Сальдо по валютам - не сальдо! max_woody_ru DAX: Функционал 19 15.12.2004 17:04
Как узнать сальдо по клиенту... soin DAX: Программирование 1 12.07.2004 17:06
Как посмотреть расчетную дату поставки клиенту? spy DAX: Функционал 3 08.08.2003 09:25

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

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

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