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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 19.03.2007, 17:32   #1  
Rimantas is offline
Rimantas
Участник
 
304 / 16 (1) ++
Регистрация: 30.04.2004
Адрес: Utena , Lithuania
SalesLine и ReqTrans
Здраствыйте !

Никак немогу найти решение для изменения SalesLinе SаlesQty поля . Дело в том , что как менеджер введет все данные для заказа , есть сделана такая мелочь как подсчитание % для увеличивания количеств ( ето из за своих нужд мы можем добавить к конракт несколько % .. ) .
Код:
         
         ttsbegin;
         while select forupdate salesLin
            index hint SalesLineIdx
            where salesLin.SalesId == salesTbl.SalesId
         {
            nDec = Unit::decimals(salesLin.SalesUnit);
            nOld = salesLin.SalesQty;
            nSkt = ( nOld * nProc ) / 100;
            nSkt = round(nSkt,nDec);
            nNew = nOld + nSkt;
            if ( nNew != nOld )
            {
               salesLin.SalesQty = nNew;
               SalesLine::modifySalesQty(salesLin,InventDim::find(salesLin.InventDimId));
               salesLin.update();
            }
         }
         ttscommit;
Всё хорошо - количества изменяеться . Но ... если посмотреть раядом SalesLinе в "Запросы" -> "Развертывание" , то там на "Требуемое количество" ( ReqTrans ) стоит старое значение .. . Если я в ручную поправляю количество в SalesLine , то тогда в "Развертываниях" "Требуемое кол." изменяеться . По моему всю работу для изменения етих данных должен быть SalesLine::modifySalesQty(salesLin,InventDim::find(salesLin.InventDimId)) метод , который используеться в методе "modified" для SаlesQty в SalesLine_ds . Но почему то в ручную он дейстует , а идя по цикл - нет ... Помогите пожалуйста , чего там нехватает в данном примере для того , чтобы достичь желаемого результата ...

С уважением , Римантас
Старый 19.03.2007, 18:23   #2  
e@gle is offline
e@gle
MCTS
MCBMSS
 
164 / 72 (3) ++++
Регистрация: 11.04.2005
Адрес: Минск
Не уверен, но вы попробуйте сначала сделать salesLin.update(), а потом SalesLine::modifySalesQty().
Мне кажется, должно помочь.

Последний раз редактировалось e@gle; 19.03.2007 в 18:56.
Старый 19.03.2007, 19:29   #3  
e@gle is offline
e@gle
MCTS
MCBMSS
 
164 / 72 (3) ++++
Регистрация: 11.04.2005
Адрес: Минск
Я был не прав.
SalesLine::modifySalesQty() - делать вообще не надо. Развертывание обновится на update() строки заказа.
А вот что надо сделать обязательно - это изменить поля salesLine.QtyOrdered и salesLine.RemainInventPhysical
Развертывание обновляется в соответствии с полем salesLine.RemainInventPhysical.
Старый 20.03.2007, 09:08   #4  
Rimantas is offline
Rimantas
Участник
 
304 / 16 (1) ++
Регистрация: 30.04.2004
Адрес: Utena , Lithuania
Цитата:
Сообщение от e@gle Посмотреть сообщение
Я был не прав.
SalesLine::modifySalesQty() - делать вообще не надо. Развертывание обновится на update() строки заказа.
А вот что надо сделать обязательно - это изменить поля salesLine.QtyOrdered и salesLine.RemainInventPhysical
Развертывание обновляется в соответствии с полем salesLine.RemainInventPhysical.
Большое спасибо ! Вы на всех 110 % прав !

С уважением , Римантас
Старый 20.03.2007, 09:36   #5  
Ivanhoe is offline
Ivanhoe
Участник
Аватар для Ivanhoe
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
4,143 / 2156 (80) +++++++++
Регистрация: 29.09.2005
Адрес: Санкт-Петербург
Цитата:
Сообщение от e@gle Посмотреть сообщение
Я был не прав.
SalesLine::modifySalesQty() - делать вообще не надо. Развертывание обновится на update() строки заказа.
А вот что надо сделать обязательно - это изменить поля salesLine.QtyOrdered и salesLine.RemainInventPhysical
Развертывание обновляется в соответствии с полем salesLine.RemainInventPhysical.
Можно уточнить?
Почему не надо делать SalesLine::modifySalesQty()?
А как же пересчет суммы по строке?

Пересчет "К поставке" (и по складу, и по заказу) можно сделать так:
InventMovement::bufferSetRemainQty(salesLine)
__________________
Ivanhoe as is..
Старый 20.03.2007, 11:11   #6  
e@gle is offline
e@gle
MCTS
MCBMSS
 
164 / 72 (3) ++++
Регистрация: 11.04.2005
Адрес: Минск
Цитата:
Можно уточнить?
Почему не надо делать SalesLine::modifySalesQty()?
А как же пересчет суммы по строке?
Вы правы, надо делать SalesLine::modifySalesQty(). Имелось ввиду что эта функция никак не влияет на поребности ReqTrans.

Цитата:
Пересчет "К поставке" (и по складу, и по заказу) можно сделать так:InventMovement::bufferSetRemainQty(salesLine)
Наверное можно и так. Я этого метода не знал.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Как правильно создать в коде X++ новый planned order (ReqPO, ReqTrans) rkorchagin DAX: Программирование 5 02.06.2016 18:00
Добавление новых строк в SalesLine Qaz Qwerty DAX: База знаний и проекты 6 04.02.2009 17:23
Join SalesTable-->SalesLine Eldar9x DAX: Программирование 9 06.06.2008 17:19
SalesLine.initFromSalesTable() - кроме журналов, никогда корректно не отрабатывает? gl00mie DAX: Программирование 2 23.01.2008 11:48
ReqPO и ReqTrans - планирование Rimantas DAX: Программирование 12 18.01.2007 10:37
Опции темы Поиск в этой теме
Поиск в этой теме:

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

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

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

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