AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 16.09.2009, 17:42   #6  
tricky is offline
tricky
Участник
 
140 / 64 (3) ++++
Регистрация: 03.05.2005
Адрес: Гуково
Я такого метода не знаю. Но если программировать, придется чуток покорежить парочку классов.
Можно сделать более "тактичнее", но если делать "в лоб", то примерно вот так.
1. В BaseEnum SysPickListType добавить еще один элемент. Пусть он будет называться FieldsLabels.
2. В классе Global добавить еще один метод, почти такой же, как и метод pickField
X++:
static int pickFieldLabel(tableId tableId)
{
    Object  formRun;
    Args    args;
    ;
    args = new Args(formstr(SysPick));
    args.parm(strRFix(int2str(SysPickListType::FieldsLabels),2)+int2str(tableId));
    formRun = classfactory.formRunClass(args);
    formRun.init();
    formRun.run();
    formRun.wait();
    if (formRun.selection())
        return formRun.selection();
    return 0;
}
3. В класс sysPickList, по аналогии с методом fillFieldsMap, добавить еще один метод:
X++:
public static client container fillFieldsLabelsMap(str _argsParm)
{
    TmpSysTableField    tmpSysTableField;
    DictTable           dictTable       = new DictTable(str2int(_argsParm));
    Map                 map             = new Map(Types::Integer, Types::String);
    ;
    if (dictTable &&
        dictTable.rights() > AccessType::NoAccess)
    {
        tmpSysTableField = TmpSysTableField::findTableFields(tmpSysTableField, dictTable.id());

        while select tmpSysTableField
        {
            map.insert(tmpSysTableField.ExtendedFieldId, tmpSysTableField.FieldLabel);
        }
    }
    return map.pack();
}
4. В методе init этого же класса добавить примерно такие строки (в блоке switch(sysPickListType)):
X++:
//-------------
        case SysPickListType::FieldsLabels :
            imageRes    = #imageField;
            caption     = "@SYS3852";
            designWidth = #designLargeWidth;
            if (!map)
            {
                map = Map::create(sysPickList::fillFieldsLabelsMap(parmTxt));
            }
            break;
//-------------
5. Теперь можно попробовать вызвать наш новый метод:
X++:
    Global::pickFieldLabel(tableNum(InventTable));
За это сообщение автора поблагодарили: mazzy (2), lev (3), Poleax (5), propeller (1), abri (1), MazZzDaI (1).
Теги
ax3.0, ax4.0, lookup, lookupfield, полезное, программно

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Как получить имена полей, которые есть у таблицы? 3oppo DAX: Программирование 2 22.12.2006 14:30
Свойство AllowEdit полей таблицы Lucky13 DAX: Программирование 4 29.07.2005 14:14
Список полей таблиц на базе конкретного EDT Владимир Максимов DAX: Программирование 10 06.10.2004 14:45
Изменение ID-ов полей таблицы somebody DAX: Программирование 5 02.02.2004 19:57
Объединить несколько полей таблицы в одном поле Grid-а на форме? storer DAX: Программирование 2 12.11.2003 14:08

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 01:51.