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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 22.03.2009, 06:13   #1  
Qaz Qwerty is offline
Qaz Qwerty
китайский стажер
 
152 / 37 (2) +++
Регистрация: 12.05.2008
Прошу прощения, DAX 4.0.2501.
РК - это что за зверь? У меня пробелы в русской терминологии...
Не соответствует оборотной ведомости по клиенту (customer balance list).
__________________
Может быть выйдет, а может не-е-е-ет...
Новая песня вместо штиблет..
Старый 22.03.2009, 12:04   #2  
Qaz Qwerty is offline
Qaz Qwerty
китайский стажер
 
152 / 37 (2) +++
Регистрация: 12.05.2008
Как я понимаю, разница возникает за счет двух моментов:
1. AR Aging report почему то берет не все exch. adj., сопоставленные против инвойсов., вошедших в отчет. Часть берет, а часть - не берет. Например, она не берет в отчет проводки по exch. adj, закрытые до даты отчета. И не только их, но сумма остальных проводок дает ноль, так как эти exch. adjustments закрываются следующим месяцем.

2. AR aging report берет открытые проводки из таблицы CustTransOpen. Я не понимаю зачем, ведь данные в отчете должны считаться на основании CustTrans?

Ничего не понимаю, каша в голове...
__________________
Может быть выйдет, а может не-е-е-ет...
Новая песня вместо штиблет..
Старый 02.04.2009, 04:14   #3  
Qaz Qwerty is offline
Qaz Qwerty
китайский стажер
 
152 / 37 (2) +++
Регистрация: 12.05.2008
:(
Время идет, а проблема остается.
Частью проблемы было, что Аксапта не брала часть проводок в расчет, например exchange adjustments.
В результате разнообразных игр с запросом, сейчас отчет совпадает с балансом по клиенту в большинстве случаев, зато выяснилось что проблема есть не только там, где есть exchange adjustments...
Неужели никто не сталкивался с этой проблемой?

Кстати, может кто-нибудь в курсе, почему в методе queryRunClosedTransactions класса условие выглядит как:

X++:
queryRun.query().dataSourceTable(tablenum(CustSettlement)).findRange(fieldnum(CustSettlement, TransDate)).value(queryRange(transactionDate, dateMax()));
...
X++:
queryRun.query().dataSourceTable(tablenum(CustSettlement)).findRange(fieldnum(CustSettlement, TransDate)).value(queryRange(transactionDate, dateMax()));
Мне кажется, что логично было бы использовать transactionDate+1 ....
__________________
Может быть выйдет, а может не-е-е-ет...
Новая песня вместо штиблет..
Старый 02.04.2009, 05:35   #4  
Qaz Qwerty is offline
Qaz Qwerty
китайский стажер
 
152 / 37 (2) +++
Регистрация: 12.05.2008
С ума сойти, обнаружился еще один источник проблемы:
Например, есть инвойс закрытый двумя платежами. Почему то Closing Date для инвойса - дата первого платежа, а не последнего. Такая проблема встречается "иногда".

Но почему!?
__________________
Может быть выйдет, а может не-е-е-ет...
Новая песня вместо штиблет..
Старый 02.04.2009, 08:35   #5  
Vadik is offline
Vadik
Модератор
Аватар для Vadik
Лучший по профессии 2017
Лучший по профессии 2015
 
3,631 / 1849 (69) ++++++++
Регистрация: 18.11.2002
Адрес: гражданин Москвы
Цитата:
Сообщение от Qaz Qwerty Посмотреть сообщение
Такая проблема встречается "иногда"
Отчего же, весьма устойчивый эффект
Цитата:
Но почему!?
см. CustVendSettle_Cust.postClosing()
__________________
-ТСЯ или -ТЬСЯ ?
Старый 03.04.2009, 06:01   #6  
Qaz Qwerty is offline
Qaz Qwerty
китайский стажер
 
152 / 37 (2) +++
Регистрация: 12.05.2008
Цитата:
Сообщение от Vadik Посмотреть сообщение
Отчего же, весьма устойчивый эффект
см. CustVendSettle_Cust.postClosing()
Я не понимаю, в коде написано:
X++:
 _custTrans.Closed = CustVendTransData::construct(_custTrans).maxSettlementDate(_postingDate);
Смотрим дальше:
X++:
select maxof(TransDate) from custVendSettlement
            where custVendSettlement.TransRecId == custVendTrans.RecId;
...

return max(custVendSettlement.TransDate, _transDate);
Так по логике должно возвращать самую позднюю дату. У меня дата последнего платежа, она же дата сопоставления последнего платежа март 2008, а закрыт инвойс сентябрем 2007 - по дате первого платежа.
__________________
Может быть выйдет, а может не-е-е-ет...
Новая песня вместо штиблет..
Старый 06.04.2009, 11:40   #7  
glibs is offline
glibs
Member
Сотрудники компании It Box
Most Valuable Professional
Лучший по профессии 2011
Лучший по профессии 2009
 
4,942 / 911 (40) +++++++
Регистрация: 10.06.2002
Адрес: I am from Kyiv, Ukraine. Now I am in Moscow. For private contacts: glibs@hotmail.com
Цитата:
Сообщение от Vadik
...
см. CustVendSettle_Cust.postClosing()
...
В буржуйской версии — может быть (и то не уверен, т.к. там вроде как условие на закрывающий профиль разноски и проверку того, что они различные, хотя я еще не проснулся, могло и померещиться). Но в русской сопоставление пере... гм-гм... пере... переписано. Под всякие там книжки покупок и продаж.

Действо в русской версии происходит тут.

АОТ\Classes\CustVendSettle.settleNow()

Место выглядит вот так

X++:
            if (custVendTransCredit.AmountCur == custVendTransCredit.SettleAmountCur)
            {
                if (maxClosingDate)
                {
                    custVendTransCredit.Closed   = CustVendTransData::construct(custVendTransDebet).maxSettlementDate_W(transactionDate);
                }
                else
                {
                    custVendTransCredit.Closed  = transactionDate;
                }
                settleAmountMSTCredit     = custVendTransCredit.AmountMST - (custVendTransCredit.SettleAmountMST - custVendTransCredit.ExchAdjustmentRealized);
                specTransCredit.Balance01 = 0;
            }
Параметр такой таки есть в настройках ГК.

Значит отчет, говорите, не работает? Очень хорошо . Привет локализаторам.

А у вас галка в параметрах стоит? Если нет, попробуйте поставить и проверить, какой будет эффект после ее проставления с т.з. корректности построения отчета.

PS. По-русски параметр называется "Максимальная дата закрытия.".
__________________
С уважением,
glibs®

Последний раз редактировалось glibs; 06.04.2009 в 11:43.
Старый 06.04.2009, 08:17   #8  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от Qaz Qwerty Посмотреть сообщение
2. AR aging report берет открытые проводки из таблицы CustTransOpen. Я не понимаю зачем, ведь данные в отчете должны считаться на основании CustTrans?
Оптимизация.

Просто записей в CustTransOpen должно быть существено меньше при правильном регламенте (платежи с отгрузками сопоставляются). А закрытые записи из CustTrans дают в сумме 0 баланс по определению.

Кроме того, при правильном ведении базы и, если программист не вмешивался в бездумно в таблицы, то сумма custTransOpen должна совпадать с суммой незакрытых проводок в CustTrans.

В общем, повышают производительность.
__________________
полезное на axForum, github, vk, coub.
За это сообщение автора поблагодарили: Qaz Qwerty (1).
Теги
aging report, ошибка

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Customer Aging Report (DAX 4.0) Qaz Qwerty DAX: Программирование 4 31.10.2008 22:49
Dynamics AX: Dynamics AX project success - Customer Ownership & Expectations Blog bot DAX Blogs 0 07.08.2007 21:10
Report:можно ли избавиться от "Отчет не содежит данных" Arahnid DAX: Программирование 4 29.05.2007 10:04
Говорят вышел SP2 для Axapta 3. Кто нибуть что знает на эту тему? soin DAX: Прочие вопросы 10 13.10.2003 10:43

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

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

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