Создание поля поиска для финансового измерения в Dynamics 365
Опубликовано: 16 февраля 2025 г. в 11:34:03 UTC
Последнее обновление: 12 января 2026 г. в 08:56:15 UTC
В этой статье объясняется, как создать поле поиска для финансового измерения в Dynamics 365 for Operations, включая пример кода на X++.
Creating a Lookup Field for a Financial Dimension in Dynamics 365
Информация в этом сообщении основана на Dynamics 365 for Operations, но большая её часть также подойдёт для Dynamics AX 2012 (см. ниже).
Недавно мне поручили создать новое поле, в котором можно было бы указать единственное финансовое измерение, в данном случае — «Продукт». Разумеется, новое поле также должно уметь искать допустимые значения этого измерения.
Это немного сложнее, чем обычный поиск в таблице, но если вы знаете, как это делается, то на самом деле это не так уж и сложно.
К счастью, стандартное приложение предоставляет удобную форму поиска (DimensionLookup), которую можно использовать для этой цели, если просто указать, для какого атрибута измерения следует выполнить поиск.
Во-первых, необходимо создать само поле формы. Оно может быть основано на табличном поле или методе редактирования, это не имеет значения для самого поля поиска, но так или иначе оно должно использовать расширенный тип данных DimensionValue.
Затем вам нужно создать обработчик события OnLookup для этого поля. Чтобы создать обработчик события, щелкните правой кнопкой мыши по событию OnLookup для поля, затем выберите «Скопировать метод обработчика события». После этого вы можете вставить пустой метод обработчика события в класс и отредактировать его там.
Примечание: большая часть этого будет работать и для Dynamics AX 2012, но вместо создания обработчика событий вы можете переопределить метод `lookup` поля формы.
Обработчик событий должен выглядеть примерно так (замените имя формы и имя поля при необходимости):
FormControlEventHandler(formControlStr( MyForm,
MyProductDimField),
FormControlEventType::Lookup)
]
public static void MyProductDimField_OnLookup( FormControl _sender,
FormControlEventArgs _e)
{
FormStringControl control;
Args args;
FormRun formRun;
DimensionAttribute dimAttribute;
;
dimAttribute = DimensionAttribute::findByName('Product');
args = new Args();
args.record(dimAttribute);
args.caller(_sender);
args.name(formStr(DimensionLookup));
formRun = classFactory.formRunClass(args);formRun.init();
control = _sender as FormStringControl;
control.performFormLookup(formRun);
}
Дополнительное чтение
Если вам понравился этот пост, вам также могут понравиться эти предложения:
- Переведите Dynamics 365 FO Virtual Machine Dev или Test в режим обслуживания
- Обновление значения финансового измерения из кода X++ в Dynamics 365
- Добавить отображение или изменить метод через расширение в Dynamics 365
