СКД группировки - вывести без суммирования

Внимание! Тема закрыта. Добавлять сообщения в закрытую тему запрещено.
1. ikar-nikolay 104 14.12.13 15:11 Сейчас в теме
Добрый день, уважаемые!

Прошу прохелпить! Задача кажется простой, но что-то с первого раза не получилось (((
Без лишней воды, сразу по факту: получаю результат в СКД (левее не картинке) из запроса (правее на картинке)

Хотелось бы в группировках видеть не сумму по группе, а значения количеств сгруппированного элемента (на картинке левее, указано стрелочкой). Подскажите путь решения этой задачки?

ПС: экспериментировал с группировками, с ВычислитьВыражение(), но не получил нужного. Удалял ресурсы, но тоже не то. Думаю менять запрос, но решил спросить мнение знающих. Хелпните, кто знает.
По теме из базы знаний
Вознаграждение за ответ
Показать полностью
Найденные решения
14. BAPBAP 16.12.13 13:02 Сейчас в теме
В (13) неверно написал. У нас же в выражении МИНИМУМ. Поэтому, в других группировках тоже будет минимум. Чтобы решить задачу ресурсами надо изменить структуру запроса. Допустим есть таблица с заготовками и таблица с марками. Эти две таблицы надо ОБЪЕДИНИТЬ. В результате, получим что-то типа:
Ось = Ось1, Марка = Марка1, Заготовка = Null, Количество = 0, КоличествоМарки = 10 - строка из таблицы марок
Ось = Ось1, Марка = Марка1, Заготовка = Заготовка1, Количество = 5, КоличествоМарки = 0 - строка из таблицы заготовок
Ось = Ось1, Марка = Марка1, Заготовка = Заготовка2, Количество = 5, КоличествоМарки = 0 - строка из таблицы заготовок
и т.д.

тогда в ресурсах вместо МИНИМУМ() смело используем СУММА()
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
3. AllexSoft 14.12.13 19:17 Сейчас в теме
(1) ikar-nikolay, в запрос вводим поле "1" как КоличествоЗаписей
ну а дальше в ресурсах кидаем количество еще раз в ресурсы, ставим Вычислять по группировки, ну а в поле выражения пишем Сумма(КоличествоЗаписей)
2. Bukaska 140 14.12.13 18:03 Сейчас в теме
В подсчете группировок использовать функцию Количество?
Или вам нужно иначе, чтобы знать какой элемент повторяется сколько раз? Тогда в СКД где группировочные и суммовые поля, в суммовом поле использовать функцию для ресурса - Количество различных
Пробовали с количественными функциями?
4. echo77 1863 14.12.13 20:26 Сейчас в теме
Количества через запятую вевести что ли?
Не пойму, что вы хотите
5. ikar-nikolay 104 15.12.13 00:57 Сейчас в теме
Ага! Не совсем удачный результат запроса. "Количество" тут не помощник или что-то не домысливаю.

На самом деле хочется визулизировать следующее:
Тест/Б1-0 по спецификации нужно 3 штуки (Количество), дли изготовления которых необходимо:
Тест/14 - 6 шт.
Тест/25 - 9 шт.
Тест/30 - 9 шт.
Тест/4 - 3 шт.

и представить виде:

_______________Группировка________________
Тест/Б1-0 - 3 шт.
__________________________________________
Тест/14 - 6 шт.
Тест/25 - 9 шт.
Тест/30 - 9 шт.
Тест/4 - 3 шт.

у меня же в группировку (вместо 3 шт.) попадает сумма 6 + 9 + 9 + 3 = 27 шт. (на картинке показано синим).
6. ikar-nikolay 104 15.12.13 06:25 Сейчас в теме
Представленный запрос разобрал на 2: первый с заготовками (где поле марка заполнено), второй - с марками (где поле марка пустое) и левым соединением их соединил по маркам и этот запрос передал в СКД.

Без создания ресурсов создал 2 группировки (по маркам и заготовкам) с перечнем полей, в одинаковой последовательности вывода. Получилось ровненько и красивенько.



Но... без итогов!!! Что тоже не хорошо.

Уже есть желание плюнуть на СКД и все что нужно сделать в Дереве с полуручным редактированием.
7. echo77 1863 15.12.13 14:06 Сейчас в теме
Вот это:
Тест/Б1-0 - 3 шт.

где в запросе получается? Где в выборке написано, что Тест/Б1-0 надо 3?
8. ikar-nikolay 104 15.12.13 15:04 Сейчас в теме
(7) echo77, правая картинка в первом сообщении поле "Заготовка". Просуммируй.
9. echo77 1863 15.12.13 21:50 Сейчас в теме
(8) Тогда не понимаю что мешает сделать так же в СКД?
Для группировки Марка марка ресурс Количество расчитывать как Сумма() ...
Надо еще раз смотреть что дает выборка и как вы группируете
10. ikar-nikolay 104 15.12.13 22:02 Сейчас в теме
(9) echo77, Посмотрите последнюю картинку (сообщение 6), на ней Тест/Б1-1 показывает именно то, что мне нужно, Т.е. для изготовления этой марки нужны следующие заготовки, причем количество заготовок кратно количеству создаваемых марок.
В этом случае для создания 2-х марок Тест/Б1-1, нужны соответственно
/14 заготовки - 2 шт,
/25 заготовки - 4 шт,
/30 заготовки - 4 шт,
/5 заготовки - 2 шт.

Надо визуализировать в точности как на последеней картинке, только что бы ещё можно было просуммировать по группировкам выше. Т.е. если смотреть последнюю картинку (сообщение 6), то по группировке Ось, и Объект.
Если это делать стандартными средствами СКД, то я не увижу марок - 2, а увижу сумму по заготовкам (2+4+4+2). Сейчас проблема ясна?
11. BAPBAP 16.12.13 01:33 Сейчас в теме
Эта задача легко решается на закладке "Ресурсы". Допустим в запросе у вас есть 2 поля: КоличествоМарки, Количество. На закладке ресурсы добавляем 2 строки:
Поле: Количество, Выражение: Сумма(Количество), Рассчитывать по: Заготовка
Поле: Количество, Выражение: Максимум(КоличествоМарки), Рассчитывать по: Марка

Иными словами, для одного поля на каждую группировку можно задать свое выражение
12. ikar-nikolay 104 16.12.13 04:05 Сейчас в теме
(11) BAPBAP, респектоз, однозначно!!! Не знал этого.

Осталась последняя заморочка, правильно проссумировать вышестоящие группировки как указано на картинке.

Группировку Ось проссумировать получилось через ВычислитьВыражениеСГруппировкойМассив() (может и не в те дебри залез), но вот выше (Объект строительства и Общие итоги) достать никак не могу. (((
13. BAPBAP 16.12.13 09:02 Сейчас в теме
(12) если для вышестоящих группировок тоже нужно выводить количество марки, тогда для строки ресурса вместо "Рассчитывать по: Марка", указать и другие поля "Рассчитывать по: Марка, Ось, Объект строительства"
14. BAPBAP 16.12.13 13:02 Сейчас в теме
В (13) неверно написал. У нас же в выражении МИНИМУМ. Поэтому, в других группировках тоже будет минимум. Чтобы решить задачу ресурсами надо изменить структуру запроса. Допустим есть таблица с заготовками и таблица с марками. Эти две таблицы надо ОБЪЕДИНИТЬ. В результате, получим что-то типа:
Ось = Ось1, Марка = Марка1, Заготовка = Null, Количество = 0, КоличествоМарки = 10 - строка из таблицы марок
Ось = Ось1, Марка = Марка1, Заготовка = Заготовка1, Количество = 5, КоличествоМарки = 0 - строка из таблицы заготовок
Ось = Ось1, Марка = Марка1, Заготовка = Заготовка2, Количество = 5, КоличествоМарки = 0 - строка из таблицы заготовок
и т.д.

тогда в ресурсах вместо МИНИМУМ() смело используем СУММА()
16. ikar-nikolay 104 16.12.13 13:20 Сейчас в теме
(14) BAPBAP, ну да, теоретически должно заработать. У меня же там левое соединение...
Сейчас попробую!!!!
17. ikar-nikolay 104 16.12.13 20:38 Сейчас в теме
(14) BAPBAP, все верно, всё вышло, но появилось одно маленькое но...

с марки остается пустое значение. Если от него пытаться избавиться через Отбор, то пропадают расчеты группировок, поскольку именно от этого значения и ведется расчет.

В принципе, что бы пустое поле не бросалось в глаза, изменил сортировку по Заготовке и это поле переместилось вниз (типа задумка режиссера для лучшей визуализации), но избавиться от него не получилось.
Не, можно конечно обработать массив перед помещением его в СКД и добавить одно из значений из группировки, что бы слились в одну строку. Если ничего цивилизованного не предложится, то так и сделаю.

Поэтому последний вопрос - можно ли цивилизованно избавиться от пустых значений заготовок, что бы расчеты группировок остались?

ПС: Тема и предложенные $m (я ещё подложу немного) в любом случае ваши.
15. ikar-nikolay 104 16.12.13 13:05 Сейчас в теме
(13) BAPBAP, если я сделаю как вы говорите,

то вышестоящие группировки покажут Максимум (подчеркнул чертой), а нужна сумма.
Поэтому вижу решение в выделении группировок в отдельное поле, но какая формула для подсчета суммы?
18. ikar-nikolay 104 16.12.13 20:51 Сейчас в теме
Все сделал сам - в группировке заготовка установил отбор по Заготовке - Заполнено и в доп. настройках вывод отбора поставил "Не выводить". И все получилось!!!
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот