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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 17.11.2010, 11:54   #1  
AxTimur is offline
AxTimur
Участник
 
21 / 11 (1) +
Регистрация: 08.08.2008
Вот код который я нашел ) Но я не знаю насколько он правильный т.е. он работает снимает маркировку к примеру и ставить знаю что ее можно подкорректировать под свои нужды. Мне просто интересно есть ли более простой способ ?
X++:
InventTrans         _InventTrans;
    InventTrans          InventTrans;
    InventDim           _InventDim;
    InventDim           InventDim;
    SalesLine          _SalesLine;
    Container   con;
    InventQty   qty , qty2;
    Container   res;
    Map                     recMAp = new MAp(Types::Integer, Types::Record);
    Map                     recMAp2 = new MAp(Types::String, Types::Container);
    TmpInventTransMark      tmp;

    MapIterator mti, mti2;
    Map         mapMarkNow = new map(types::Integer,types::Record);
    Str                     mapKey ;
    str mapKey(
    InventTrans invTrans,
    InventDim   invDim
    )
    {
        return invDim.mapKey()+'#'+enum2Str(invTrans.Direction);
    }

    ;
  While Select _SalesLine
        where _SalesLine.SalesId == 'КЛ10-0111435'
    {

        while select ItemId, TransType, TransRefId, InventTransId, Direction, inventDimId,   sum(qty), sum(qtySettled)  from _InventTrans
            group by ItemId, TransType, TransRefId, InventTransId, Direction, inventDimId
           where _InventTrans.InventTransId == _SalesLine.InventTransId
                  && _InventTrans.ValueOpen ==  inventTransOpen::Yes
                  && _InventTrans.TransChildType == InventTransChildType::None
                  && _InventTrans.PackingSlipReturned == noYes::No

            join // maxof(RecId) from
            _InventDim
            Where _InventDim.inventDimId == _InventTrans.inventDimId

               {
                   res = inventTrans::packTmpMark(_inventTrans.ItemId,_inventDim,_inventTrans.InventTransId,_inventTrans.Qty);
                   recMAp2.insert(mapKey, conpeek(res, 1));

               }
                    if(recMAp2 && recMAp2.elements()> 0 )
                    {
                        mti = new MapIterator(recMAp2);
                        mti.begin();
                        while (mti.more())
                        {
                            recMAp = map::create(recMAp2.lookup(mti.key()));
                            mti.next();
                        }
                     }

                        mti = new MapIterator(recMAp);
                        mti.begin();
                        while (mti.more())
                        {
                           tmp.data( recMAp.lookup(mti.key()));
                           tmp.insert();
                           mti.next();
                        }
ttsbegin;
  while select forupdate tmp
  where (tmp.TransType == InventTransType::Purch
        ||  tmp.TransType == InventTransType::InventTransfer)
        && tmp.StatusReceipt == StatusReceipt::Ordered
        && tmp.InventDimId == _SalesLine.InventDimId
      {
        Info(strfmt("%1 %2 %3",_SalesLine.ItemId,tmp.InventTransId,tmp.Qty));

        if (tmp.QtyMarked)
        {
            qty = -tmp.QtyMarked;
            qty2 = tmp.QtyMarked;
        }
         else
            {
            qty  = _SalesLine.SalesQty;
               qty2 = -_SalesLine.SalesQty;
            }

        tmp.qtyMarkNow = qty;
        tmp.update();

        mapMarkNow.insert(tmp.RecId, tmp);

        inventTrans.Qty              = qty;
      //  inventTrans.costAmountPosted = Qty;

        inventTrans.TransType        =  InventTransType::Sales;
        inventTrans.TransRefId       =  tmp.TransRefId;
        inventTrans.InventTransId    = _SalesLine.InventTransId;
        inventTrans.ItemId           = _SalesLine.ItemId;
//+ снять
//- установить
        if(qty < 0)
        inventTrans::updateTmpMark(inventTrans.InventTransId, inventDim, qty ,mapMarkNow.pack());
        else
        inventTrans::updateTmpMark(inventTrans.InventTransId, inventDim, -qty ,mapMarkNow.pack());

        //Pause;
      }
ttscommit;
delete_from tmp;
Теги
маркировка

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Как правильно создать в коде X++ новый planned order (ReqPO, ReqTrans) rkorchagin DAX: Программирование 5 02.06.2016 18:00
Снять задание сервера пакетной обработки fomenka DAX: Программирование 9 24.04.2007 14:33
aEremenko: Как правильно подобрать оборудование и понять, сколько оно будет стоить? Blog bot DAX Blogs 0 17.04.2007 12:00
Как правильно обращаться к элементам формы созданнй динамически из АОТ? 3oppo DAX: Программирование 2 29.11.2006 09:57
Как правильно програмно снять резерв? Hamster DAX: Программирование 2 05.04.2005 12:42

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

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

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