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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 20.05.2011, 10:40   #1  
axalex is offline
axalex
Участник
 
91 / 14 (1) ++
Регистрация: 14.03.2011
? Расчет конечного сальдо
Здравствуйте!
Необходимо:
1. Рассчитать сальдо конечное кредитовое по счету 62.2.1 на дату (по данному контрагенту, договору, ставке НДС);
2. Рассчитать сальдо конечное дебетовое по счету 76.АВ на дату (по данному контрагенту, договору, ставке НДС);

Для дальнейшего вывода в Excel и построения отчета.

Не получается найти подходящий класс. Или у кого нибудь есть мысли на эту тему. Смотрел похожие темы, класс Ledger Balance и его наследников.
__________________
С уважением, Алексей.
Старый 20.05.2011, 11:55   #2  
twilight is offline
twilight
MCTS
MCBMSS
 
871 / 237 (9) ++++++
Регистрация: 17.10.2004
Адрес: Королёв
Расчеты с клиентами / Запросы / Оборотно-сальдовая ведомость
смотрели?
__________________
I could tell you, but then I would have to bill you.
Старый 20.05.2011, 12:05   #3  
axalex is offline
axalex
Участник
 
91 / 14 (1) ++
Регистрация: 14.03.2011
Цитата:
Сообщение от twilight Посмотреть сообщение
Расчеты с клиентами / Запросы / Оборотно-сальдовая ведомость
смотрели?
Заглянул, но у меня она в очень мощном апгрейде, очень долго разбираться в коде, не успеваю.. Проще просто класс подобрать наверное, чем разобрать ОСВ.. Вот и спрашиваю совета..
__________________
С уважением, Алексей.
Старый 27.05.2011, 09:11   #4  
axalex is offline
axalex
Участник
 
91 / 14 (1) ++
Регистрация: 14.03.2011
Просмотрев различные формы и классы, решил написать свои функции по расчету сальдо.
Вышло примерно так:
X++:
Amount getBalanceCred(CustTrans _custTrans)
{
    CustTrans    custTransCursor;
    LedgerTrans ledgerTransCursor;
    str 100         accountNum;
    ;
    select sum(AmountCur) from ledgerTransCursor
        where ledgerTransCursor.Dimension[7] == _custTrans.Dimension[7]
            && ledgerTransCursor.Dimension[8] == _custTrans.Dimension[8]
            && ledgerTransCursor.Dimension[9] == _custTrans.Dimension[9]
            && ledgerTransCursor.AccountNum == "62.02.1"
            && ledgerTransCursor.TransDate <= TransDate
            && ledgerTransCursor.Crediting  == true;
         // && ledgerTransCursor.TransType == 15

    return ledgerTransCursor.AmountCur;
}
И так:
X++:
Amount getBalanceDeb(CustTrans _custTrans)
{
    CustTrans    custTransCursor;
    LedgerTrans ledgerTransCursor;
    str 100         accountNum;
    ;
    select sum(AmountCur) from ledgerTransCursor
        where ledgerTransCursor.Dimension[7] == _custTrans.Dimension[7]
            && ledgerTransCursor.Dimension[8] == _custTrans.Dimension[8]
            && ledgerTransCursor.Dimension[9] == _custTrans.Dimension[9]
            && ledgerTransCursor.AccountNum == "76.АВ"
            && ledgerTransCursor.TransDate <= TransDate
            && ledgerTransCursor.Crediting  == false;
         // && ledgerTransCursor.TransType == 15

     return ledgerTransCursor.AmountCur;
}
Считал сальдо по аналитикам. Понимаю, что с точки зрения системы это не правильно.
Но, всё же, возникают ошибки в выводе. По моим предположениям я не учёл что-либо..
__________________
С уважением, Алексей.
Старый 27.05.2011, 09:22   #5  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
вы суммируете amountCur, но не учитываете валюту. в результате у вас доллары складываются с евро и с остальными валютами. amountCur можно суммировать только в пределах одной валюты.


кроме того, вы получаете дебетовое сальдо.
но не учитываете поле correction.
аксапта умеет работать с красным сторно. в этом случае поле correction = true.
__________________
полезное на axForum, github, vk, coub.
Старый 27.05.2011, 10:47   #6  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,658 / 1162 (42) ++++++++
Регистрация: 13.01.2004
Записей в блоге: 3
Стандартные отчета Axapta основаны на суммировании клиентских проводок (CustTrans), поскольку именно в них указывается код клиента. Бух.счетов в клиентских проводках нет. Но в них есть такое понятие, как "Профиль разноски". В свою очередь, справочник профилей разноски содержит ссылку на бух.счета.

Как следствие, общий алгоритм расчета сальдо по клиенту и конкретному бух.счету выглядит следующим образом
  1. По справочнику профилей разноски отбираются все профили разноски имеющие связь с нужным бух.счетом
  2. Суммируются все клиентские проводки нужного клиента у которых указан профиль разноски из списка, отобранного на первом этапе
Ну, есть еще некоторые тонкости какие именно бух.счета из профиля разноски используются для фильтрации, но это сами разберетесь...

Делать расчет по бух.проводкам по конкретному клиенту можно только если стандартный функционал сильно кастомизирован (протянули код клиента в бух.проводки) или же есть жесткие организационные ограничения на ведение учета.

Проблема здесь в том, что связь таблицы клиентских проводок и бух.проводок организована по коду ваучера. А подобная связь - не однозначна. Может быть несколько бух.проводок с одним и тем же номером ваучера, но не все из них относятся к нужному клиенту. Следовательно, попытка просуммировать бух.проводки по конкретному клиенту всегда будет не вполне корректна. Всегда будет содержать некую неопределенность.

Как следствие, если Вам нужен баланс по клиенту, то классы Ledger... для этой задачи - бесполезны. В них просто нет ссылок на клиентов. Нужно "копать" в сторону классов вроде CustVend... А как их использовать, смотрите в отчете "Оборотно-сальдовая ведомость"
За это сообщение автора поблагодарили: mazzy (2), Penguin (1), axalex (1).
Старый 27.05.2011, 17:13   #7  
CDR is offline
CDR
MCTS
MCBMSS
 
236 / 175 (6) ++++++
Регистрация: 27.11.2003
Цитата:
Сообщение от Владимир Максимов Посмотреть сообщение
Как следствие, общий алгоритм расчета сальдо по клиенту и конкретному бух.счету выглядит следующим образом
  1. По справочнику профилей разноски отбираются все профили разноски имеющие связь с нужным бух.счетом
  2. Суммируются все клиентские проводки нужного клиента у которых указан профиль разноски из списка, отобранного на первом этапе
Ну, есть еще некоторые тонкости какие именно бух.счета из профиля разноски используются для фильтрации, но это сами разберетесь...
При этом следует иметь ввиду одну неприятную особенность такого подхода (характерную, кстати, и для стандартной ОСВ по контрагентам). Если бух. счет в профиле разноски изменяется, то все проводки, выполненные ранее автоматом "перескакивают" на новый бух. счет.
__________________
Dynamics AX Experience
Теги
ledgerbalance, конечное сальдо, по счету, сальдо

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
DAX 4.0 Ген. фин. отчетов - Активное сальдо (дебет) и Сальдо дебет - в чем разница? Aleks_K DAX: Функционал 5 17.01.2008 01:47
Сальдо по валютам - не сальдо! max_woody_ru DAX: Функционал 19 15.12.2004 17:04
Расчет сальдо в ГК ddadream DAX: Функционал 7 28.07.2004 13:03
Сальдо в валютах по счетам при конвертации... Asadis DAX: Функционал 0 07.07.2004 16:13
Русская локализация Axapta 3 ? SlavaK DAX: Администрирование 59 01.07.2003 22:38

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

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

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 17:55.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.