![]() |
|
Отчёт с разным количеством группировок детализации. | ☑ | ||
---|---|---|---|---|
0
Kongo2019
05.05.25
✎
15:49
|
Доброго.
Есть такая задача. Есть данные о работах. Ключевой элемент детализации здесь будет мастерская. В общем некий уникальный борт. Передвижной к тому же. Соответственно необходимо построить отчет, красивый, с группировками. Но есть проблема, урони группировок разные. Максимальный может быть 4 уровня, то бишь. Край -> область -> район -> сектор -> борт. А может быть минимум. Край -> сектор -> борт И все это в динамике зараза. То бишь неделю может быть так, а неделю по другому. Работы оформляются доком. Для бортов я повесил периодический регистр сведений – ТекущиеМестоположение. Куда пишу данные при изменении дислокации. Для дока которым оформляются работы тоже есть регистр сведений. В который я пишу ссылку на док, и количество измерений равное количеству уровней. Данные беру из ТекущиеМестоположение. То бишь заголовок Ссылка, Край, область, район, сектор Записи такого типа Ссылка, край, пусто, пусто, сектор Ссылка, край, область, район, сектор Ссылка, край, пусто, район, сектор Ссылка, пусто, пусто, пусто, сектор И вот с отчетами начинается самое сложное. Понятно, что я пристегиваю свою иерархию, а в ней отверстия, и поэтому появляются пустые уровни. Но это фиг с ним, народ сказал пойдет. Тут интереснее на каждый элементы группировки сейчас будет план, то бишь план на край, район или(и) сектор. Как мне тут красиво это обыграть? Пока тупо соединять таблицу оборотов работ с таблицами планов и брать по планам максимум не придумал. Может есть у кого чего поумнее есть предложить? |
|||
1
maxab72
05.05.25
✎
15:52
|
А если у тебя план на край, как будешь раскидывать на нижележащие области и районы?
|
|||
2
Kongo2019
05.05.25
✎
15:53
|
(1) а никак, не надо его раскидывать.
|
|||
3
maxab72
05.05.25
✎
15:55
|
(2) тогда суммируй нижележащие и бери максимум, как и предполагал.
|
|||
4
Kongo2019
05.05.25
✎
15:57
|
(3)Да запросы монструозные получаются, сплошные соединения.
Я конечно их сваяю, но не нравится это решение мне. |
|||
5
shuhard
05.05.25
✎
16:00
|
(4) при переменной длине иерархии (от борта до края) красивых решений нет
|
|||
6
ЕRPe
05.05.25
✎
16:03
|
Сделать плоскую таблицу, понять как должно быть, потом уже группировать ее.
|
|||
7
Kongo2019
05.05.25
✎
16:05
|
(6) а толку, отверстия то не пропадают, дырки которые.
|
|||
8
maxab72
05.05.25
✎
16:19
|
(7) дырки в группировках это не страшно, а вто что тебе отчет должен показать, когда попросят вывести отчет в разрезе "район - мастерская", да еще и с планом...
|
|||
9
ЕRPe
05.05.25
✎
16:28
|
(7)Мозги проясняет как должно быть. Если уж плоскую таблицу не получается собрать то надо менять ТЗ.
|
|||
10
butterbean
05.05.25
✎
16:55
|
(0) просто интересно - почему Край -> область -> район -> сектор это не жесткая иерархия? Это не географические понятия?
|
|||
11
zenik
05.05.25
✎
16:59
|
Если делать отчет на СКД, то можно запросы сделать разными наборами данных и соединить (факт и план). Будет не так страшно :)
|
|||
12
LLeonidov
05.05.25
✎
19:24
|
(10) +1 тоже интересно. Если даже предположить что Сектор это свое деление в которое входит несколько районов. То Край\Область это не одна сущность?
Звучит как будто есть несколько планов у края свой план, у сектора свой. Они могут сходиться, а могут нет. Небось еще не всегда до бригады разбиты. Возможно для мест где слишком низкое присутствие до района не делят.. Инфа сотка есть пример отчета, который они уже отдают шефу. Но в целом не видя плоские данные придумывать то не знаю что, а потом переделать такое себе. ps: Автоматизируя бордель получаешь автоматизированный бордель. С бардаком так же. |
|||
13
Прохожий
05.05.25
✎
20:26
|
Не особо проблема, писать сейчас лень. Завтра попробую. Посыл в том, чтобы свести к Родитель-наследник пропуская дырки. Первый запрос получить пары пропуская дырки. Потом пойдет как по маслу
|
|||
14
Прохожий
05.05.25
✎
20:27
|
(12) Нет. И полк тоже не строгая иерархия... Такого дофига
|
|||
15
X Leshiy
05.05.25
✎
20:59
|
(0) По X Иерархия, по Y периоды? Да считай по каждой ячейке отборами, делов то)
|
|||
16
Maniac
06.05.25
✎
02:00
|
Я не понял проблемы. ты хочешь ограничить уровни иерархии?
|
|||
17
sergeev-ag-1977
06.05.25
✎
05:10
|
(0) Автор сам не понял что он хочет. Но он так и говорит.
Вангую что нужно "Край -> область -> район -> сектор" нужно объединить в 1 поле "мастерская" , затем поле "борт" и задача становится технически простой. Если поле "Край" есть везде, то в "мастерскую" можно запихать "область -> район -> сектор". |
|||
18
Kongo2019
06.05.25
✎
08:55
|
(12)
Такая иерархия связана с разными источниками финансирования. Максимально длинная цепочка — это регионы Для примера Регионы(общий признак)-Южный-Сектор2-Бот17 Здесь план будет на Южный Самая короткая Федералы(общий признак)-Сектор12-Борт21 Здесь план будет на Сектор12 |
|||
19
Kongo2019
06.05.25
✎
08:55
|
(9) Да собрал я плоскую таблицу давно и даже отчет готов. Но не красиво как-то.
|
|||
20
maxab72
06.05.25
✎
08:55
|
"Но не красиво как-то." оформи все в розовом стиле.
|
|||
21
Азат
06.05.25
✎
09:17
|
эта же история плюс-минус напоминает Оборотку на СКД. У разных счетов разное количество субконто и, соответственно, разное количество группировок
|
|||
22
Kongo2019
06.05.25
✎
10:47
|
(20) Это к коду, кузявый у меня запрос, больно много соединений.
|
|||
23
Fish
06.05.25
✎
12:23
|
(22) Если запрос выполняется за приемлемое время, то какая разница, сколько в нём соединений? Вот если тормозит, тогда можно и об оптимизации задуматься.
|
|||
24
Kongo2019
06.05.25
✎
12:49
|
Ладно хер с ним запросом.
Помогите лучше с СКД. На входе запроса область, район, сектор, факт, план Но планы, то сектор то район, как блин извернутся чтобы вниз цифры не падали, а потом итоги кривые получаются. То бишь привязать в уровню группировки как-то. Группировка сейчас так Область -Район --Сектор план тут сечас выводится и в итоги суммируется. ---Борт, факт. План я убрал чтобы не выводился Но как бы извернутся, может флажок в запрос воткнут что это план сектора, а эти цифры план района, и по нему условие где-то воткнуть? Мне надо план сектора выводить на уроне группировки сектора, план района на уровне группировки района. Есть такое вообще в СКД? |
|||
25
Fish
06.05.25
✎
12:51
|
(24) Ну так в ресурсах укажи, по каким группировкам считать, а по каким - нет.
|
|||
26
Kongo2019
06.05.25
✎
12:54
|
(25) Не то это. У меня план сектора идет снизу, мне надо чтобы на этот уровень не падали цифры плана района.
|
|||
27
Мультук
гуру
06.05.25
✎
13:01
|
(24)
СКД ресурс выражение, определение группировок в ресурсе В первом сообщении я спрашивал о таком. Рис из сообщения еще живы, а вот демо-отчёт найти не смог Но никто не смог меня понять Так как у тебя фактически иерархия сверху вниз жОсткая. То вполне подойдёт решение, которое для этого примера нашёл я Улица, Дом, Квартира это твои Область, Район, Сектор Колво -- это некий ресурс ВЫБОР КОГДА ВЫчислитьВыражение("Сумма(колво)", "Улица") IS NOT NULL И ВЫчислитьВыражение("Сумма(колво)", "Дом") IS NOT NULL И ВЫчислитьВыражение("Сумма(колво)", "Квартира") IS NOT NULL Тогда "Улица, Дом, Квартира" КОГДА ВЫчислитьВыражение("Сумма(колво)", "Дом") IS NOT NULL И ВЫчислитьВыражение("Сумма(колво)", "Улица") IS NOT NULL Тогда "Улица, Дом" КОГДА ВЫчислитьВыражение("Сумма(колво)", "Улица") IS NOT NULL И ВЫчислитьВыражение("Сумма(колво)", "Квартира") IS NOT NULL ТОГДА "Улица, Квартира" КОГДА ВЫчислитьВыражение("Сумма(колво)", "Дом") IS NOT NULL И ВЫчислитьВыражение("Сумма(колво)", "Квартира") IS NOT NULL ТОГДА "Дом, Квартира" КОГДА ВЫчислитьВыражение("Сумма(колво)", "Квартира") IS NOT NULL Тогда "Квартира" КОГДА ВЫчислитьВыражение("Сумма(колво)", "Дом") IS NOT NULL Тогда "Дом" КОГДА ВЫчислитьВыражение("Сумма(колво)", "Улица") IS NOT NULL Тогда "Улица" ИНАЧЕ "???" КОНЕЦ P.S. Дорогие друзья, если есть желающие улучшить данный код -welcome Облить говном -- тоже пожалуйста, но в этом случае предлагайте своё решение. |
|||
28
Kongo2019
07.05.25
✎
09:26
|
(27) Интересное решение. Вроде как то что надо. Сложновато как-то, но надо пробовать. Спасибо.
|
|||
29
Прохожий
07.05.25
✎
09:29
|
(21) Архитектурно все совсем иначе
|
|||
30
Прохожий
07.05.25
✎
09:33
|
Вот вы какие, а приставучие....
|
|||
31
Прохожий
07.05.25
✎
09:41
|
У него первое поле группировки составного типа тип1, тип2, тип3 или тип4 если три предыдущие пустые. Второе поле группировки составного типа тип2, тип3 или тип4 если два любые пустые. Третье поле группировки составного типа тип3 или тип4 если одно любое пустое. Четвертое поле группировки только типа тип4.
Кроме того, если есть пустые поля, то соответственное количество полей слева равно Неопрелено. Фишка в том, что в каждой строке поля группировок будут разных типов и значений. Очень пестренько будет. Теперь это ералаш попробуйте прогруппировать в запросе. И фсё! |
|||
32
Kongo2019
07.05.25
✎
10:25
|
Вот картинка как мне надо
|
|||
33
Kongo2019
07.05.25
✎
10:41
|
Пока я добился такого
Как-то можно ячейки с планами слить в один на выводе скд?
|
|||
34
АНДР
07.05.25
✎
10:42
|
(27) + только не в строку, а для каждой колонки, сдвигом в лево убирая пустые ячейки для факта.
План у тебя тоже "с дырками"? Тогда так же нормализуй. Потом соединяй. |
|||
35
АНДР
07.05.25
✎
10:43
|
(33) Тут план задан на район или на сектор?
|
|||
36
Kongo2019
07.05.25
✎
10:47
|
(35)Да косяк, это друг за другом идущие пакеты.
Вот правильный вариант.
|
|||
37
Kongo2019
07.05.25
✎
10:49
|
В итоге так хочу
|
|||
38
АНДР
07.05.25
✎
11:11
|
(37) левая колонка это иерархический справочник или группировка по колонкам?
|
|||
39
Kongo2019
07.05.25
✎
11:24
|
(38) Группировка по колонкам, средствами СКД. На входе в СКД плоская таблица.
|
|||
40
АНДР
07.05.25
✎
11:25
|
(39) см. (34)
|
|||
41
Kongo2019
07.05.25
✎
11:31
|
(40) Если не тягость подробнее распиши, а то я не особо понял идею.
|
|||
42
АНДР
07.05.25
✎
13:28
|
ПодробностиВЫБРАТЬ .Край.Ссылка КАК Иерархия1, Выбор Когда Не .Облать.Ссылка Есть Null Тогда .Облать Когда Не .Район.Ссылка Есть Null Тогда .Район Когда Не .Сектор.Ссылка Есть Null Тогда .Сектор Иначе Борт Конец КАК Иерархия2, Выбор Когда Не .Облать.Ссылка Есть Null Выбор Когда Не .Район.Ссылка Есть Null Тогда .Район Когда Не .Сектор.Ссылка Есть Null Тогда .Сектор Иначе .Борт Конец Иначе Выбор Когда Не .Район.Ссылка Есть Null Выбор Когда Не .Сектор.Ссылка Есть Null Тогда .Сектор Иначе .Борт Конец Иначе .Борт Конец Конец Конец КАК Иерархия3, ... Выбор Когда Не .Облать.Ссылка Есть Null и Не .Район.Ссылка Есть Null и Не .Сектор.Ссылка Есть Null Тогда Борт Конец КАК Иерархия5, ... Поместить в ВТФакт Из ... ; ВЫБРАТЬ .Край.Ссылка КАК Иерархия1, Выбор Когда Не .Облать.Ссылка Есть Null Тогда .Облать Когда Не .Район.Ссылка Есть Null Тогда .Район Когда Не .Сектор.Ссылка Есть Null Тогда .Сектор Иначе Борт Конец КАК Иерархия2, Выбор Когда Не .Облать.Ссылка Есть Null Выбор Когда Не .Район.Ссылка Есть Null Тогда .Район Когда Не .Сектор.Ссылка Есть Null Тогда .Сектор Иначе .Борт Конец Иначе Выбор Когда Не .Район.Ссылка Есть Null Выбор Когда Не .Сектор.Ссылка Есть Null Тогда .Сектор Иначе .Борт Конец Иначе .Борт Конец Конец Конец КАК Иерархия3, ... Выбор Когда Не .Облать.Ссылка Есть Null и Не .Район.Ссылка Есть Null и Не .Сектор.Ссылка Есть Null Тогда Борт Конец КАК Иерархия5, ... Поместить В ВТПлан Из ... ; Выбрать Выбор Когда Не ВТФакт.Иерархия1.Ссылка Есть Null Тогда ВТФакт.Иерархия1 Иначе ВТПлан.Иерархия1 Конец Как Иерархия1, ... Выбор Когда Не ВТФакт.Иерархия5.Ссылка Есть Null Тогда ВТФакт.Иерархия5 Иначе ВТПлан.Иерархия5 Конец Как Иерархия5, ... Из ВТФакт Полное Соединение ВТПлан По ВТФакт.Иерархия1 = ВТПлан.Иерархия1 ... ВТФакт.Иерархия5 = ВТПлан.Иерархия5 |
|||
43
Fish
07.05.25
✎
12:24
|
А потом пользователь возьмет и поменяет порядок и состав группировок отчета в пользовательском режиме :)))
|
|||
44
Прохожий
07.05.25
✎
19:33
|
(42) Примерно так, но писать лень.
(43) Дьявол кроется в деталях |
|||
45
lucky_
07.05.25
✎
19:38
|
(44) ага, тоже лень.
там плоская табличка должа быть поле1|планполе1 поле2|планполе2 и через выбор заполнить. будет ГОРАЗДО проще чем в (42) |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |