Выборка вариаций и подсчет итогов по ним СКД

1. UPKA 31.01.25 10:11 Сейчас в теме
Здравствуйте, подскажите пожалуйста.

Имеется регистр накопления Заказ:

Измерения:

Обед
ВидБлюдо
Блюдо

Необходимо подсчитать продажи разных вариаций:
Обед 1 = 10шт (группировка)
борщ/мясо по французски/кампот = 5 шт
уха/котлеты/квас = 5 шт
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. starik-2005 3155 31.01.25 11:28 Сейчас в теме
Выбрать
Количество(обед),
ВидБлюдо,
Блюдо
ИЗ Регистр
Сгруппировать по ВидБлюдо,Блюдо

На выходе количество обедов, содержащих различные "видблюдо+блюдо".

Если же обед содержит разные блюда, и нужно посчитать, какие виды обедов сколько раз встречались, то уже сложнее, т.к. для получения набора нам нужны для каждого блюда разные колонки. Если все они являются разными вариациями "видблюдо", то нужно столько левых соединений, сколько у нас "видблюдо":

Выбрать
  т1.Обед,
  т1.Блюдо б1,
  т2.Блюдо б2,
  т3.Блюдо б3,
  тН.Блюдо бН
ПОМЕСТИТЬ ВТБлюдаОбедов
ИЗ Регистр т1
ЛЕВОЕ СОЕДИНЕНИЕ Регистр т2
ПО т1.Обед = т2.Обед И т2.видБлюдо = &вид2
// далее остальные левые соединения по видам блюдей с тН.видБлюдо = &видН
ГДЕ 
т1.видБлюдо = &вид1;
ВЫБРАТЬ
Количество(обед),
б1,б2,б3,...бН
ИЗ ВТБлюдаОбедов
СГРУППИРОВАТЬ ПО б1,б2,б3,...бН
Показать
Ну и ошибку в коде сам найдешь )))
3. UPKA 31.01.25 11:47 Сейчас в теме
(2)
тН.Блюдо бН


Не совсем мне понятно.
Необходимо не виды обедов посчитать, а именно создать набор. Допустим, по регистратору были проданы: борщ, жаркое, компот - это 3 записи в регистре, возможно и больше вариаций.
В итоге в отчете, это должна быть одна строка "борщ/жаркое/компот. И именно под группировкой обед.
4. starik-2005 3155 31.01.25 11:53 Сейчас в теме
(3)
В итоге
Читай вторую часть (2) до полного просветления.
5. UPKA 31.01.25 13:11 Сейчас в теме
(4) ВидыБлюд не предопределенный список, это справочник, т.е. сотрудник может добавить еще варианты и тогда данная конструкция не сработает.
6. starik-2005 3155 31.01.25 13:40 Сейчас в теме
(5)
данная конструкция
Ее можно руками собрать. Имею ввиду текст запроса.

Ну или написать код на языке программирования без всяких там запросов.

Ну или переработать структуру хранения данных - произвести денормализацию. Например, сделать еще один регистр, в котором два поля: обед и соединенные строки блюд. Тогда все решается количеством различных. Главное - это блюда через разделитель писать, например "суп;макарноы;котлета;компот;" Совсем упоротые делают для этого справочник ключей аналитики, но я их презираю...
7. UPKA 31.01.25 15:17 Сейчас в теме
Задачку решил составлением собственного запроса и добавлением в набор данных объект.
Оставьте свое сообщение

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