Добрый день!

На повестке дня появилась задача следующего характера:

Дано:

РегистрСведений - Расписание

Измерения:
 Филиал Справочник
 День Перечисление
 Час Число

Необходимо организовать вывод данных одним запросом на СКД как на скрине, во вложении.

Подкиньте хоть пару идей как можно такое реализовать, а то голову сломал уже
---
При приведенных данных, достаточно Вычисляемого поля, например ЧасыПП от Часы. Сами часы в ресурс. Максимум не обязательно. Ну а если надо чтобы в одну строку попали 7 и 10 то надо пронумеровать строки в запросе по Филиалу

```1c
    ВЫБРАТЬ
    ВТ.День КАК День,
    ВТ.Филиал КАК Филиал,
    ВТ.Часы КАК Часы,
    Сумма(1) КАК НомПП
    ИЗ
    ВТ КАК ВТ
    ЛЕВОЕ СОЕДИНЕНИЕ ВТ КАК ВТ1
    ПО (ВТ.Филиал = ВТ1.Филиал)
    и ВТ.День = ВТ1.День и ВТ.Часы >= ВТ1.Часы

    СГРУППИРОВАТЬ ПО
    ВТ.День,
    ВТ.Филиал,
    ВТ.Часы
```
---
При приведенных данных, достаточно Вычисляемого поля, например ЧасыПП от Часы. Сами часы в ресурс. Максимум не обязательно. Ну а если надо чтобы в одну строку попали 7 и 10 то надо пронумеровать строки в запросе по Филиалу

```1c
    ВЫБРАТЬ
    ВТ.День КАК День,
    ВТ.Филиал КАК Филиал,
    ВТ.Часы КАК Часы,
    Сумма(1) КАК НомПП
    ИЗ
    ВТ КАК ВТ
    ЛЕВОЕ СОЕДИНЕНИЕ ВТ КАК ВТ1
    ПО (ВТ.Филиал = ВТ1.Филиал)
    и ВТ.День = ВТ1.День и ВТ.Часы >= ВТ1.Часы

    СГРУППИРОВАТЬ ПО
    ВТ.День,
    ВТ.Филиал,
    ВТ.Часы
```
---
Кажется, что идея нумерация записей лежит на поверхности, но на мой взгляд, данных для этого недостаточно. Не хватает более удачного поля порядка, нежели сами часы, т.к. в приведенном Вами запросе две записи в расписании в один и тот же день с одинаковым количеством часов свернутся в одну. И кажется, что это вполне вероятная ситуация.

На примере автора, это ситуация, когда во вторник будут не "10" и "17", а "10" и "10".
---
Ровно 400 капель. У нас все точно
Я же не использую агрегатных функций в ресурсах
---
Вы используете группировку в запросе.
---
И что? Одни и одни и те же Часы выйдут в номер 1 и 2?.
Результат на скрине
---
А можете показать исходные данные для отчета?
---
```1c
    ВЫБРАТЬ
    1 КАК День,
    "Катя" КАК Филиал,
    10 КАК Часы
    ПОМЕСТИТЬ ВТ

    ОБЪЕДИНИТЬ

    ВЫБРАТЬ
    1,
    "Катя",
    7

    ОБЪЕДИНИТЬ

    ВЫБРАТЬ
    2,
    "Катя",
    10

    ОБЪЕДИНИТЬ

    ВЫБРАТЬ
    2,
    "Катя",
    5

    ОБЪЕДИНИТЬ

    ВЫБРАТЬ
    3,
    "Катя",
    15

    ОБЪЕДИНИТЬ

    ВЫБРАТЬ
    3,
    "Катя",
    17
    ОБЪЕДИНИТЬ

    ВЫБРАТЬ
    4,
    "Катя",
    17
    ;

    ////////////////////////////////////////////////////////////­////////////////////
    ВЫБРАТЬ
    ВТ.День КАК День,
    ВТ.Филиал КАК Филиал,
    ВТ.Часы КАК Часы,
    Сумма(1) КАК НомПП
    ИЗ
    ВТ КАК ВТ
    ЛЕВОЕ СОЕДИНЕНИЕ ВТ КАК ВТ1
    ПО (ВТ.Филиал = ВТ1.Филиал)
    и ВТ.День = ВТ1.День и ВТ.Часы >= ВТ1.Часы

    СГРУППИРОВАТЬ ПО
    ВТ.День,
    ВТ.Филиал,
    ВТ.Часы
```
---
Ну вот, в рамках одного дня у Вас часы различны. Как я указал выше, на мой взгляд, достаточно вероятна ситуация, когда часы за один и тот же день не будут различаться. Замените в своем примере в первом же операторе запроса число часов с 10 на 7 и сформируйте отчет. У Вас данные первого и второго операторов запроса сольются в одну, да еще и в отчете эта строка будет стоять обособленно.

Прошу прощения, если как-то непонятно излагаю свои мысли.
---
Ну как то не слились.Да вроде бы и не могут Или покажите пример, когда сольются в одну. Ну и если брать те данные, которые привели, то ни какой нумерации и не нужно. 7 встанет в 7, 10 в 10. 5 будет отдельной строчкой.
В общем. Это мы с Вами разные варианты рассматриваем, а заказчик слил общие данные и не колется:)
---
А, так Вы схитрили. :) Сразу не обратил внимание, что у Вас используется "ОБЪЕДИНИТЬ", а не "ОБЪЕДИНИТЬ ВСЕ".
---
Схитрил бэ, если б написал distinct при union all, а так это жеж разные методы при кажущей похожести:) В конструкторе, что написано? Без дублей
---
distinct при union all
Как раз таки в Вашем примере distinct при union all дал бы тот же результат, что и union all без distinct, т.е. отличный от union.
---
(27Давай таки на Ты. Бесит, когда обзывают на Вы. Алгоритм работает? Да В чем проблемм?Без раницы уважаешь ты меня или нет. Я тебя назначил уважаемым людём. Это уважение, данность. Как сам знаешь, но мой алгоритм работает в легкую
---
Супер, респект таким ребятам
---
Час обозначаешь как ресурс в СКД и все
---
Спасибо за ответ конечно, но если бы все было так просто, эта тема бы тут не создалась
---
И в правду. Вам никак не подойдет вариант, где все цифры сгруппированы в одну строку? Как на картинке в приложении.
---
Идея вроде бы лежит на поверхности: необходимо в запросе сначала пронумеровать записи в разрезе филиалов и дней недели, а затем сгруппировать данные по филиалу и номеру записи, взяв "Максимум" от часов. Но к сожалению не могу предложить Вам алгоритм нумерации в запросе, не хватает какого-нибудь поля упорядочивания, например периода.
---
что то посыпались однотипные задачи про расписание,
у студентов сессия началась? :)
---
запрос элементарный:

```1c
    ВЫБРАТЬ РАЗЛИЧНЫЕ
    Расписание.Филиал КАК Филиал,
    Расписание.Час КАК Час,
    ДниНедели.Ссылка КАК День,
    0 КАК Ресурс
    ИЗ
    РегистрСведений.Расписание КАК Расписание,
    Перечисление.ДниНедели КАК ДниНедели

    ОБЪЕДИНИТЬ ВСЕ

    ВЫБРАТЬ
    Расписание.Филиал,
    Расписание.Час,
    Расписание.День,
    Расписание.Час
    ИЗ
    РегистрСведений.Расписание КАК Расписание
```

соотвественно Филиал + Час - строки, День - Колонки, Ресурс - это ресурс :)
---
запрос элементарный. только вот как он может помочь решить задачу? если в одном филиале пн = 10, вт = 12, ср = 17? по условию задачи нужно вывести одной строкой, а не тремя
---
СКД автоматом группирует строки, ты проверь сначала прежде чем критиковать
---
зачем мне пробовать, если и так все понятно. ты же написал, что все просто - вот и давай покажи нам рабочий пример
---
Сообщение было скрыто модератором.
---
Проверить отчет слабо было что ли?

http://prntscr.com/nik2se

Где нужный результат? В 1м сообщении написано, что все должно быть в одну строку, а не в 3
---
отчет работает на тех данных что в примере,
но возможно я неправильно понял условие задачи
---
а вот про то что студенты проснулись - похоже на правду ибо задача похожа не предыдущую.

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

и уже по филиалу и по этому дополнительному номеру делать группировку в строках, по дню в колонках.
ну и ресурс максмум(час)

задача не такая простая как кажется на 1й взгляд.
---
в таком случае задача один в один как в соседней теме, точно студенты :)