|
v7: Запрос не работает фильтр по группам | ☑ | ||
---|---|---|---|---|
0
andrew231
11.07.13
✎
14:08
|
Добрый день! Не могу понять почему не работает фильтр в запросе? Причем он не работает только если выбираешь группу?
Текст запроса: ТЗ=СоздатьОбъект("ТаблицаЗначений"); Запрос=СоздатьОбъект("Запрос"); ДатаНач=Дата1-40; ТекстЗапроса = " |Период с ДатаНач;"; ТекстЗапроса = ТекстЗапроса + " Без итогов; |Контрагент = Регистр.ЗаказыНаПоставку.Контрагент; |ЗаказНаПоставку = Регистр.ЗаказыНаПоставку.ЗаказНаПоставку; |ТМЦ = Регистр.ЗаказыНаПоставку.ТМЦ; |ТМЦЗаказа = Регистр.ЗаказыНаПоставку.ТМЦЗаказа; |ДатаПрихода = Регистр.ЗаказыНаПоставку.ДатаПрихода; |Количество = Регистр.ЗаказыНаПоставку.Количество; |Функция КвоЗ_НачОст = НачОст(Количество); |Функция КвоЗ_Приход = Приход(Количество); |Функция КвоЗ_Расход = Расход(Количество); |Функция КвоЗ_КонОст = КонОст(Количество); |Группировка Контрагент без групп без упорядочивания; |Группировка ЗаказНаПоставку без упорядочивания; |Группировка ТМЦ без групп без упорядочивания; |Группировка ТМЦЗаказа без групп без упорядочивания; |Группировка ДатаПрихода без упорядочивания; |Группировка Документ; |"; //Условия Если ПустоеЗначение(ВыбКонтрагент)=0 Тогда ТекстЗапроса = ТекстЗапроса + " | Условие(Контрагент = ВыбКонтрагент ); | "; КонецЕсли; //Условия Если ПустоеЗначение(ВыбТМЦ)=0 Тогда ТекстЗапроса = ТекстЗапроса + " | Условие(ТМЦЗаказа = ВыбТМЦ); | "; КонецЕсли; Если (ПустоеЗначение(Дата1)=0) И (ПустоеЗначение(Дата2)=0) Тогда ТекстЗапроса = ТекстЗапроса + " | Условие((ДатаПрихода >=Дата1) И (ДатаПрихода <=Дата2)); | "; КонецЕсли; //Выполнить запрос Если Запрос.Выполнить(ТекстЗапроса)=0 Тогда Сообщить("Запрос не выполнен!"); КонецЕсли; Запрос.Выгрузить(ТЗ); Возврат ТЗ; |
|||
1
Darych
11.07.13
✎
14:09
|
а че ты группе приравниваешь...
|
|||
2
andrew231
11.07.13
✎
14:10
|
(1) ну мне нужно вывести все ТМЦ в этой группе
|
|||
3
vladko
11.07.13
✎
14:11
|
для группы надо в условии использовать не "=", а "В"
|
|||
4
andrew231
11.07.13
✎
14:12
|
(3) Условие(ТМЦЗаказа в ВыбТМЦ)?
|
|||
5
Морозов Александр
11.07.13
✎
14:12
|
группы не пишутся в регистры
|
|||
6
vladko
11.07.13
✎
14:12
|
(4) да, попробуй
|
|||
7
Морозов Александр
11.07.13
✎
14:12
|
(3) да прям...
|
|||
8
andrew231
11.07.13
✎
14:14
|
пробую...
|
|||
9
vladko
11.07.13
✎
14:14
|
Если ПустоеЗначение(ВыбТМЦ)=0 Тогда
Если ВыбТМЦ.ЭтоГруппа() = 1 Тогда ТекстЗапроса = ТекстЗапроса + " | Условие(ТМЦЗаказа В ВыбТМЦ); | "; иначе ТекстЗапроса = ТекстЗапроса + " | Условие(ТМЦЗаказа = ВыбТМЦ); | "; КонецЕсли; КонецЕсли; |
|||
10
andrew231
11.07.13
✎
14:15
|
(9) спасибо ;) я уже написал. уже отчет формируется. тяжеленький он у меня получился.
|
|||
11
andrew231
11.07.13
✎
14:16
|
жду рез-тат
|
|||
12
Морозов Александр
11.07.13
✎
14:16
|
ниче не будет
|
|||
13
1Сергей
11.07.13
✎
14:16
|
(9) это лишнее
|
|||
14
andrew231
11.07.13
✎
14:17
|
(12) верно. как быть то?
|
|||
15
vladko
11.07.13
✎
14:18
|
по идее
ТекстЗапроса = ТекстЗапроса + " | Условие(ТМЦЗаказа В ВыбТМЦ); | "; даже если не группа выбрана, то прокатывает |
|||
16
vladko
11.07.13
✎
14:18
|
(14) он имел в виду (15)
|
|||
17
andrew231
11.07.13
✎
14:20
|
(15) и (9) не работает. не пойму почему?
|
|||
18
andrew231
11.07.13
✎
14:21
|
0 строк в результате запроса!
|
|||
19
1Сергей
11.07.13
✎
14:22
|
(18) значит нет данных удовлетворяющим условиям запроса
|
|||
20
Darych
11.07.13
✎
14:22
|
выбтмц
|
|||
21
Морозов Александр
11.07.13
✎
14:22
|
(15) буква "в" в запросе предполагает что в данном случае "ВыбТМЦ" это подмножество значений... и просто проверяет есть ли "ТМЦЗаказа" в этом списке... но никак не группу справочника
|
|||
22
Морозов Александр
11.07.13
✎
14:24
|
Если ПустоеЗначение(ВыбТМЦ)=0 Тогда
Если ВыбТМЦ.ЭтоГруппа() = 1 Тогда ТекстЗапроса = ТекстЗапроса + " | Условие(ТМЦЗаказа.Родитель = ВыбТМЦ); | "; иначе ТекстЗапроса = ТекстЗапроса + " | Условие(ТМЦЗаказа = ВыбТМЦ); | "; КонецЕсли; КонецЕсли; |
|||
23
Морозов Александр
11.07.13
✎
14:25
|
и то если всего 1 уровень групп
|
|||
24
1Сергей
11.07.13
✎
14:25
|
(21) Да ты что??? А документацию читать не пробовал?
|
|||
25
Морозов Александр
11.07.13
✎
14:25
|
(24)да... и че там
|
|||
26
Морозов Александр
11.07.13
✎
14:25
|
?
|
|||
27
viktor_vv
11.07.13
✎
14:26
|
(21) Всю жизнь оно работало с иерархической проверкой вхождения, а тут вдруг бац, и нет.
|
|||
28
Морозов Александр
11.07.13
✎
14:26
|
ну хз..
|
|||
29
viktor_vv
11.07.13
✎
14:27
|
Если на принадлежность проверяется значение типа элемент справочника, то проверка выполняется с учетом его возможного вхождения в группу справочника.
|
|||
30
andrew231
11.07.13
✎
14:31
|
Группа1
НОМ1 НОМ2 Группа2 НОМ3 НОМ4 Группа3 Ном4 Ном5 Ном6 Вот я выбираю группу 3 и не получаю ничего. Как получить: ном4 ном5 ном6 |
|||
31
viktor_vv
11.07.13
✎
14:31
|
Автор, убери это условие,
ТекстЗапроса = ТекстЗапроса + " | Условие((ДатаПрихода >=Дата1) И (ДатаПрихода <=Дата2)); | "; результат выводится ? |
|||
32
andrew231
11.07.13
✎
14:31
|
ща...
|
|||
33
andrew231
11.07.13
✎
14:34
|
нет не выводится...
|
|||
34
Морозов Александр
11.07.13
✎
14:35
|
слушай точно...работает. чет забывать стал семерку
|
|||
35
1Сергей
11.07.13
✎
14:35
|
(33) другие условия отключи
|
|||
36
1Сергей
11.07.13
✎
14:36
|
имхается мне, что ты не там смотришь
|
|||
37
viktor_vv
11.07.13
✎
14:36
|
Значит ты выбираешь группу, по которой нет данных в регистре.
Убери "без групп" у ТМЦЗаказа и посмотри какие группы тебе выведет без условия по ТМЦ, их и выбирай. |
|||
38
andrew231
11.07.13
✎
14:43
|
я приведу пример по (30) :
допустим я провел документ у которого в ТЧ ном4, ном5, ном6 - они все принадлежат группе "группа3" Теперь мне нужно в отчете сделать фильтр ВыбТМЦ="Группа3" и отчет должен выдать ном4 ном5 ном6 он ничего не выдает, но если я выбираю, например, ном4 - отчет выдает ном4. |
|||
39
andrew231
11.07.13
✎
14:45
|
(38) в регистре ном4, ном5, ном6 записана...
|
|||
40
viktor_vv
11.07.13
✎
14:46
|
Ты не путаешь ТМЦ и ТМЦЗаказа ?
|
|||
41
andrew231
11.07.13
✎
14:46
|
нет!
|
|||
42
viktor_vv
11.07.13
✎
14:47
|
И это у тебя все измерения или может ТМЦЗаказа реквизит ?
|
|||
43
1Сергей
11.07.13
✎
14:49
|
(41) покажи текст обработки после внесения поправки.
И ещё. Мне кажется, что ты смотришь не там, где надо. Записываешь обработку в одном месте, а открываешь из другого, как вариант |
|||
44
viktor_vv
11.07.13
✎
14:50
|
И это, а где ты смотришь результат ?
Вставь Запрос.Выгрузить(ТЗ); ТЗ.ВыбратьСтроку() ; Возврат ТЗ; |
|||
45
viktor_vv
11.07.13
✎
14:50
|
(43) +1.
|
|||
46
Darych
11.07.13
✎
14:51
|
(44) возврат-то как изврат?)
|
|||
47
viktor_vv
11.07.13
✎
14:52
|
(46) Ну это у него так было, может он вывод в другой процедуре делает, зачем через ТЗ не знаю.
|
|||
48
andrew231
11.07.13
✎
14:59
|
(42) Измерение
(43) Какой поправки, здесь много вариантов предложили. фильтры все я отключил, хотя и с ними все работало. Эта процедура формирует данные и возвращает ТЗ в процедуру которая их обрабатывает. Но что обрабатывать когда ТЗ.КоличествоСтрок()=0 в результате запроса? Проблема именно в том что запрос не тянет данные по указанному условию. (44) результат смотрю в отладчике. 0 строк. структура ТЗ согласно запросу прорисовалась а данных нет. |
|||
49
1Сергей
11.07.13
✎
15:01
|
тебе достаточно заменить один символ.
Если ПустоеЗначение(ВыбТМЦ)=0 Тогда ТекстЗапроса = ТекстЗапроса + " //| Условие(ТМЦЗаказа = ВыбТМЦ); | Условие(ТМЦЗаказа В ВыбТМЦ); | "; КонецЕсли; |
|||
50
Ёпрст
11.07.13
✎
15:11
|
Покажи, как ты определяешь ВыбТМЦ в коде.
|
|||
51
Ёпрст
11.07.13
✎
15:11
|
Если че, .ТекущийЭлемент()
|
|||
52
andrew231
11.07.13
✎
15:13
|
(50) ВыбТМЦ - это элемент диалога ;)
(49) проблема решена! сам не знаю как (сделал так как в (49), хотя так я уже делал и оно не работало, странно) спасибо всем за помощь. п.с. скорее всего проблема что то с датами не так, ну буду ковырять |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |