Показать сообщение отдельно
Старый 27.08.2024, 11:28   #1  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,996 / 3293 (117) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Тема старая но отпишу здесь, так как было обсуждение проблемы с коллегами по работе.
Предлагаемые здесь решения - антипаттерн. Нужно избегать модификации кода с добавлением методов на лету.

Лучше уж в executeQuery датасорса достать query перед super() и явно выставить сортировки какие нам надо, например так:

X++:
public void executeQuery()
{
    Query   query;
    ;

    query = this.queryRun() ? this.queryRun().query() : this.query(); // при первом запуске this.queryRun() равен null

    // прибиваем гвоздями сортировку как нам надо:
    query.dataSourceTable(TableNum(...)).sortClear();
    query.dataSourceTable(TableNum(...)).addSortField(fieldNum(..., ...));
    // или можно как-то иначе поработать с query - убрав из сортировки запрещенные поля
    
    super();
}
А в общем случае, SysTableLookup можно модифицировать подставив туда форму пустышку с датасорсом, но common табличкой как в SysTableBrowser

Последний раз редактировалось Logger; 27.08.2024 в 11:32.