|
![]() |
#1 |
Участник
|
Извиняюсь, что не сразу указал про фильтр по счету ГК =)
Я считаю, например, по клиенту 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) А помощь мне нужна, скорее всего, с кодом =) |
|
![]() |
#2 |
Administrator
|
ОСВ по клиенту когда строится - то берется текущий профиль разноски клиента. Когда берется сумма по CustTrans - то берется профиль разноски который был по факту.
Т.е. если "в процессе жизненного пути" в профиле разноски меняли счет ГК или у клиента меняли профиль разноски - то все исторические проводки в ОСВ (до изменений) отобразятся как будто эти изменения были с самого начала. В то время как в CustTrans "все ходы записаны" и коверкания истории не будет
__________________
Возможно сделать все. Вопрос времени |
|
|
За это сообщение автора поблагодарили: Ivanhoe (-1), -xXx- (1). |
![]() |
#3 |
Участник
|
Да я понимаю, что всему виной баловство пользователей с настройками профилей разноски.
Подскажите, все же, пожалуйста, как считать сальдо так, чтобы оно сходилось с конечным сальдо по ОСВ? |
|
![]() |
#4 |
Administrator
|
Цитата:
Правильный: Не смотреть на ОСВ - т.к. там (если меняли настройки профилей разноски) заведомо неверные данные. Если по клиенту сделаны 5 проводок по 62 счету и 10 - по 76-му, то неверно считать что все 15 проводок сделаны действительно по 76-му счету (или по 62-му). Неправильный: Также как считает его ОСВ. Т.е. считать, что все проводки сделаны по профилям разноски с текущими настройками. Если при вызове ОСВ Вы ставите фильтр по счету ГК еще - то значит нужно отсекать записи в CustTrans, которым соответствуют записи в LedgerTrans с другим счетом ГК
__________________
Возможно сделать все. Вопрос времени Последний раз редактировалось sukhanchik; 21.07.2010 в 12:44. |
|
![]() |
#5 |
Участник
|
Добавьте в запрос таблицу LedgerTrans.
|
|
![]() |
#6 |
Участник
|
Цитата:
Неправильный: Также как считает его ОСВ. Т.е. считать, что все проводки сделаны по профилям разноски с текущими настройками. Если при вызове ОСВ Вы ставите фильтр по счету ГК еще - то значит нужно отсекать записи в 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; } |
|
![]() |
#7 |
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). |
Теги |
как правильно, клиент, оборотно-сальдовая ведомость, осв, полезное, расчеты с клиентами |
|
|