|
![]() |
#1 |
Участник
|
Цитата:
Неправильный: Также как считает его ОСВ. Т.е. считать, что все проводки сделаны по профилям разноски с текущими настройками. Если при вызове ОСВ Вы ставите фильтр по счету ГК еще - то значит нужно отсекать записи в 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; } |
|
![]() |
#2 |
Administrator
|
Цитата:
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; } Например, так: 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). |
![]() |
#3 |
Участник
|
Спасибо большое.
Вот так совпадает с данными ОСВ: 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; |
|
![]() |
#4 |
Administrator
|
А, ну да - точно
__________________
Возможно сделать все. Вопрос времени |
|
![]() |
#5 |
Axapta Retail User
|
Можно попросить проектик отчета, если не жалко
![]() |
|
![]() |
#6 |
Участник
|
Проектик во вложении. Там для вывода в эксель используется движок, написанный конторой, внедрявшей нам AX - его классы я не могу выложить без их согласия, извините.
|
|
|
За это сообщение автора поблагодарили: lev (1), novic (1). |
![]() |
#7 |
Axapta Retail User
|
А как бы договор сюда еще пришить?
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'; |
|
![]() |
#8 |
Axapta Retail User
|
Кстати вот это не всегда совпадает с данными ОСВ
[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; что-то вроде 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; } } |
|
![]() |
#9 |
Axapta Retail User
|
Кто-нибудь может сказать как оборотно-сальдовая ведомость считает сальдо на дату по договору.
ведь не так - 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; |
|
![]() |
#10 |
Участник
|
Добрый день. В таблицах 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; |
|
![]() |
#11 |
Участник
|
Цитата:
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; } |
|
Теги |
как правильно, клиент, оборотно-сальдовая ведомость, осв, полезное, расчеты с клиентами |
|
Опции темы | Поиск в этой теме |
Опции просмотра | |
|