Показать сообщение отдельно
Старый 04.03.2008, 20:13   #6  
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).