Уважаемый Сергей,
как раз следование примеру KMKnowledgeCollectorCollection и приводит к обрушению фильтров пользователя при изменении запроса в зависимости от состояния контролов на форме.
В форме KMKnowledgeCollectorCollection используется стандартный подход:
PHP код:
void init()
{
super();
queryBuildRange = this.query().datasourceNo(1).addRange(fieldNum(KMCollection, kmCollectionId));
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 и Андре решили проблему.