Показать сообщение отдельно
Старый 14.12.2012, 19:19   #9  
EVGL is offline
EVGL
Banned
Соотечественники
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
4,445 / 3001 (0) ++++++++++
Регистрация: 09.07.2002
Адрес: Parndorf, AT
Мне удалось малой кровью запрограммировать "слепое" обновление имени и адреса клиента/поставщика:
DirParty@action = update
DirPartyPostalAddressView@action = create

\Classes\AxDirPartyTable\parmName
X++:
public DirPartyName parmName(DirPartyName _name = '')
{
    DirPartyTable   itself;
    AxVendTable     axVendTable;

    if (!prmisDefault(_name))
    {
        this.setField(fieldNum(DirPartyTable, Name), _name);

        // BEGIN
        if (_name && parentAxBc && parentAxBc.recordAction() == AxdRecordAction::Update)
        {
            switch (classIdGet(parentAxBc))
            {
                case classNum(AxCustTable):
                    itself = parentAxBc.currentRecord().dirPartyTable_FK();
                    break;
                case classNum(AxVendTable):
                    axVendTable = parentAxBc;
                    itself = DirPartyTable::findRec(axVendTable.parmParty());
                    break;
            }
            if (itself)
            {
                this.parmRecId(itself.RecId);
            }
        }
        // END    
    }

    return dirPartyTable.Name;
}
\Classes\AxDirPartyPostalAddressView\parmIsPrimary
X++:
public LogisticsIsPrimaryAddress parmIsPrimary(LogisticsIsPrimaryAddress _isPrimary = NoYes::No)
{
    LogisticsPostalAddress  itself;

    if (!prmisdefault(_isPrimary))
    {
        this.setField(fieldnum(DirPartyPostalAddressView, IsPrimary), _isPrimary);

        // BEGIN
        if (_isPrimary && parentAxBc && parentAxBc.parentAxBC() && parentAxBc.parentAxBC().recordAction() == AxdRecordAction::Update)
        {
            switch (classIdGet(parentAxBc.parentAxBC()))
            {
                case classNum(AxCustTable):
                case classNum(AxVendTable):
                    itself = parentAxBc.parentAxBC().currentRecord().postalAddress();
                    break;
            }
            if (itself)
            {
                itself = LogisticsPostalAddress::findRecId(itself.RecId, true, itself.ValidFrom, itself.ValidTo);
                itself.delete();
            }
        }
        // END
    }

    return dirPartyPostalAddressView.IsPrimary;
}

Последний раз редактировалось EVGL; 14.12.2012 в 20:26.
За это сообщение автора поблагодарили: gl00mie (1).