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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 04.03.2008, 19:47   #1  
Eldar9x is offline
Eldar9x
MCTS
Аватар для Eldar9x
Oracle
MCBMSS
 
1,064 / 166 (8) ++++++
Регистрация: 29.09.2006
Адрес: Казань
Классы создания строк отгрузочных накладных
(пишу на память)
ProdJournalCreate
ProdJournalCreateBOM
ProdJournalCreateLocation - мой класс

Там есть метод createLines. В стандарте - создает строки по одному JournalNameId (это есть B).
Мой класс (С) создает отдельные журналы для каждого склада BOM, используя при этом дополнительную функциональность класса В. Для этого есть таблица соответствий
JournalNameId->Склад. В классе ProdJournalCreate (A) в методе CreateLines только завершающая операция.
Вот и нужно, создать строки следуя алгоритму разбивки по складам, а затем вызвать super() класса A, не вызывая при этом алгоритм "по одному JournalNameId". А в ProdJournalCreate - только две строки - собственно запись в бд (ProdJournalCreate->CreateLines).

Последний раз редактировалось Eldar9x; 04.03.2008 в 19:55.
Старый 04.03.2008, 20:13   #2  
miklenew is offline
miklenew
Участник
Аватар для miklenew
MCBMSS
1C
Лучший по профессии 2009
 
1,688 / 433 (18) +++++++
Регистрация: 10.07.2006
Адрес: г. Ликино-Дулёво
Как бы я сделал всё что выше super() в классе ProdJournalCreateBOM вынес бы в отдельный метод
X++:
Protected void preCreateLines()
{
    ProdJournalBOM              prodJournalBOM;
    ProdBOMCalc                 prodBOMCalc;
    ProdBOM                     prodBOM;

    BOMCalcData                 BOMCalcData    = BOMCalcData::newProdTable(qtyCalc,ProdTable::find(prodId));
    ;
    setPrefix("@SYS28536");

    this.initProdJournalTableData(prodJournalType::Picklist);

    prodJournalTransData = prodJournalTableData.JournalStatic().newJournalTransData(prodJournalBOM,prodJournalTableData);
    if (prodJournalTable.NumOfLines)
        prodJournalTransData.parmLastLineNum(prodJournalBOM::lastLineNum(journalId));

    if (! oprNumTo)
        oprNumTo         = oprNumFrom;

    BOMCalcData          = BOMCalcData::newProdTable(qtyCalc,ProdTable::find(prodId));

    while select forupdate prodBOM
        index hint numIdx
        where prodBOM.prodId == prodId      &&
              prodBOM.OprNum >= oprNumFrom  &&
             (prodBOM.OprNum <= oprNumTo    || ! oprNumTo)
    {
        prodBOMCalc = prodBOMCalc::newBOMCalcData(BOMCalcData,prodBOM,ConsumpProposal,BOMAutoConsump,! prodBOM.ConstantReleased, shipAccError);

        if (prodBOMCalc.hasQty()               ||
           (endUpdate                          && prodBOM.backorderStatus == ProdBackStatus::Release))
        {
            prodJournalTableData.initJournalId();

            this.initTransFromProdBOM(prodJournalBOM,prodBOM);

            ProdBOMCalc.setProdJournalBOM(prodJournalBOM);

            if (ConsumpAsProposal)
            {
                prodJournalBOM.BOMConsump       = prodJournalBOM.BOMProposal;
                prodJournalBOM.inventConsump    = prodJournalBOM.inventProposal;
            }

            if (proposalAsConsump)
            {
                prodJournalBOM.BOMProposal      = prodJournalBOM.BOMConsump;
                prodJournalBOM.inventProposal   = prodJournalBOM.inventConsump;
            }

            prodBOM.ConstantReleased = noYes::Yes;
            prodJournalBOM.insertJournalCreate(prodJournalTransData,prodBOM);

            if (prodBOM.ConstantReleased != prodBOM.orig().ConstantReleased)
                prodBOM.doUpdate();
        }
    }
}
А в методе createLines класса ProdJournalCreateBOM
X++:
Protected void createLines()
{
;
    this.preCreateLines();
    super();
}
А в своём классе уже будете перекрывать preCreateLines и не будете трогать createLines
За это сообщение автора поблагодарили: Eldar9x (1).
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
вызов метода из таблицы в операторе while select V777 DAX: Программирование 7 23.04.2008 09:11
Вызов класса из другого класса Protey DAX: Программирование 9 26.02.2007 11:01
Вызов метода класса из HTML Chezer DAX: Программирование 2 26.12.2006 15:34
"Программный" вызов метода класса!? axaLearner DAX: Программирование 13 16.08.2005 08:12
вызов класса с передачей параметров simply DAX: Программирование 2 23.06.2004 18:04

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

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

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