AXAPTA: Поле Lookup Отображение строкового значения вместо идентификатора?
Вопрос
Когда AX генерирует формы и сетки, все поиски заполняются должным образом, но в форме отображается идентификатор элемента поиска. Единственный способ увидеть значения, которые имеют смысл,-это нажать на поле-не очень идеально. Есть ли способ отобразить значение поиска в форме вместо идентификационного номера за ним?
Я бы хотел, чтобы форма «TableB» отображала таблицу_value вместо Tablea_id.
таблица
- Tablea_id (int - уникальный)
- Tablea_Value (String - не Unique)
TableB
- tableb_id (int - уникальный)
- Tablea_id (int - отношение к таблице)
- tableb_datafields (Misc)
Спасибо
Решение
Не смог найти способ изменить ценность самого поиска, поэтому я поместил рядом с ним статическое поле, которое обновляется в любое время, когда поиск изменяется. Вот как я в итоге сделал это:
Метод отображения в таблице A:
display [datatype] lookupName(tableA _tableA)
{
;
return tableB::find(_tableA.[tableA id column]).[tableB string column];
}
Найдите метод в таблице B:
static tableB find([datatype] [lookup variable], boolean _forUpdate = false,
ConcurrencyModel _concurrencyModel = ConcurrencyModel::Auto)
{
[TableB] [tableB];
if ([lookup variable])
{
if (_forUpdate)
{
tableB.selectForUpdate(_forUpdate);
if (_concurrencyModel != ConcurrencyModel::Auto)
{
tableB.concurrencyModel(_concurrencyModel);
}
}
select firstonly tableB
where tableB.[lookup column] == [lookup variable];
}
return tableB;
}
Добавлены оба таблица A и B в качестве источников данных для формы.
Добавлен поле строки в форму.
Установите таблицу A как дат данных для поля и имени поиска в качестве Datamethod.
Добавлен модифицированный метод в поле поиска, чтобы привести к обновлению статического поля:
element.redraw();
Надеюсь, это кому -то поможет.