Имя: Пароль:
1C
1С v8
СКД: как суммировать в итогах результаты группировок, а не данные строк?
0 cube033
 
04.12.14
05:39
Введение (можно не читать)):
Не совпало желаемое с действительным при создании отчета. А именно потребовалась детализация по полю, не являющемуся реквизитом регистра.
Отчет нужен по остаткам и оборотам. Если не задавать периодичность, то получается замечательный отчет сгруппированный изначально по всем реквизитам. Но в моем случае поле нужно вытянуть из регистратора, а значит нужно установить периодичность: регистратор. Тут-то и появляется куча строк с одинаковыми реквизитами, но разными остатками (на разные даты). Возникает вопрос, как группировать записи, а именно, что делать с остатками? Сумма, среднее, максимум - все это не подходит (если у вас позавчера было 10 яблок, вчера 11 яблок, а сегодня 9 - это не значит, что в итоге у вас 30 яблок). Взял отдельно обороты, отдельно остатки и склеил их, получив одинаковый остаток, для одинаковых реквизитов. В итоге могу группировать, используя максимум (минимум, среднее) для остатков.
Вопрос (а вот тут нужно читать):
Структура результата запроса СКД такова:
У ООО "Фруктовый рай" купили 5 зеленых яблок, конечный остаток 9 зеленых яблок;
У ЗАО "Плодовый Ад"   купили 4 зеленых яблока,конечный остаток 9 зеленых яблок;
У ООО "Фруктовый рай" купили 7 красных яблок, конечный остаток 7 красных яблок;
Таблицы в отчете будет две и в первой нет ни слова о контрагентах, поэтому она должна выглядеть так
купили 9 зеленых яблок ,конечный остаток 9 зеленых яблок;
купили 7 красных яблок, конечный остаток 7 красных яблок;
Это сделать не трудно обороты суммируем, а по остаткам берем максимум
Проблема в итогах по этой таблице. Должно получится так:
  купили 16 яблок, конечный остаток 16 яблок;
По умолчанию получится так:
  купили 16 яблок, конечный остаток 9 яблок; - так как берется максимум по остаткам.
Можно использовать "Рассчитывать по" и в итогах взять сумму остатков, тогда получится так:
  купили 16 яблок, конечный остаток 25 яблок; так как суммируются все строки.
Вопрос: как суммировать результаты группировок?
1 Cube
 
04.12.14
05:58
(0) Опять ты... :)

"Это сделать не трудно обороты суммируем, а по остаткам берем максимум"
Мухаха))) Весело будет, когда у тебя по факту остаток 0, а отчет покажет 9, т.к. 9 > 0...

Всё, что тебе нужно, это взять одну единственную таблицу "ОстаткиИОбороты" и поставить у неё периодичность "Авто".
2 cube033
 
04.12.14
07:03
Авто (при использовании реквизитов регистратора) в итоге срабатывает как при периодичности "Регистратор". Ну а дальше всё, как описано в разделе "можно не читать".
Итог:
купили 100500         зеленых яблок ,конечный остаток Дофига       зеленых яблок;
купили БольшеЧемНужно красных яблок, конечный остаток СлишкомМного красных яблок;

"Мухаха))) Весело будет, когда у тебя по факту остаток 0, а отчет покажет 9, т.к. 9 > 0..." Если остаток 0, то все значения (для данного сочетания реквизитов) будут 0. Максимум из 0;0;0;0;0; будет 0))
3 Cube
 
04.12.14
07:29
(2) А, теперь понял, что ты хочешь... А если в СКД на закладке "Ресурсы" указать поля, по которым нужно рассчитывать итог? Допустим, укажешь ты "Регистратор" и все остальные поля (кроме реквизитов полей), СКД для реквизитов выбранных полей будет считать итоги?
4 Cube
 
04.12.14
07:31
Ну или, как вариант, сделай две СКД: одну по-умолчанию, другую - для расшифровки...
5 cube033
 
04.12.14
13:17
Задача оказывается решается довольно просто. Я почему-то думал, что обязательно связывать наборы данных. Теперь я просто использую 2 набора данных. Один для остатков и оборотов без детализации по регистратору, второй только по оборотам с регистратором.
Оптимист верит, что мы живем в лучшем из миров. Пессимист боится, что так оно и есть.