06.08.2009, 18:05 | #1 |
Участник
|
Дополнительный фильтр на smmActiviies форме.
Добрый день.
Такой вопрос: Сделал дополнительный фильтр на форме smmActivities --> TeamFilter. Смысл, показывать задания только тех работников, которые принадлежат к выбранной команде. Работает, но почему-то только один раз. Если я выбираю другую команду или удаляю запись в фильтре, вижу пустой Grid. Изменения в setupRanges на smmactivities_ds выглядит следующим способом: X++: datasourceForTeams = queryBuildDataSource.addDataSource(tablenum(emplTable)); datasourceForTeams.relations(true); datasourceForTeams.joinMode(JoinMode::ExistsJoin); . . . rangeForTeams = SysQuery::findOrCreateRange(datasourceForTeams, fieldnum(emplTable, DispatchTeamId)); X++: // If activities are not filtered on any employee if (!emplFilter && !teamFilter) { // Enable/disable ranges rangeForEmployee.enabled(false); rangeForPrivate.enabled(false); rangeForTeams.enabled(false); rangeRecId.enabled(true); // To show private and non-private activities for current employee AND non-private acitvities for other employees qStr = strfmt('((%1 == "%2") || ((%1 != "%2") && (%3 != %4)))', fieldstr(smmActivities, ResponsibleEmployee), smmUtility::getCurrentContact(), fieldstr(smmActivities,Sensitivity), enum2int(smmSensitivity::Privat)); rangeRecId.value(qStr); } // If activities are filtered on any employee else if(emplFilter && !teamFilter) { // Enable/disable ranges rangeForEmployee.enabled(true); rangeForPrivate.enabled(true); rangeRecId.enabled(false); rangeForTeams.enabled(false); // Set value for filter on employee rangeForEmployee.value(emplFilter); // Private activities will be only visible to owner of activities if (emplFilter != smmUtility::getCurrentContact()) { rangeForPrivate.value(queryValue(!smmSensitivity::Privat)); } else { rangeForPrivate.value(SysQuery::valueUnlimited()); } } else if(teamFilter && !emplFilter) { // Enable/disable ranges rangeForEmployee.enabled(false); rangeForPrivate.enabled(true); rangeRecId.enabled(false); rangeForTeams.enabled(true); // rangeForTeams.value(teamFilter); teamFilterAnyType = teamFilter; select emplTableloc where emplTableloc.DispatchTeamId == teamFilterAnyType; if (emplTableloc.EmplId != smmUtility::getCurrentContact()) { rangeForPrivate.value(queryValue(!smmSensitivity::Privat)); } else { rangeForPrivate.value(SysQuery::valueUnlimited()); } } else if (teamFilter && emplFilter) { //Enable/disable ranges rangeForEmployee.enabled(true); rangeForPrivate.enabled(false); rangeRecId.enabled(false); rangeForTeams.enabled(true); // rangeForEmployee.value(emplFilter); rangeForTeams.value(teamFilter); } X++: boolean modified() { boolean ret; ; ret = super(); // Set team filter teamFilter = teamFilterControl.text(); // Run query again with the new filtering smmActivities_ds.executeQuery(); //info(strfmt("%1", teamFilter)); return ret; } Спасибо. |
|
Теги |
crm, поиск, фильтр |
|
Похожие темы | ||||
Тема | Ответов | |||
Фильтр на форме InventClassifierItemSelection | 11 | |||
Фильтр на форме в гриде | 1 | |||
Фильтр на Веб форме | 3 | |||
Фильтр на форме | 5 | |||
Не работает стандартный фильтр на форме | 4 |
|