Показать сообщение отдельно
Старый 27.01.2019, 15:14   #8  
online
Stitch_MS
Участник
Аватар для Stitch_MS
Соотечественники
 
396 / 478 (16) +++++++
Регистрация: 27.02.2006
Адрес: Дания
Еще пример. Класс SubledgerJournalizerProjectExtension,

X++:
    protected ProjEmplTrans createProjHourTrans(Container _projectActualHeaderContainer, SourceDocumentLineItem _sourceDocumentLineItem, ...)
    {
        ProjEmplTrans   projEmplTrans;
        PSAComponentGroupAssignment psaComponentGroupAssignment;

        projEmplTrans.clear();
        
        #declareProjectActualHeaderContainerVariablesMacro
        #projectActualHeaderContainerMacro = _projectActualHeaderContainer;

        projEmplTrans.ProjId = actualProjectId;
        projEmplTrans.CategoryId = actualCategoryId;
        projEmplTrans.ActivityNumber = actualActivityNumber;
        projEmplTrans.LinePropertyId = actualLinePropertyId;
Два макроса в коде выглядят так:
X++:
    #localmacro.declareProjectActualHeaderContainerVariablesMacro
        RefRecId            actualSourceDocumentLine;
        DataAreaId          actualProjectDataAreaId;
        ProjId              actualProjectId;
        ProjCategoryId      actualCategoryId;
        smmActivityNumber   actualActivityNumber;
        ProjLinePropertyId  actualLinePropertyId;
        CurrencyCode        actualTransactionCostCurrency;
        CurrencyCode        actualTransactionSalesCurrency;
        CurrencyCode        accountingCurrency;
        ProjTaxGroup        actualTaxGroupId;
        ProjTaxItemGroup    actualTaxItemGroupId;
        DimensionDefault    actualDefaultDimension;
        Qty                 actualQuantity;
        AmountCur           actualTransactionCurrencyCostAmount;
        AmountMST           actualAccountingCurrencyCostAmount;
        AmountCur           actualTransactionCurrencySalesAmount;
        AmountMST           actualAccountingCurrencySalesAmount;
    #endmacro

    #localmacro.projectActualHeaderContainerMacro
        [
        actualSourceDocumentLine,
        actualProjectDataAreaId,
        actualProjectId,
        actualCategoryId,
        actualActivityNumber,
        actualLinePropertyId,
        actualTransactionCostCurrency,
        actualTransactionSalesCurrency,
        accountingCurrency,
        actualTaxGroupId,
        actualTaxItemGroupId,
        actualDefaultDimension,
        actualQuantity,
        actualTransactionCurrencyCostAmount,
        actualAccountingCurrencyCostAmount,
        actualTransactionCurrencySalesAmount,
        actualAccountingCurrencySalesAmount
        ]
    #endmacro
Т.е. в методе createProjHourTrans первый параметр _projectActualHeaderContainer -- это, по сути, 17 параметров. Если изменить макросы, то список параметров в createProjHourTrans вроде как не изменился, возможно не будет считаться за breaking change, и может по-тихому сломать расширение, изменяющее значение одного из элементов в контейнере.

И в этом классе такой метод не один.