首页 > 解决方案 > AX2012 RouteOpr 表单显示单个资源而不是特定资源的所有 RouteOpr 条目

问题描述

我的问题是我们插入了一些具有以下逻辑的 routeOpr(嵌入在作业中,见下文),现在 RouteOpr 表单显示 RouteOpr 表单中的所有 routeOpr 条目,无论选择了哪个资源。

有人可以解释一下“ RouteOpr ”表单如果通过调用它应该是什么

'Organisation administration' / 'Area page' -> select a Ressource and click on 'Applicable for' / 'Operations'

在此处输入图像描述 在此处输入图像描述

通过一些调试,我已经发现了表单的查询是什么,但我不明白为什么表单不只是显示特定资源的 routeOpr 条目。

    RouteOpr                        routeOpr;
    WrkCtrRouteOprActivity          wrkCtrRouteOprActivity;
    WrkCtrActivity                  wrkCtrActivity;
    WrkCtrActivityRequirementSet    wrkCtrActivityRequirementSet;
    WrkCtrAbility                   wrkCtrAbility;
    WrkCtrActivityRequirementView   wrkCtrActivityRequirementView;

    changeCompany('someCompany')
    {
        WHILE SELECT routeOpr
            EXISTS JOIN wrkCtrRouteOprActivity
                WHERE routeOpr.RecId == wrkCtrRouteOprActivity.RouteOpr
                    EXISTS JOIN wrkCtrActivity
                        WHERE wrkCtrRouteOprActivity.Activity == wrkCtrActivity.RecId
                            EXISTS JOIN wrkCtrActivityRequirementSet
                                WHERE wrkCtrActivity.RecId == wrkCtrActivityRequirementSet.Activity
                                    NOTEXISTS JOIN wrkCtrActivityRequirementView
                                        WHERE wrkCtrActivityRequirementSet.RecId == wrkCtrActivityRequirementView.ActivityRequirementSet
                                            NOTEXISTS JOIN wrkCtrAbility
                                                WHERE wrkCtrActivityRequirementView.AbilityType == wrkCtrAbility.AbilityType
                                                   && wrkCtrActivityRequirementView.AbilityRecId == wrkCtrAbility.AbilityRecId
                                                   && (((wrkCtrAbility.LevelValue >= wrkCtrActivityRequirementView.MinimumLevelNeeded)))
                                                   && ((wrkCtrAbility.WrkCtrId == 'someWrkCtrId'))
                                                   && ((wrkCtrAbility.ValidFrom <= systemDateGet())
                                                   && ((wrkCtrAbility.ValidTo >= systemDateGet())))
                     {
                         Debug::printDebug(strFmt("%1 %2 %3", routeOpr.OprId, routeOpr.WrkCtrIdCost, routeOpr.ItemRelation));
                     }
    }

我认为我在工作中犯了一些错误和/或忘记了某些东西,也许有人可以帮助我。

select forUpdate route;
select forUpdate routeOpr;
select forUpdate wrkCtrActivityResourceRequirement;
select forUpdate wrkCtrActivityRequirementSet;
select forUpdate wrkCtrActivityRequirement;


route.clear();
route.RouteId      = routeVersion.RouteId;
route.OprNum       = 10;
route.OprNumNext   = 0;
route.OprId        = oprId;
route.Level        = 1;
route.AccError     = 1.00;
route.insert();


routeOpr.clear();
routeOpr.ItemCode          = TableGroupAll::Table;
routeOpr.ItemRelation      = routeVersion.ItemId;
routeOpr.RouteCode         = RouteAll::Route;
routeOpr.RouteRelation     = routeVersion.RouteId;
routeOpr.OprId             = route.OprId;
routeOpr.ProcessPerQty     = 1.00;
routeOpr.FormulaFactor1    = 1.00;
routeOpr.WrkCtrIdCost      = ressource;
routeOpr.COL_UnitId        = "HMIN";
routeOpr.ProcessTime       = str2num(time);
routeOpr.RouteGroupId      = "SOLL=IST";
routeOpr.ToHours           = 0.0002;
routeOpr.insert();


wrkCtrActivityRequirementSet = routeOpr.activityRequirementSet();
wrkCtrActivityRequirementSet.selectForUpdate(true);
//wrkCtrActivityRequirementSet.LoadPercent = 100;
//wrkCtrActivityRequirementSet.Quantity    = 1;
wrkCtrActivityRequirementSet.update();

wrkCtrActivityRequirement.clear();
wrkCtrActivityRequirement.ActivityRequirementSet     = wrkCtrActivityRequirementSet.RecId;
wrkCtrActivityRequirement.RelationshipType           = WrkCtrActivityRequirementType::Resource;
wrkCtrActivityRequirement.UsedForJobScheduling       = NoYes::Yes;
wrkCtrActivityRequirement.UsedForOperationScheduling = NoYes::Yes;
wrkCtrActivityRequirement.insert();

wrkCtrActivityResourceRequirement.clear();
wrkCtrActivityResourceRequirement.setActivityRequirement(wrkCtrActivityRequirement.RecId);
wrkCtrActivityResourceRequirement.WrkCtrId = ressource;
wrkCtrActivityResourceRequirement.insert();

标签: axaptax++dynamics-ax-2012dynamics-ax-2012-r3

解决方案


除了不正确的工作之外,实际的错误是我没有设置该wrkCtrActivityResourceRequirement.ResourceDataAreaId字段的值。

所以我做了一个这样设置领域的工作

wrkCtrActivityResourceRequirement.ResourceDataAreaId = curExt2dataareaid(tableNum(WrkCtrTable)); 

现在显示正确的条目。

(我没有注意到错误,因为该字段已设置visible = No,,因此未在表格浏览器中显示。)


推荐阅读