Финансовое измерение после сохранения пусто - PullRequest
0 голосов
/ 20 июня 2019

У меня есть финансовое измерение, с которым связываются такие значения, как BuildingID и ContractID. Когда создается новое здание, измерение правильно заполняется данными. Но после этого необходимо создать контракт. При создании договора в поле финансового измерения есть значение для contractID. Но при сохранении договора финансовое измерение для идентификатора договора исчезает. Когда я проверяю в таблице значение DIMENSIONATTRIBUTEVALUESET для этого измерения ContractID является нулевым, есть только значение для BuildingID. У меня есть этот метод для размеров инициализации:

void initDimensions()
    {        
        DimensionDefault dimension;
        PMGOrgDimension orgDimension;
        CompanyId       companyId;        
        PMEGround ground;
        PMEBuilding building;

        switch(pmcContract.EstateType)
        {            
            case PMCEstateType::Ground :
                ground = PMEGround::find(pmcContract.EstateId);
                dimension    = PMEObjectLegalEntity::find(ground.TableId, ground.RecId).DefaultDimension;
                orgDimension = ground.OrgDimension;
                companyId    = ground.CompanyId;
                break;
            case PMCEstateType::Building :
                building = PMEBuilding::find(pmcContract.EstateId);
                dimension    = PMEObjectLegalEntity::find(building.TableId, building.RecId).DefaultDimension;
                orgDimension = building.OrgDimension;
                companyId    = building.CompanyId;
                break;
            default :
                dimension = pmcContract.DefaultDimension;
                orgDimension = pmcContract.OrgDimension;
                companyId = pmcContract.CompanyId;
                break;
        }

        pmcContract.DefaultDimension    = dimension;
        pmcContract.OrgDimension = orgDimension;
        pmcContract.CompanyId    = companyId;

    } 

Есть ли что-то, что я пропустил?

Ответы [ 2 ]

2 голосов
/ 20 июня 2019

Попробуйте изменить эту строку:

pmcContract.DefaultDimension = dimension;

На это:

pmcContract.DefaultDimension = DimensionDefaultingService::serviceMergeDefaultDimensions(pmcContract.DefaultDimension, dimension);

0 голосов
/ 24 июня 2019

Проблема в этом методе:

static server public DimensionDefault tableDimension(Common _c, DimensionDefault _d)
    {
        DimensionAttribute dimensionAttribute;
        DimensionAttributeValue dimensionAttributeValue;
        DimensionAttributeSetItem dimensionAttributeSetItem;
        DimensionAttributeValueSetStorage dimensionAttributeValueSetStorage;
        DimensionDefault cDimensionDefault;
        DimensionDefault ret;
        ;

        ret = _d;

        select firstonly RecId from dimensionAttribute
            where dimensionAttribute.BackingEntityTableId == _c.TableId
            join firstonly RecId from dimensionAttributeSetItem
                where dimensionAttributeSetItem.DimensionAttributeSet == DimensionCache::getDimensionAttributeSetForLedger()
                   && dimensionAttributeSetItem.DimensionAttribute == dimensionAttribute.RecId;
        if (dimensionAttributeSetItem.RecId != 0)
        {
            dimensionAttributeValue = DimensionAttributeValue::findByDimensionAttributeAndEntityInst(dimensionAttribute.RecId, _c.RecId, false, true);
            if (dimensionAttributeValue.RecId != 0)
            {
                dimensionAttributeValueSetStorage = new DimensionAttributeValueSetStorage();
                dimensionAttributeValueSetStorage.addItemValues(dimensionAttributeValue.DimensionAttribute, dimensionAttributeValue.RecId, dimensionAttributeValue.HashKey);
                cDimensionDefault = dimensionAttributeValueSetStorage.save();
                if (cDimensionDefault != 0)
                {
                    ret = LedgerDimensionDefaultFacade::serviceMergeDefaultDimensions(cDimensionDefault, _d);
                }
            }
        }

        return ret;
    }

Слияние не работает. Он принимает значения только для _d. Не объединяя их.

...