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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 24.09.2014, 20:00   #21  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,701 / 1195 (43) ++++++++
Регистрация: 13.01.2004
Записей в блоге: 3
Цитата:
Сообщение от Perc Посмотреть сообщение
Вытянуть наименования финаналитик рядом с кодами на стандарной закладке и как говориться забыть.
Э... Может, я чего не понимаю, но разве названия фин.аналитик автоматически не появляются из EDT? Ну, стандартная форма LedgerJornalTable - закладки "Аналитика". Или что-то другое имеется в виду?
__________________
- Может, я как-то неправильно живу?!
- Отчего же? Правильно. Только зря...
Старый 24.09.2014, 21:35   #22  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,440 / 1775 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Цитата:
Сообщение от Владимир Максимов Посмотреть сообщение
Или что-то другое имеется в виду?
Наименование не аналитик, а значений аналитик
Старый 24.09.2014, 22:29   #23  
ax_mct is offline
ax_mct
Banned
 
2,548 / 1091 (0) ++++++++
Регистрация: 10.10.2005
Адрес: Westlands
Цитата:
Сообщение от S.Kuskov Посмотреть сообщение
Наименование не аналитик, а значений аналитик
Только сейчас въехал в то что хочет автор. Так как при корректном добавлении финансовой аналитики, она прекрасно автоматически распадается на элементы массива на формах.

А вот когда значение аналитики "111" а пользователь хочет человеческое наименование справа то да, это задача частая и популярная.

Всегда ее решал на автомате и без проблем. Дополнительный контрол справа с дисплейным методом.

В принципе эти "Value's name" контролы можно добавлять автоматически при каждом запуске формы. Реализуемо, но я такое делать никогда не буду в силу бизнес-модели работы и нелепости самой задумки.

Интересно как часто добавляются финансовые аналитики Если часто то да можно сделать кнопку на форму - "Обновить контролы". Но это явно не так.

Если же как учебно-абстрактная задача то действительно достаточно азартно. Но я бы просто уточнил что хочет пользователь и изменил дизайн решения начиная с cамого начала. Например tooltips, mouseOver, hotkeys или просто показ комбинированного имени "ID (NAME)" вместо ID аналитики (в этом случае надо думать о длине или о новом EDT на форме что тоже неэлегантно).

Пойнт в том что если требуется сложное решение то значит надо менять дизайн.
Сложность решения на уровне кодирования это признак плохого дизайна или плохой идеи.

Самое простое это тупо ручками добавлять контрол для "Value's name". Не так часто это и случится. Но безусловно задача интересная, не могу этого не признать - просто я такие себе позволить просто не могу

В порядке бреда.
Вариант 1
EDT akaDimensionName. Добавить массив контролов "Value's name" на форму. Связь между контролами через одинаковый индекс в массивах.

Вариант 2
Показ грида [ID, NAME] с таблицей финансовой аналитики и фильтром по данному значению.

Вариант/Мысль? 3
Исходить из того у нас коллекция контролов в группе на форме и мы может их перебрать и что надо добавить.

Declaimer: это все несерьезно однако.

Последний раз редактировалось ax_mct; 24.09.2014 в 23:10.
Старый 25.09.2014, 01:25   #24  
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   #25  
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   #26  
ax_mct is offline
ax_mct
Banned
 
2,548 / 1091 (0) ++++++++
Регистрация: 10.10.2005
Адрес: Westlands
Цитата:
Сообщение от Ruff Посмотреть сообщение
В порядке страдания ерундой
...
Если только режим чтения то такое решение (список полного описания) имеет право на короткую жизнь.
А если это обычный режим где возможно редактирование? Тогда только контрол к контролу. Но чтобы не было проблем с layout на форме надо парные контролы (ID и новое NAME) класть в подгруппу. И такая необходимость убивает всю задумку элегантности "автоматизации" процесса.

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

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

Ну в общем тренд ответов я примерно уловил). Мысль с модификацией оставляю в покое..
Старый 25.09.2014, 10:32   #28  
Kabardian is offline
Kabardian
Талантливый разгвоздяй
Аватар для Kabardian
 
424 / 338 (12) ++++++
Регистрация: 14.12.2008
Адрес: Москва
Записей в блоге: 14
Цитата:
Сообщение от Perc Посмотреть сообщение
Совершенно обыкновенная весчь. Вытянуть наименования финаналитик рядом с кодами на стандарной закладке и как говориться забыть.
Можете уточнить версию системы? Это ведь не AX 2012? В ней такая задача уже решена уже в стандарте - рядом с кодом финаналитики выводится и наименование.

Последний раз редактировалось Kabardian; 25.09.2014 в 11:06.
За это сообщение автора поблагодарили: Perc (1).
Старый 25.09.2014, 11:25   #29  
Perc is offline
Perc
Участник
 
194 / 57 (2) ++++
Регистрация: 05.03.2005
Цитата:
Сообщение от Kabardian Посмотреть сообщение
Можете уточнить версию системы? Это ведь не AX 2012? В ней такая задача уже решена уже в стандарте - рядом с кодом финаналитики выводится и наименование.
Нет, не 2012. В ней не работал еще активно. Предыдущие версии.
Тогда действительно.. что это я.. стимул улучшений устаревающих версий потерян..)
Старый 25.09.2014, 12:06   #30  
Kabardian is offline
Kabardian
Талантливый разгвоздяй
Аватар для Kabardian
 
424 / 338 (12) ++++++
Регистрация: 14.12.2008
Адрес: Москва
Записей в блоге: 14
..и появился стимул перехода на новую ;-)
Старый 25.09.2014, 12:23   #31  
Perc is offline
Perc
Участник
 
194 / 57 (2) ++++
Регистрация: 05.03.2005
Цитата:
Сообщение от Kabardian Посмотреть сообщение
.. В ней такая задача уже решена уже в стандарте - рядом с кодом финаналитики выводится и наименование.
Кстати, первый достойный и повальный аргумент - почему не надо страдать ерундой)
Старый 25.09.2014, 13:24   #32  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,701 / 1195 (43) ++++++++
Регистрация: 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   #33  
Ruff is offline
Ruff
Дмитрий Ерин
Аватар для Ruff
1C
 
475 / 396 (14) ++++++
Регистрация: 18.09.2003
Адрес: Тула
Цитата:
Сообщение от Владимир Максимов Посмотреть сообщение
дисплейный метод на той таблице, где поле Dimension.
...
Далее создаем группу полей на этой же таблице, добавляем в нее этот дисплейный метод и выводим эту группу полей на форме справа от группы полей с полем Dimension.
Почему-то такие финты не срабатывают, по крайней мере на AX2009. То есть, когда мы перетаскиваем в дизайн формы группу с полем-массивом - в этой группе автоматом создается нужное кол-во контролов, корректно привязанных к элементам массива. А вот если в группе - дисплей метод, возвращающий тот же EDT (массив) - то фигушки - контрол создается всего один и отображается он пустым. Я даже пробовал руками добавлять несколько контролов и играть свойством ArrayIndex - результат тот же. Может быть что-то упускаю?
Старый 25.09.2014, 14:30   #34  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,701 / 1195 (43) ++++++++
Регистрация: 13.01.2004
Записей в блоге: 3
Цитата:
Сообщение от Ruff Посмотреть сообщение
Почему-то такие финты не срабатывают, по крайней мере на AX2009. То есть, когда мы перетаскиваем в дизайн формы группу с полем-массивом - в этой группе автоматом создается нужное кол-во контролов, корректно привязанных к элементам массива. А вот если в группе - дисплей метод, возвращающий тот же EDT (массив) - то фигушки - контрол создается всего один и отображается он пустым. Я даже пробовал руками добавлять несколько контролов и играть свойством ArrayIndex - результат тот же. Может быть что-то упускаю?
Мда... Не работает Значит, так только через поля таблицы. Временной или постоянной - зависит от задачи...
__________________
- Может, я как-то неправильно живу?!
- Отчего же? Правильно. Только зря...
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Дисплейный метод 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, время: 09:48.