Я создал пользовательскую форму поиска в 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 или если пользователь нажимает кнопку «Поиск» на панели инструментов, можно ввести другой идентификатор ProdId.
Как я могу предотвратить это?
Я думал об изменении поля ProdId в сетке поиска, чтобы оно имело тип «Отображение» вместо того, чтобы быть полем источника данных. Но разве нет лучшего решения для этого?
(Кстати, запрос не создается автоматически, а создается вручную в методе «init» источника данных формы).