Показать сообщение отдельно
Старый 31.05.2004, 10:21   #13  
Кирилл
Гость
 
n/a
;-(
Уважаемый Сергей,
как раз следование примеру KMKnowledgeCollectorCollection и приводит к обрушению фильтров пользователя при изменении запроса в зависимости от состояния контролов на форме.

В форме KMKnowledgeCollectorCollection используется стандартный подход:
PHP код:
void init()
{
    
super();
    
queryBuildRange this.query().datasourceNo(1).addRange(fieldNum(KMCollectionkmCollectionId));
    
queryBuildRange.status(RangeStatus::HIDDEN);
}

и

void executeQuery
()
{
    ;
    
queryBuildRange.value(queryValue(KMCollectionId));
    
super();

Если Вы начнете читать эту тему с первого постинга, то обнаружите, что у Андре как и у меня, как и у других разработчиков этот метод вызывает нарекания.
Причина нареканий: если в форме установлен фильтр пользователем и мы пытаемся программно установить queryBuildRange, то действие фильтра пользователя будет отменено.

Для решения данной проблемы Wamr предложил использовать
не this.query().datasourceNo(1), а this.QueryRun().query().datasourceNo(1).
Мой вопрос как раз и заключается в том, как грамотно использовать this.QueryRun().query().datasourceNo(1).
Все чего я добился в этом направлении, это полное совпадение поведения моего кривого кода с поведением кода чистого и очень наглядного примера.
А это поведение меня не устраивает по изложенным выше причинам.

Обсуждение это было давно, значит, как минимум, Wamr и Андре решили проблему.