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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 25.09.2014, 01:25   #1  
ax_mct is offline
ax_mct
Banned
 
2,548 / 1091 (0) ++++++++
Регистрация: 10.10.2005
Адрес: Westlands
Нет. Дешевого и элегантного решения здесь нет. Исходя из того что система сама раскладывает Dimensions на контролы то тот же layout на форме дорого может обойтись если динамически работать. А если это "авто-раскладывание" убрать то тогда и смысл пропадает. Лезть же в процесс генерации контролов явно перебор.

Cамое лучшее со всех точек зрения это тупо ручками добавлять контролы для "Value's name".
Или использовать подсказки.
IMHO.

Последний раз редактировалось ax_mct; 25.09.2014 в 01:31.
Старый 25.09.2014, 01:39   #2  
Ruff is offline
Ruff
Дмитрий Ерин
Аватар для Ruff
1C
 
475 / 396 (14) ++++++
Регистрация: 18.09.2003
Адрес: Тула
В порядке страдания ерундой
1. Создаем EDT DimDescription (массив той же размерности, что и Dimension).
2. Делаем временную таблицу TmpDimDescription с единственным полем DimDescription (EDT из п.1), входящим в единственную группу DimDescription.
3. Добавляем примерно такой метод на эту таблицу:
X++:
void initFromCommon(Common _common)
{
    int                 idx;
    FieldId             dimFieldId;
    ;
    for (idx = 1; idx <= dimof(this.dimDescription); idx++)
    {
        dimFieldId = fieldId2Ext (fieldname2id (_common.TableId, "Dimension"), idx);
        this.DimDescription[idx] = Dimensions::find (Dimensions::arrayIdx2Code (idx), _common.(dimFieldId)).Description;
    }
}
4. Добавляем эту таблицу в желаемую(ые) форму(ы), вытаскиваем в нужное место группу DimDescription.
5. На "главном" датасорсе (в котором собственно хранятся аналитики), перекрываем метод active():
X++:
public int active()
{
    int ret;
    ;
    ret = super();

    TmpDimDescription.initFromCommon(this.cursor());
    TmpDimDescription_ds.executeQuery();

    return ret;
}
6. Перестаем страдать ерундой (С)
__________________
За это сообщение автора поблагодарили: S.Kuskov (1).
Старый 25.09.2014, 02:40   #3  
ax_mct is offline
ax_mct
Banned
 
2,548 / 1091 (0) ++++++++
Регистрация: 10.10.2005
Адрес: Westlands
Цитата:
Сообщение от Ruff Посмотреть сообщение
В порядке страдания ерундой
...
Если только режим чтения то такое решение (список полного описания) имеет право на короткую жизнь.
А если это обычный режим где возможно редактирование? Тогда только контрол к контролу. Но чтобы не было проблем с layout на форме надо парные контролы (ID и новое NAME) класть в подгруппу. И такая необходимость убивает всю задумку элегантности "автоматизации" процесса.

В принципе значения финансовых аналитик должны быть понятны сами по себе. И если есть такая проблема как нечеловеческие цифры или непонятная нумерация то на мой взгляд проблему надо решать более глобально и системно чем идентификация контрола в методе.
Старый 25.09.2014, 05:24   #4  
Perc is offline
Perc
Участник
 
194 / 57 (2) ++++
Регистрация: 05.03.2005
Цитата:
Сообщение от ax_mct Посмотреть сообщение
Только сейчас въехал в то что хочет автор.
Пардон, за невнятное объяснение. Терминологию видимо не ту использовал)

Цитата:
Сообщение от Ruff Посмотреть сообщение
В порядке страдания ерундой..
надо будет еще например modified перекрыть для обновления описаний на случай правки аналитик, что возвращает к задаче "забыть"при росте аналитик. Ну и способ с перекрытием active у нас есть - без временной таблицы, но тоже рабочий. Но для него есть не достаток про который я уже указывал:
Цитата:
Сообщение от Perc Посмотреть сообщение
... Но мне он не понравился тем, что 10 запросов к справочнику аналитик шло даже если наименования на другом табе и его не смотрят.
Цитата:
Сообщение от ax_mct Посмотреть сообщение
...В принципе значения финансовых аналитик должны быть понятны сами по себе...
Страшно далеки вы от народа).. Ну или мы) В любом случае значения - это коды цифробуквенные, нуда там есть определенная классификация, но их реально не мало и помнить хотя бы 10 значений из одной группы.. мм.. это надо ежедневно работать с ними.

Ну в общем тренд ответов я примерно уловил). Мысль с модификацией оставляю в покое..
Старый 25.09.2014, 13:24   #5  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,721 / 1208 (44) ++++++++
Регистрация: 13.01.2004
Записей в блоге: 3
Цитата:
Сообщение от Ruff Посмотреть сообщение
В порядке страдания ерундой
1. Создаем EDT DimDescription (массив той же размерности, что и Dimension).
...
Угу. Я примерно то же самое предложил бы, ну разве что, без временной таблицы и дисплейный метод на той таблице, где поле Dimension.

X++:
// Метод на той таблице, где поле Dimension
//BP Deviation documented
display DimDescription getDimDescription()
{
    DimDescription	dimDescription;
    int                 idx;
    FieldId             dimFieldId;
    ;

    for (idx = 1; idx <= dimof(this.dimDescription); idx++)
    {
        dimDescription[idx] = Dimensions::find(Dimensions::arrayIdx2Code(idx), this.Dimension[idx]).Description;
    }
    return dimDescription;
}
Далее создаем группу полей на этой же таблице, добавляем в нее этот дисплейный метод и выводим эту группу полей на форме справа от группы полей с полем Dimension.


Другой вариант - это создать поле на основе DimDescription в той же таблице, где и Dimension. Собственно, стандартный способ решения, когда требуется код и его расшифровка. Код клиента - Название клиента, Код номенклатуры - Название номенклатуры и т.д., и т.п.

Ну, а то, что после изменения кода надо менять (обновлять) расшифровку, так опять же, стандартное поведение. Для Dimension можно "не мелочиться" и обновлять все аналитики при изменении одного. Тогда не теряется универсальность.
__________________
- Может, я как-то неправильно живу?!
- Отчего же? Правильно. Только зря...
Старый 25.09.2014, 13:41   #6  
Ruff is offline
Ruff
Дмитрий Ерин
Аватар для Ruff
1C
 
475 / 396 (14) ++++++
Регистрация: 18.09.2003
Адрес: Тула
Цитата:
Сообщение от Владимир Максимов Посмотреть сообщение
дисплейный метод на той таблице, где поле Dimension.
...
Далее создаем группу полей на этой же таблице, добавляем в нее этот дисплейный метод и выводим эту группу полей на форме справа от группы полей с полем Dimension.
Почему-то такие финты не срабатывают, по крайней мере на AX2009. То есть, когда мы перетаскиваем в дизайн формы группу с полем-массивом - в этой группе автоматом создается нужное кол-во контролов, корректно привязанных к элементам массива. А вот если в группе - дисплей метод, возвращающий тот же EDT (массив) - то фигушки - контрол создается всего один и отображается он пустым. Я даже пробовал руками добавлять несколько контролов и играть свойством ArrayIndex - результат тот же. Может быть что-то упускаю?
Старый 25.09.2014, 14:30   #7  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,721 / 1208 (44) ++++++++
Регистрация: 13.01.2004
Записей в блоге: 3
Цитата:
Сообщение от Ruff Посмотреть сообщение
Почему-то такие финты не срабатывают, по крайней мере на AX2009. То есть, когда мы перетаскиваем в дизайн формы группу с полем-массивом - в этой группе автоматом создается нужное кол-во контролов, корректно привязанных к элементам массива. А вот если в группе - дисплей метод, возвращающий тот же EDT (массив) - то фигушки - контрол создается всего один и отображается он пустым. Я даже пробовал руками добавлять несколько контролов и играть свойством ArrayIndex - результат тот же. Может быть что-то упускаю?
Мда... Не работает Значит, так только через поля таблицы. Временной или постоянной - зависит от задачи...
__________________
- Может, я как-то неправильно живу?!
- Отчего же? Правильно. Только зря...
Старый 25.09.2014, 12:06   #8  
Kabardian is offline
Kabardian
Талантливый разгвоздяй
Аватар для Kabardian
 
424 / 338 (12) ++++++
Регистрация: 14.12.2008
Адрес: Москва
Записей в блоге: 14
..и появился стимул перехода на новую ;-)
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Дисплейный метод JonAx DAX: Программирование 40 07.08.2014 17:39
Не срабатывает display-метод Vasiliusis DAX: Программирование 7 23.04.2014 15:03
Как программно узнать текущий объект и метод в котором выполняется код? McCoy DAX: Программирование 15 25.02.2011 23:34
Как узнать UserName от кого выполняется метод ? egorych DAX: Программирование 7 18.09.2007 18:46
Можно ли в display методе узнать для какого FormControl'а этот метод вызван? Dudnik Anton DAX: Программирование 3 01.02.2006 12:22

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

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

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