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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 22.01.2007, 11:22   #1  
rkorchagin is offline
rkorchagin
Участник
 
81 / 69 (3) ++++
Регистрация: 26.09.2006
? Как правильно создать в коде X++ новый planned order (ReqPO, ReqTrans)
Помогите, кто может!
Как правильно создать в коде X++ новый planned order (ReqPO, ReqTrans).

Я делаю так:
Цитата:
reqPO.clear();
reqTrans.clear();
ttsbegin;
reqPO.ReqPlanId = "P??suunnit";
reqPO.RefType = ReqRefType::ItemPlannedOrder;
reqPO.ItemId = ItemId;
reqPo.ReqDateDlv = systemDateGet();
reqPO.Qty = str2num(ReqQuantity); //
reqPO.CovInventDimId = Warehouse; //
reqPO.initFromItemId(ItemId);
reqPO.insert();

reqTrans.initFromReqPo(reqPO);
reqTrans.insert();

ttscommit;
Новый planned order создаётся, но что не до конца инициализирован что-ли, например reqPO.Qty - совсем не тот что подаю, но если reqPO.initFromItemId(ItemId) поставить в другом месте - вообще не появлятся в форме Planned orders.
В общем, помогите, как правильно создать новый planned order - каие ф-ции, методы надо вызывать...

Заранее спасибо.
Старый 22.01.2007, 11:39   #2  
slava09 is offline
slava09
Участник
Аватар для slava09
MCBMSS
Дети Юза
1C
 
1,642 / 237 (11) ++++++
Регистрация: 06.03.2003
Адрес: Украина, Киев
А Вы создайте новый заказ, в форме "Спланированные заказы". Там вываливается форма, в которой указываются входящие параметры. Потом Аксапта начинает колбасить то что надо. Так вот если вы нормальный программер, то загляните в этот механизм с помощью трассировки и посмотрите, что там происходит
Старый 22.01.2007, 16:58   #3  
Andrew K. is offline
Andrew K.
Участник
 
29 / 12 (1) ++
Регистрация: 02.12.2004
Адрес: Minsk
reqPO.CovInventDimId = Warehouse; //
здесь ошибка, изучите как устроен InventDim и все заработает. Ну, и конечно
reqPO.initFromItemId(ItemId) не на своем месте - должно быть до инициализации даты, кол-ва, т.к. в этом методе эти поля переписываются
Старый 23.01.2007, 10:52   #4  
rkorchagin is offline
rkorchagin
Участник
 
81 / 69 (3) ++++
Регистрация: 26.09.2006
Спасибо.

Вроде работает:
Цитата:
reqPO.clear();
reqTrans.clear();
ttsbegin;

reqPlanId = reqPlanSched::defaultStaticId();
reqPlan = reqPlan::find(reqPlanId);
if (!reqPlan.RecId)
this.addError("@SYS28502",KRBErrorLevel::E2_Warning);

reqPO.ReqPlanId = reqPlanId;
reqPO.RefType = ReqRefType::ItemPlannedOrder;

reqPO.initFromItemId(ItemId);

reqPO.Qty = str2num(ReqQuantity);
reqPO.PurchQty = str2num(ReqQuantity);

inventDim.InventLocationId = Warehouse;
reqPO.CovInventDimId = InventDim::findOrCreate(inventDim).inventDimId;
reqPO.PurchUnit = inventTableModule::find(ItemId,moduleInventPurchSales::Invent).UnitId;

reqPO.insert();
reqTrans.insertFromReqPo(reqPO);

ttscommit;
Старый 23.01.2007, 11:50   #5  
Andrew K. is offline
Andrew K.
Участник
 
29 / 12 (1) ++
Регистрация: 02.12.2004
Адрес: Minsk
Обратите внимание, что если у Вас разные InventUnit и PurchUnit для ном. единицы, то необходимо применить стандартную конверсию из reqPO.Qty в reqPO.PurchQty.. и не забывайте про округления - это потенциальный источник различных "неприятностей"
Старый 02.06.2016, 18:00   #6  
gefr is offline
gefr
Участник
Аватар для gefr
MCBMSS
 
147 / 17 (1) ++
Регистрация: 01.11.2004
Адрес: МО, Котельники
Обновил для AX2012 и оформил в функцию:
X++:
static void CreateReq(ItemId ItemId, Qty Qty, InventDimId InventDimId, ReqPOType ReqPOType,TransDate TransDate=today(), InventLocationId fromLoc="", ReqPlanId reqPlanId = ReqParameters::find().CurrentReqPlanIdSchedDynamic)
{
    ReqPO reqPO;
    ReqTrans ReqTrans;
    
    ReqPlan ReqPlan;
    ReqPlanData reqPlanData     = ReqPlanData::newReqPlanId(reqPlanId);
    
    reqTransPOCreate reqTransPOCreate;
    BOMVersion      bomVersion;
    
    InventTable InventTable=InventTable::find(ItemId);
    InventDim InventDim=InventDim::find(InventDimId);
    InventLocationId toLoc=InventDim.InventLocationId;
    ;
    reqPO.clear();
    reqTrans.clear();

    reqPlan = reqPlan::findReqPlanId(reqPlanId);
    if (!reqPlan.RecId) Error("@SYS28502");

    reqPO.PlanVersion = reqPlan.RecId;
    reqPO.initReqPOType( ReqPlanData.parmReqPlanVersionRefRecId(), reqPoType);
    reqPO.initFromItemId(ItemId);


    reqPO.Qty = Qty;
    reqPO.PurchQty = Qty;

    reqPO.CovInventDimId = inventDimId;
    reqPO.PurchUnit = inventTableModule::find(ItemId,moduleInventPurchSales::Invent).UnitId;
    reqPO.ReqDateDlv=TransDate;
    
    if(reqPO.validateFieldValue(fieldStr(ReqPO, ItemId))&&reqPO.validateWrite())
    {
        switch(reqPoType) 
        {
            case ReqPOType::Transfer:
                ReqTransFormPO::validateFromInventLocationId(fromLoc, toLoc,reqPO);
                break;
            case ReqPOType::Production: 
                reqPO.ItemBomId=InventTable.bomId(TransDate,Qty,InventDim);
                reqPO.ItemRouteId=InventTable.routeId(TransDate,Qty,InventDim);
                break;
            case ReqPOType::Purch: 
                reqPO.VendId=InventTable.PrimaryVendorId;
                break;
        }

    
    reqPO.insert();
    ReqPlannedOrder::construct().insertFromForm(reqPO,inventDim,fromLoc,toLoc,true,true);
    
    }
}
За это сообщение автора поблагодарили: AK-76 (1).
Теги
сводное планирование

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Новый Sales Order через AxSalesTable, проблема с InventTrans Qaz Qwerty DAX: Программирование 6 22.10.2008 22:08
Отличия в строках ReqPO, почему одна строка появляется в форме а другая нет (Master Planning, Planned Orders) rkorchagin DAX: Программирование 8 21.02.2007 16:27
ReqPO и ReqTrans - планирование Rimantas DAX: Программирование 12 18.01.2007 10:37
Как создать order мануально braathe DAX: Программирование 0 29.04.2005 15:21
Говорят вышел SP2 для Axapta 3. Кто нибуть что знает на эту тему? soin DAX: Прочие вопросы 10 13.10.2003 10:43
Опции темы Поиск в этой теме
Поиск в этой теме:

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

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

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

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