Доброе время суток участникам форума!
Есть такой вопрос. почему-то не работает пользовательский фильтр. Возможно, я не так что-то указываю -- но все вроде верно.
Логика такая:
- создан новый справочник "отрасли КВЭД" (стандартный справочник "Отрасли" решила не "ломать")
- реестр переделан на древовидный (добавлено поле парентдИД и т.п.)
- создано доп.поле "полный путь", в котором генерируется названия предыдущих "уровней" (без текущего уровня -- на скриншоте есть пример). поле табличное, то есть информация хранится в бд.
- в запросе контрагентов создан пользовательский подзапрос для этого поля
Задача -- создать динамические группы по отраслям.
Проблема в том, что по некоторым контрагентам может быть заполнена отрасль значением 1го уровня (либо 2, либо 3), пока не уточнится 4й уровень (всего максимум 4 уровня). Поэтому, если указана группа, допустим, 2го уровня -- то в нее должны входить и те контрагенты, где отрасль либо она, либо "ниже по иерархии".
Но -- при нажатии на кнопку "применить" -- оно не фильтрует! отображает все записи. хотя должно отображать только 2, так как в одном контрагенте отрасль вообще не выбрана, а в другом -- другой "верхний" уровень. Даже не так, судя по моей логике отображать должно, наверное, только одну запись (тест 1).
Играться с условиями типа "чтобы было не пустым", "путь содержит или сама отрасль равна" я буду потом. Мне бы сейчас разобраться, почему не работает именно этот фильтр.
Еще -- можно, конечно, сделать фильтр типа "отрасль КВЭД равна"+выбрать все возможные значения соответствующих уровней. но это не выход, так как отрасль может добавится, удалиться и т.п. Разве что как временное решение.
п.с. бинарные файлы -- 3.3.2.179, Террасофт СРМ, скул 2008р2. кеш чистился.
Заранее спасибо за помощь.
Нравится
Ольга, для диагностики необходим полный текст запроса, который идет в базу данных. Рекомендую попробовать посмотреть профайлером и прикинуть примерный запрос на выборку в Management Studio. так будет проще понять, что именно реализовать в конструкторе запросов.
Здравствуйте, Анна!
профайлер показал, что в бд никаких запросов не шло. но я нашла ошибку -- оказывается, пользовательский фильтр нужно предварительно "завернуть" в exists-фильтр. переделала -- все теперь нормально фильтрует.
вопрос решен. спасибо за помощь!
Сомнительно, чтобы не шло никаких запросов в БД: либо у Вас настроены фильтры в профайлере, либо у данного пользователя нет разрешения на профайлинг на уровне БД.
Однако я рада, что вопрос решен. Приятной работы!
"Alimova Anna" написал:Сомнительно, чтобы не шло никаких запросов в БД: либо у Вас настроены фильтры в профайлере, либо у данного пользователя нет разрешения на профайлинг на уровне БД.
Вы меня немного не так поняли. Я имела ввиду, что не накладывалось никаких фильтров, а шел "обычный" запрос, который выбирал все данные для реестра.