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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 21.07.2010, 13:04   #1  
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   #2  
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).
Старый 21.07.2010, 13:57   #3  
Silphidae is offline
Silphidae
Участник
 
96 / 15 (1) ++
Регистрация: 17.11.2008
Спасибо большое.
Вот так совпадает с данными ОСВ:
X++:
select sum(AmountMST) from custTrans 
where custTrans.AccountNum == "2545" 
        && custTrans.TransDate <= 30\06\2010
        && custTrans.PostingProfile == "76.20" 
exists join ledgerTrans
      where ledgerTrans.AccountNum == "76.20.00" &&
               ledgerTrans.Voucher == custTrans.Voucher &&
               ledgerTrans.TransDate == custTrans.TransDate;
Поле correct можно не учитывать - там знаки сами проставлены в поле AmountMST (забавно наблюдать значения типа --300 или -+300), по крайней мере, у меня без учета этого поля сальдо совпадает с ОСВ. А вот PostingProfile все же нужен в фильтре по CustTrans - без него итоги не сходятся с ОСВ, видимо, есть операции по CustTrans с профилем отличным от "76.20", но разнесенные на 76.20.00.
Старый 21.07.2010, 14:44   #4  
sukhanchik is offline
sukhanchik
Administrator
Аватар для sukhanchik
MCBMSS
Злыдни
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,342 / 3563 (125) ++++++++++
Регистрация: 13.06.2004
Адрес: Москва
Цитата:
Сообщение от Silphidae Посмотреть сообщение
Поле correct можно не учитывать - там знаки сами проставлены в поле AmountMST (забавно наблюдать значения типа --300 или -+300)
А, ну да - точно
__________________
Возможно сделать все. Вопрос времени
Старый 22.07.2010, 10:47   #5  
novic is offline
novic
Axapta Retail User
Axapta Retail User
 
168 / 25 (0) +++
Регистрация: 14.04.2005
Можно попросить проектик отчета, если не жалко Делал недавно пободное - хотелось сравнить.
Старый 22.07.2010, 11:21   #6  
Silphidae is offline
Silphidae
Участник
 
96 / 15 (1) ++
Регистрация: 17.11.2008
Проектик во вложении. Там для вывода в эксель используется движок, написанный конторой, внедрявшей нам AX - его классы я не могу выложить без их согласия, извините.
Вложения
Тип файла: rar rep.rar (12.9 Кб, 155 просмотров)
За это сообщение автора поблагодарили: lev (1), novic (1).
Старый 28.07.2010, 12:38   #7  
novic is offline
novic
Axapta Retail User
Axapta Retail User
 
168 / 25 (0) +++
Регистрация: 14.04.2005
А как бы договор сюда еще пришить?

X++:
    select sum(AmountMST) from custTrans
    where custTrans.AccountNum == "165057137"
            && custTrans.TransDate <= 01\01\2010
            && custTrans.PostingProfile == "62.10.04"
    exists join ledgerTrans
          where ledgerTrans.AccountNum == "62.10.04" &&
                   ledgerTrans.Voucher == custTrans.Voucher &&
                   ledgerTrans.TransDate == custTrans.TransDate
    // так не получается
    join RContractTable
        where RContractTable.RContractPartnerCode == custTrans.AccountNum &&
              RContractTable.RContractAccount == '12КР002008';
Старый 28.07.2010, 13:48   #8  
novic is offline
novic
Axapta Retail User
Axapta Retail User
 
168 / 25 (0) +++
Регистрация: 14.04.2005
Кстати вот это не всегда совпадает с данными ОСВ

[QUOTE=Silphidae;228846]Спасибо большое.
Вот так совпадает с данными ОСВ:
X++:
select sum(AmountMST) from custTrans 
where custTrans.AccountNum == "2545" 
        && custTrans.TransDate <= 30\06\2010
        && custTrans.PostingProfile == "76.20" 
exists join ledgerTrans
      where ledgerTrans.AccountNum == "76.20.00" &&
               ledgerTrans.Voucher == custTrans.Voucher &&
               ledgerTrans.TransDate == custTrans.TransDate;
может пробежать в цикле custTrans.PostingProfile asc

что-то вроде
X++:
    while select custTransLoc
        order by PostingProfile asc
        where custTransLoc.AccountNum == "7713076301" &&
                custTransLoc.TransDate <= 01\01\2010
    {
        if( profile != custTransLoc.PostingProfile)
        {
            profile = custTransLoc.PostingProfile;

            select sum(AmountMST) from custTrans  
            where custTrans.AccountNum == "7713076301"
                    && custTrans.TransDate <= 01\01\2010
                    && custTrans.PostingProfile == profile
            exists join ledgerTrans
                  where ledgerTrans.AccountNum == profile
                           ledgerTrans.Voucher == custTrans.Voucher &&
                           ledgerTrans.TransDate == custTrans.TransDate;

            amount += custTrans.AmountMST;
        }
    }
Старый 29.07.2010, 12:23   #9  
novic is offline
novic
Axapta Retail User
Axapta Retail User
 
168 / 25 (0) +++
Регистрация: 14.04.2005
Кто-нибудь может сказать как оборотно-сальдовая ведомость считает сальдо на дату по договору.
ведь не так -
X++:
   select sum(AmountMST) from custTrans
    where custTrans.AccountNum == "165057137" &&
              custTrans.TransDate <= 01\01\2010   &&
             custTrans.PostingProfile == "62.10.04" &&
             custTrans.RContractCode == 'Группа' &&
             custTrans.RContractAccount == '12КР002008'
    exists join ledgerTrans
          where ledgerTrans.AccountNum == "62.10.04" &&
                   ledgerTrans.Voucher == custTrans.Voucher &&
                   ledgerTrans.TransDate == custTrans.TransDate;
AX 3.0 SP 4
Старый 29.07.2010, 13:57   #10  
zelen is offline
zelen
Участник
 
64 / 13 (1) ++
Регистрация: 08.11.2004
Адрес: г.Москва
Добрый день. В таблицах Cust\VendTrans есть поле LedgerAccount, в которое при разноске операций пишется счет ГК из профиля разноски. Можно построить запрос немного по-другому:
select sum(AmountMST) from custTrans
where custTrans.AccountNum == "165057137" &&
custTrans.TransDate < 01\01\2010 && //дату поставил < т.к.сальдо считаем
exists join ledgerTrans
where ledgerTrans.AccountNum == custTrans.LedgerAccount &&
ledgerTrans.Voucher == custTrans.Voucher &&
ledgerTrans.TransDate == custTrans.TransDate;
Старый 29.07.2010, 14:59   #11  
Silphidae is offline
Silphidae
Участник
 
96 / 15 (1) ++
Регистрация: 17.11.2008
Цитата:
Сообщение от zelen Посмотреть сообщение
В таблицах Cust\VendTrans есть поле LedgerAccount, в которое при разноске операций пишется счет ГК из профиля разноски.
В моей версии АХ 4.0 sp 2 таких полей нет.

Novic, да, Вы правы, случаются случаи, что одному счету ГК соответствуют несколько профилей разноски, тогда нужно делать так:
X++:
            while select PostingProfile from custLedgerAccounts group by PostingProfile
                where custLedgerAccounts.SumAccount == ledgerAccount
            {

                select sum(AmountMST) from custTrans
                    where custTrans.AccountNum == custTable.AccountNum
                       && custTrans.TransDate <= toDate
                       && custTrans.PostingProfile == custLedgerAccounts.PostingProfile
                    exists join ledgerTrans
                        where ledgerTrans.AccountNum == ledgerAccount
                           && ledgerTrans.Voucher == custTrans.Voucher
                           && ledgerTrans.TransDate == custTrans.TransDate;

                custAmountMST += custTrans.AmountMST;
            }
Теги
как правильно, клиент, оборотно-сальдовая ведомость, осв, полезное, расчеты с клиентами

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
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, время: 01:45.