2011-12-14 2 views
2

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

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

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

Где мы можем изменить эту настройку, или ее можно изменить?

ответ

2

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

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

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

+0

Любые мысли на моем посте ниже? Похоже, что дизайнеры AX спрятали поле, но с ним может быть и способ обезьяны. –

+0

, как говорит Ян Б. Кьелдсен, не стоит пытаться подделать систему. Если вам нужно большее поле, просто создайте другую таблицу и привяжите ее к стандартной. В вашей таблице вы можете создавать все, что захотите, без риска взлома системы. Если UserTable не может синхронизироваться в AX, вы можете находиться в ситуации, когда клиент AX не может запускаться, и вам нужно удалить объекты с диска. –

+0

@ j.a.estevan Мой метод не совсем подделка системы. Если бы я мог успешно увеличить длину через систему EDT, по всем счетам это было бы правильно сделано. Я лично просто создал бы свою собственную таблицу, это просто более интересный способ попробовать и настроить систему. –

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"); 
} 
+0

Вместо этого вы можете попытаться просмотреть \ System Documentation \ Types, но я сомневаюсь, что вы найдете там свойство StringSize. –

 Смежные вопросы

  • Нет связанных вопросов^_^