2

Dynamics AX 2009のユーザーグループは、同じ部門内の特定の人々の間でさまざまなばらつきがあるため、より正確で微調整されたグループに改良することを検討しています。このプランでは、大多数のユーザーがユーザー5以上のユーザーグループに分類されることは珍しくありません。

これの一部では、ユーザーグループIDのデフォルトの長さを10から40に拡張する必要があります(命名規則のベストプラクティスに従って)。10文字では各グループに適切な名前を付けるのに十分なスペースがないためです(ここでも、ベストプラクティスの命名規則に基づく)。

主な情報はUserGroupInfoテーブルから取得されているようですが、そのテーブルはデータディクショナリの下にありません(システムドキュメントの下にあるため、私の理解ではそのように変更することはできません)。UserGroupName EDTも見つかりましたが、これはすでに40文字に設定されています。フォーム自体もフィールドの長さを制限していないようです。SQLのフィールドを直接変更することについて説明しましたが、完全な同期を行うと、この変更が上書きされることを理解しています。

この特定の設定をどこで変更できますか、または変更することは可能ですか?

4

2 に答える 2

2

ユーザーグループIDのサイズは、システム拡張データ型(ここでは\ System Documentation \ Types \ userGroupId)として定義されており、サイズ10の長さを含むプロパティを変更することはできません。

SQLを直接変更してシステムを偽造しようとしないでください。それを行ったとしても、AXは長さが10であると信じています。

フォームを変更してSysUserInfo、グループ名のみを表示することができます。コンテキスト内のgroupId番号シーケンスによって割り当てられることもあります。

于 2011-12-15T10:49:10.400 に答える
1

X ++を介して文字列サイズを変更するジョブを作成しましたが、EDTで機能しますが、「userGroupId」が見つからないようです。私が得たAXの一般的な感触から、彼らはそれを別の場所に持っているだけだと思いますが、そうではないかもしれません。これを調整して機能させることができるかどうか疑問に思います。

static void Job9(Args _args)
{
    #AOT
    TreeNode    treeNode;
    Struct                  propertiesExt;
    Map                     mapNewPropertyValues;

    void setTreeNodePropertyExt(
        Struct  _propertiesExt,
        Map     _newProperties
        )
    {
        Counter     propertiesCount;
        Array       propertyInfoArray;
        Struct      propertyInfo;
        str         propertyValue;
        int         i;
        ;

        _newProperties.insert('IsDefault', '0');

        propertiesCount     = _propertiesExt.value('Entries');
        propertyInfoArray   = _propertiesExt.value('PropertyInfo');

        for (i = 1; i <= propertiesCount; i++)
        {
            propertyInfo = propertyInfoArray.value(i);

            if (_newProperties.exists(propertyInfo.value('Name')))
            {
                propertyValue = _newProperties.lookup(propertyInfo.value('Name'));
                propertyInfo.value('Value', propertyValue);
            }
        }
    }
    ;

    treeNode    = TreeNode::findNode(#ExtendedDataTypesPath);

    // This doesn't seem to be able to find the system type
    //treeNode    = treeNode.AOTfindChild('userGroupId');
    treeNode    = treeNode.AOTfindChild('AccountCategory');

    propertiesExt = treeNode.AOTgetPropertiesExt();

    mapNewPropertyValues = new Map(Types::String, Types::String);
    mapNewPropertyValues.insert('StringSize', '30');

    setTreeNodePropertyExt(propertiesExt, mapNewPropertyValues);
    treeNode.AOTsetPropertiesExt(propertiesExt);

    treeNode.AOTsave();

    info("Done");
}
于 2011-12-15T20:53:35.633 に答える