Имя: Пароль:
1C
 
СКД: ресурсы и отбор
0 detec
 
07.02.11
16:04
Приветствую!

Кто-то практикует в отчётах на СКД добавление в поля отбора полей-ресурсов (к примеру, сумма продаж за период) и фильтрацию по ним? К примеру, есть отчёт о продажах на СКД, и мы хотим получить список контрагентов в этом отчёте, у которых сумма продаж за период, больше, скажем 10 000 руб.

Казалось бы, достаточно простое действие и очевидное действие, но если активно использовать виртуальные таблицы регистров накопления, и в отчёте несколько таких таблиц связаны между собой, то при фильтрации по ресурсу видно, что выводимый результат неверный. На вкладке связей наборов данных последние между собой связаны левым соединением (флажок "обязательная связь" везде отсутствует). Фильтрация производится по вспомогательному набору.

Кто-то сталкивался с подобным в аналогичных условиях?
1 detec
 
07.02.11
18:41
Помучавшись, пришёл к выводу, что отбирать можно только по полям основного набора, который не участвует в ресурсах. Очень жаль ((.
2 izekia
 
07.02.11
18:44
условие на СУММА(<ресурс>) не работает?
3 PVV65
 
07.02.11
18:45
(1) По моему это не так. Надо смотреть конкретный отчет. Если поля находятся среди доступных полей отбора - значит по ним можно отбирать. Если нет - ошибка в наборах данных.
4 detec
 
07.02.11
18:47
(2) Рассчитать его-то можно, на вкладке фильтрации. Но вот задать как условие - нет.

Я даже сделал так. В основной набор добавил фейковое поле со значение "ИСТИНА". В ресурсах рассчитал всё, как требуется. Вывести-то я могу, а фильтрация происходит по значению фейкового поля, а не по формуле ((.
5 detec
 
07.02.11
18:47
(4) на вкладке фильтрации => на вкладке "Ресурсы".
6 izekia
 
07.02.11
19:15
(6) можешь сделать упрощенный пример?
у меня все работает
7 detec
 
08.02.11
10:02
Попробовал в более простом отчёте. Отгрузки + возвраты - всё это сведено в набор-объединение, с вычисляемым полем ЧистаяОтгрузка, Отгрузка - Возврат.

Выставляю фильтр Отгрузка, Чистая Отгрузка > 10 000. Выдаёт 29 строк. На первый взгляд - всё работает.
Отключаем отбор по суммам, выставляем сортировку отчёта по возрастанию этих же показателей. Выводит всего 164 строки, с 58-й начинают идти суммы > 10 000. Но 164 - 57 = 107, никак не 29. Т.е. движлк СКД тупо не вывел значительное кол-во полей, причём данный момент никак нельзя перехватить программными средствами, кроме как тупо перепроверять всё глазами.

Возможно, простейшие отчёты типа выборки из виртуальной таблицы оборотов 1-го регистра накопления работают, как положено. Но пользователям такие простейшие, академические отчёты в 95 % случаев не нужны. Такие можно точно так же элементарно сделать конструктором отчёта, без СКД.
8 detec
 
08.02.11
10:03
З.Ы. Конфигурация самописная, отчётами занимаюсь много, так что проблема не в кривых руках.
9 PVV65
 
08.02.11
10:07
(7) Если не трудно, выложи описанный отчет или сбрось на мой ящик.
10 izekia
 
08.02.11
10:07
(7) через временную таблицу попробуй сделать, где фильтр будет работать на результирующей таблице
я просто не смог смоделировать примера, где бы у меня фильтр не работал
11 Vetal_978
 
08.02.11
10:08
Кстати, подскажите кто сталкивался с такой проблемой (а может и не проблемой):

В СКД запрос к виртуальной таблице остатков, у таблицы два ресурса. Так вот иногда хочу чтобы не попадали те записи, один из ресурсов которых равен нулю, т.е. в запросе добавляю условие

ГДЕ
   (&РазрешитьВыводВсехОстатков
   ИЛИ (МойРегистрНакопления.СуммаОстаток > 0))

На значение параметра &РазрешитьВыводВсехОстатков СКД не обращает внимания. Почему?
12 izekia
 
08.02.11
10:14
(11) а не обращает внимания каким образом?
13 detec
 
08.02.11
10:22
14 detec
 
08.02.11
10:25
(11) Может быть, что в макете компоновки условие вырезается. Нужно выполнить отладку через Универсальную консоль отчётов и посмотреть на текст запроса.

(7) Через временную таблицу, вероятно, можно сделать. Но я хочу по максимуму использовать механизм СКД, а не ваять тяжеленные запросы там, где, по идее, должно корреткно работать соединение наборов.
15 PVV65
 
08.02.11
10:36
(13) Такой отчет можно разбирать только на реальной базе. Извини.
16 detec
 
08.02.11
10:41
В (8) я предупредил, что конфа самописная. Однако, учитывая отсутствие кода в отчёте, думаю, не составит труда найти в типовой конфе под 8.2 похожий по структуре отчёт и затестить аналог (7).
17 Vetal_978
 
08.02.11
11:19
(12) не обращает внимания как если б условие было таким:

ГДЕ
   МойРегистрНакопления.СуммаОстаток > 0

(14) условие целиком не вырезается, МойРегистрНакопления.СуммаОстаток > 0 - срабатывает
18 Vetal_978
 
08.02.11
15:01
(17) а вот сейчас уже работает... видимо это я где-то накосячил...
Оптимист верит, что мы живем в лучшем из миров. Пессимист боится, что так оно и есть.