|
![]() |
#1 |
Banned
|
Нет. Дешевого и элегантного решения здесь нет. Исходя из того что система сама раскладывает Dimensions на контролы то тот же layout на форме дорого может обойтись если динамически работать. А если это "авто-раскладывание" убрать то тогда и смысл пропадает. Лезть же в процесс генерации контролов явно перебор.
Cамое лучшее со всех точек зрения это тупо ручками добавлять контролы для "Value's name". Или использовать подсказки. IMHO. Последний раз редактировалось ax_mct; 25.09.2014 в 01:31. |
|
![]() |
#2 |
Дмитрий Ерин
|
В порядке страдания ерундой
![]() 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; } } 5. На "главном" датасорсе (в котором собственно хранятся аналитики), перекрываем метод active(): X++: public int active() { int ret; ; ret = super(); TmpDimDescription.initFromCommon(this.cursor()); TmpDimDescription_ds.executeQuery(); return ret; } ![]()
__________________
![]() |
|
|
За это сообщение автора поблагодарили: S.Kuskov (1). |
![]() |
#3 |
Banned
|
Если только режим чтения то такое решение (список полного описания) имеет право на короткую жизнь.
А если это обычный режим где возможно редактирование? Тогда только контрол к контролу. Но чтобы не было проблем с layout на форме надо парные контролы (ID и новое NAME) класть в подгруппу. И такая необходимость убивает всю задумку элегантности "автоматизации" процесса. В принципе значения финансовых аналитик должны быть понятны сами по себе. И если есть такая проблема как нечеловеческие цифры или непонятная нумерация то на мой взгляд проблему надо решать более глобально и системно чем идентификация контрола в методе. |
|
![]() |
#4 |
Участник
|
Пардон, за невнятное объяснение. Терминологию видимо не ту использовал)
надо будет еще например modified перекрыть для обновления описаний на случай правки аналитик, что возвращает к задаче "забыть"при росте аналитик. Ну и способ с перекрытием active у нас есть - без временной таблицы, но тоже рабочий. Но для него есть не достаток про который я уже указывал: Цитата:
Цитата:
Ну в общем тренд ответов я примерно уловил). Мысль с модификацией оставляю в покое.. |
|
![]() |
#5 |
Участник
|
Цитата:
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; } Другой вариант - это создать поле на основе DimDescription в той же таблице, где и Dimension. Собственно, стандартный способ решения, когда требуется код и его расшифровка. Код клиента - Название клиента, Код номенклатуры - Название номенклатуры и т.д., и т.п. Ну, а то, что после изменения кода надо менять (обновлять) расшифровку, так опять же, стандартное поведение. Для Dimension можно "не мелочиться" и обновлять все аналитики при изменении одного. Тогда не теряется универсальность.
__________________
- Может, я как-то неправильно живу?! - Отчего же? Правильно. Только зря... |
|
![]() |
#6 |
Дмитрий Ерин
|
Цитата:
![]() |
|
![]() |
#7 |
Участник
|
Цитата:
Сообщение от Ruff
![]() Почему-то такие финты не срабатывают, по крайней мере на AX2009.
![]() ![]()
__________________
- Может, я как-то неправильно живу?! - Отчего же? Правильно. Только зря... |
|
![]() |
#8 |
Талантливый разгвоздяй
|
..и появился стимул перехода на новую ;-)
|
|