Есть периодический регистр сведений "ТВ_Программа" (периодичность - секунда) без измерений с ресурсом "ТВ_Передача" типа "СправочникСсылка.ТВ_Передачи". Требуется получить в СКД отчёт (рис. 1) в виде таблицы, каждая колонка содержит данные за конкретный эфирный день, то есть за интервал с 06:00:00 данного дня по 05:59:59 следующего. Строки группируют по часам, причём часы должны идти с 6 по 23 текущего дня, затем с 0 по 5 следующего дня. На пересечении строки и колонки должна стоять ТВ_Передача за этот час в этот день. Благодаря условию она всегда одна для каждой клетки. (каждый раз разная).

Текст запроса
```1c
    ВЫБРАТЬ
    ТВ_Программа.ТВ_Передача.Наименование КАК ТВ_Передача,
    НАЧАЛОПЕРИОДА(ДОБАВИТЬКДАТЕ(ТВ_Программа.Период, Час, -6), ДЕНЬ) КАК День,
    ЧАС(ТВ_Программа.Период) КАК Час
    ИЗ
    РегистрСведений.ТВ_Программа КАК ТВ_Программа
    ГДЕ
    МИНУТА(ТВ_Программа.Период) >= 46
    И ТВ_Программа.Период МЕЖДУ &С И &По
```

С группировкой по эфирным дням проблемы нет - достаточно вычесть задать день как

```1c
    НАЧАЛОПЕРИОДА(ДОБАВИТЬКДАТЕ(ТВ_Программа.Период, Час, -6), ДЕНЬ) КАК День
```

Проблема с группировкой по часам. Часы с 0 по 5 располагаются сверху, а должны быть снизу. Если вычесть также 6 ч и из часов

```1c
    ЧАС(ДОБАВИТЬКДАТЕ(ТВ_Программа.Период, Час, -6)) КАК Час
```

то порядок программ верный, однако время, естественно, на 6 ч меньше, чем надо. Нужно как-то сортировать строки по сдвинутому на 6 ч времени, а выводить нормальное.

Как выкрутиться?
---
Попробуйте сделать как предложили в (2).
---
Ругалось "Неверные параметры "ДобавитьКДате" ", поставил голое ЧасСоСдвигом - и заработало.

Спасибо!
---
```1c
    ВЫБРАТЬ
    ТВ_Программа.ТВ_Передача.Наименование КАК ТВ_Передача,
    НАЧАЛОПЕРИОДА(ДОБАВИТЬКДАТЕ(ТВ_Программа.Период, Час, -6), ДЕНЬ) КАК День,
    ЧАС(ТВ_Программа.Период) КАК Час,
    ЧАС(ДОБАВИТЬКДАТЕ(ТВ_Программа.Период, ЧАС, -6)) КАК ЧасДляСортировки
    ИЗ
    РегистрСведений.ТВ_Программа КАК ТВ_Программа
    ГДЕ
    МИНУТА(ТВ_Программа.Период) >= 46
    И ТВ_Программа.Период МЕЖДУ &С И &По
```

В группирорвке Час вместо Авто установить ЧасДляСортировки.
---
Нужно как-то сортировать строки по сдвинутому на 6 ч времени, а выводить нормальное.
У вас же ответ написан в вопросе. Сортируйте по сдвинутому а выводите нормальное. А в чем проблема то?
---
Поле группировки по часам - в его свойстве выражение упорядочивания вставить выражение, что было описано в вопросе
---
Сделал запрос

```1c
    ВЫБРАТЬ
    ТВ_Программа.ТВ_Передача.Наименование КАК ТВ_Передача,
    НАЧАЛОПЕРИОДА(ДОБАВИТЬКДАТЕ(ТВ_Программа.Период, ЧАС, -6), ДЕНЬ) КАК День,
    ЧАС(ТВ_Программа.Период) КАК Час,
    ЧАС(ДОБАВИТЬКДАТЕ(ТВ_Программа.Период, ЧАС, -6)) КАК ЧасСоСдвигом
    ИЗ
    РегистрСведений.ТВ_Программа КАК ТВ_Программа
    ГДЕ
    МИНУТА(ТВ_Программа.Период) >= 46
    И ТВ_Программа.Период МЕЖДУ &С И &По
```

на закладке "Настройки" установил сортировку по полю "ЧасСоСдвигом" (см. рис.)

В результате ругается

Поле "Час со сдвигом" не может быть использовано в группировке "Час"
---
в выбранных полях для группировки "Час" не добавлено поле "ЧасСоСдвигом".
---
Добавил, всё равно ругается
---
оно еще должно быть ресурсом.
---
Так программа в своей строке, а часы - в своей
---
Попробуйте сделать как предложили в (2).
---
Ругалось "Неверные параметры "ДобавитьКДате" ", поставил голое ЧасСоСдвигом - и заработало.

Спасибо!
---
А, ну да. В выражениях же используются обычные функции 1С, а не запросов.
Можно было проще:

```1c
    ЧАС(Период - 6 * 60 * 60)
    //Или
    ЧАС(Период - 21600)
```
---
Надо ещё переход через 0 учитывать. Лучше уж как у меня, всё автоматом - вкалывают роботы, счастлив человек
---
Не совсем понял, о чем речь о переходе через 0. Период это дата, вычитается количество секунд равное 6 часам. Т.е. выражение равно тому же из запроса.
---
Извините, был слеп