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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 11.11.2008, 18:00   #1  
fed is offline
fed
Moderator
Аватар для fed
Ex AND Project
Соотечественники
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
2,913 / 5736 (197) ++++++++++
Регистрация: 13.03.2002
Адрес: Hüfingen,DE
Цитата:
Сообщение от miklenew Посмотреть сообщение
Выкидывает сообщение
Отрицательная себестоимость не возможна.
(S) \Classes\InventTransAdjust\updateNow - line 72
Не могу понять в чём дело. Считается вроде всё правильно и интуиция подсказывает возможно входные данные не правильны. А именно поле корректировки.
Предположил что это поле на InventTrans проверяется таким образом.
Для ValueOpen = да
Хотя вызывает уважение желание топикстартера навести порядок в корректировках себестоимости, мне кажется, что miklenew взялся за задачу немного не с того конца. Такое сообщение выдается при попытке переоценить приходный складской лот (проводку грубо говоря) до отрицательной себестоимости. И на мой взгляд, тут более вероятна ситуация, при которой кто-то грязными руками покопался в логике класса, который грубо говоря преобразует новую сумму остатка по складам в коррекцию суммы каждой открытой проводки.(InventAdj-SumUp(), inventSumOpenTransact()).
Возможно, я не прав и топикстартер уже разобрался в том что происходит в этих классах. В таком случае, просьба написать почему возникло подозрение что неверно значение именно в inventTrans.costAmountAdjustment.
Старый 12.11.2008, 10:54   #2  
miklenew is offline
miklenew
Участник
Аватар для miklenew
MCBMSS
1C
Лучший по профессии 2009
 
1,688 / 438 (18) +++++++
Регистрация: 10.07.2006
Адрес: г. Ликино-Дулёво
К чему в результате дошёл

1) \Classes\InventSumOpenTransact\add
Закидываем в буфер costAmountPosted

2) (S) \Classes\InventSumOpenTransact\setTransAdjustNow - line 4
Инициализируем суммы корректировки нулями

3)(S) \Classes\InventSumOpenTransact\setAdjustment - line 49
Может получиться что расчитанная сумма корректировки нам не подходит,
тогда корректировка = this.transValue(x)+this.transAdjustNow(x)
Фактически это this.transValue(x) т.к. transAdjustNow(x) = 0

4) (S) \Classes\InventTransAdjust\updateNow - line 35
inventTrans.updateSplit(inventTrans.financialOpenQty());
Делим на две проводки (старая+новая)
И все суммы и количества пропорционально распределяем, кроме суммы по корректировке.
Корректировку оставляем на изначальной проводке. Т.к. в InventSettlement связь не только по лоту но и по recId.
После этой процедуры место старого inventTrans в памяти уже другой.
Вот это я исправил, так как это не правильно.
Поставил в верху метода
X++:
    RefRecId         origRecId;
А место
X++:
            if (inventTrans.financialOpenQty() != inventTrans.qty)
                inventTrans.updateSplit(inventTrans.financialOpenQty());
изменённый код
X++:
            if (inventTrans.financialOpenQty() != inventTrans.qty)
            {
                origRecId = inventTrans.RecId;
                inventTrans.updateSplit(inventTrans.financialOpenQty());
                if(inventTrans.RecId != origRecId)
                    inventTrans = InventTrans::findRecId(origRecId, true);
            }
Вопрос: Интересно, а зачем здесь вообще updatesplit()?
__________________
Энергия молодых и неравнодушных способна изменить мир к лучшему.
Старый 12.11.2008, 19:27   #3  
miklenew is offline
miklenew
Участник
Аватар для miklenew
MCBMSS
1C
Лучший по профессии 2009
 
1,688 / 438 (18) +++++++
Регистрация: 10.07.2006
Адрес: г. Ликино-Дулёво
Есть подозрения, что сделал не правильно.
Завтра ещё буду юзать.
Но неужели не у кого нет мыслей зачем там updatesplit().
Буду благодарен за любые догадки, даже неправильные.
__________________
Энергия молодых и неравнодушных способна изменить мир к лучшему.
Теги
логистика, переоценка

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
сопоставление оплат клиента, переносов сальдо-поле накладная в общем журнале? Aquarius DAX: Функционал 3 28.01.2009 12:51
InventTransIdReturn и Закрытие склада DenisS DAX: Программирование 15 03.12.2008 09:02
Denis Fedotenko: Новые поля в складских проводках Blog bot DAX: База знаний и проекты 10 24.05.2007 11:57
Как правильно достучаться из InventTrans до даты накладыной NJD DAX: Программирование 6 22.07.2005 20:52
Связь таблиц InventTrans и PurchLine Pustik DAX: Программирование 2 25.11.2004 12:23
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра
Комбинированный вид Комбинированный вид

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

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

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