Я создал специальную форму поиска в Axapta 3.0, в которой пользователь может выбрать OprId из источника данных ProdRoute. Перед отображением поиска устанавливается ProdId, который не может быть изменен пользователем. Пользователь может выбрать только OprId из ProdRoute производственного заказа с действительным ProdId. Согласно документации, можно запретить пользователю изменять запрос, заблокировав диапазон. Я сделал вот так:
qbrProdId.value(queryValue(_prodId));
qbrProdId.status(RangeStatus::Locked);
Здесь qbrProdId - это переменная типа QueryBuildRange, а _prodId указывает ProdId.
Когда отображается поиск, и пользователь пытается изменить фильтр, ProdId заблокирован. Хороший. Однако, когда пользователь нажимает Ctrl + F в поле ProdId поиска или если пользователь нажимает на Search на панели инструментов, можно ввести другой ProdId.
Как я могу предотвратить это?
Я подумал об изменении поля ProdId в сетке поиска на тип «Display» вместо того, чтобы быть полем источника данных. Но разве нет лучшего решения для этого?
(Кстати, запрос не создается автоматически, а создается вручную в методе "init" источника данных формы).