AX 2009: настройка длины группы пользователей - PullRequest
2 голосов
/ 14 декабря 2011

Мы рассматриваем возможность уточнения наших групп пользователей в Dynamics AX 2009 в более точные и точно настроенные группировки из-за широкого диапазона различий между конкретными людьми в одном отделе.При таком плане для большинства наших пользователей было бы весьма обычным делить группы пользователей на 5+.

Частично это потребовало бы увеличения длины идентификатора группы пользователей по умолчанию с 10 до 40 (какв соответствии с рекомендациями для соглашений об именовании), поскольку 10 символов не дают нам достаточно места для адекватного названия каждой группы, как мы хотели бы (опять же, на основе соглашений об именах из лучших практик).

Мы обнаружили, что основная информациякажется, получено из таблицы UserGroupInfo, но эта таблица отсутствует в Словаре данных (она находится в Системной документации, поэтому, насколько я понимаю, ее нельзя изменить таким образом).Мы также нашли EDT UserGroupName, но он уже установлен на 40 символов.Сама форма, похоже, тоже не ограничивает длину поля.Мы обсуждали изменение поля в SQL напрямую, но, опять же, я понимаю, что если мы сделаем полную синхронизацию, это перезапишет это изменение.

Куда нам обратиться, чтобы изменить этот конкретный параметр, или это возможно?изменить?

Ответы [ 2 ]

2 голосов
/ 15 декабря 2011

Размер идентификатора группы пользователей определяется как расширенный системный тип данных (здесь \ Системная документация \ Типы \ userGroupId), и вы не можете изменять никакие свойства, включая длину размера 10.

Вы должны жить с этим, не пытайтесь подделать систему, используя прямые изменения SQL. Даже если бы вы сделали это, AX все равно поверил бы, что длина равна 10.

Вы можете изменить форму SysUserInfo, чтобы показывать только имя группы. groupId также может быть назначен последовательностью номеров в вашем контексте.

1 голос
/ 16 декабря 2011

Я написал задание по изменению размера строки с помощью 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");
}
...