Имя: Пароль:
1C
 
Вопрос по запросу в СКД
0 mzelensky
 
28.10.14
10:04
Доброго всем. Мучаю один запросик. Вроде и не сложный, как кажется, но нужно сделать исключительно на СКД, а как это сделать что-то не придумаю.

На картинке пример того ,как получается сейчас (1 таблица) и того, как должно быть (2 таблица). Т.е. по сути нужно сгруппировать филиалы и дни, но при этом как-то не затрагивать ресурс.

Вот запрос, которым все это получается:

ВЫБРАТЬ
    МеткиПоСборуЗаказов.Филиал КАК Филиал,
    ВЫБОР
        КОГДА МеткиПоСборуЗаказов.День ЕСТЬ NULL
            ТОГДА ДниНедели.Ссылка
        ИНАЧЕ МеткиПоСборуЗаказов.День
    КОНЕЦ КАК День,
    МеткиПоСборуЗаказов.Час КАК Час
ИЗ
    Перечисление.ДниНедели КАК ДниНедели
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.МеткиПоСборуЗаказов КАК МеткиПоСборуЗаказов
        ПО ДниНедели.Ссылка = МеткиПоСборуЗаказов.День


В настройках "Час" это ресурс. При выводе в таблицу делаю группировку по колонкам "День".
1 mzelensky
 
28.10.14
10:04
(0) Картинку забыл присоединить:

http://img.sc/a1e1d1252fcd40a086a1230a282640e2
2 ArchLord
 
28.10.14
10:14
Для этого используется СГРУППИРОВАТЬ ПО(Group By)
В конструкторе запроса есть вкладка "группировка", открой ее там тебя ждет сюрприз!
3 mzelensky
 
28.10.14
10:16
(2) Понятно... :( Теперь читаем внимательно:

"Т.е. по сути нужно сгруппировать филиалы и дни, но при этом как-то не затрагивать ресурс."

Потом открываем еще раз картинку и смотрим на нее...все еще смотрим...все ,закрываем.

А теперь скажи, что я должен указать во вкладке "группировка" в разделе "суммируемое поле" ?
4 mzelensky
 
28.10.14
10:49
ап
5 Лодырь
 
28.10.14
10:57
А логику группировки вы опишите? те. поясните, как должны сгруппировать следующие данные
http://screencast.com/t/op5GEAdbFPUz
6 barrgand
 
28.10.14
11:01
(1) Не хватает поля группировки, непонятно, чем отличает Екатеринбург Вт 10 от Екатеринбург Вт 17
7 mzelensky
 
28.10.14
11:09
(5) Должно быть 2 строки на выходе по вашему примеру. Т.е. новая строка добавляется только в том случае, когда цифру нельзя поставить в уже существующую строку для данного филиала и дня недели
8 mzelensky
 
28.10.14
11:10
(6) Отличается временем.

Екатеринбург Вт 10  - "10" часов
Екатеринбург Вт 17  - "17" часов

в этом и отличие :)
9 Лодырь
 
28.10.14
11:11
(7) Ок, тогда почему у вас строки выглядят как
10 10 10
17 17 17
а не
10 17 17
17 10 10
10 Лодырь
 
28.10.14
11:14
В принципе уже все понятно.Нумеруем строки с часами в порядке возрастания для каждого филиала по дням недели и выводим с  группировками строк филиал/номер строки.
11 mzelensky
 
28.10.14
11:14
(9) Не совсем понял как у вас получилось:

10 17 17
17 10 10

Смотрите. Берем ваши данные из (5) а теперь просто все цифры просто поднимаем вверх и получаем

Екатеринбург 1 1 1 1 1
Екатеринбург 2 3 4 5 6
12 mzelensky
 
28.10.14
11:15
(11) Аналогично и с картинкой из (1). Берем все цифры из первой таблицы и просто поднимаем вверх. Получаем таблицу 2
13 Лодырь
 
28.10.14
11:15
(11) В наборе данных до применения сортировки - нет понятия "вверх"
14 mzelensky
 
28.10.14
11:18
(13) Это понятно. Поэтому и вопрос тут задаю. Я лишь описал что в итоге требуется.
15 Лодырь
 
28.10.14
11:20
в (10) собственно методика решения. пробуйте.
16 mzelensky
 
28.10.14
11:21
(10)

1) Каким образом предлагаете нумеровать?
2) Не совсем пойму: "выводим с  группировками строк филиал/номер строки". Что при этом с "Часами" будет?
17 Лодырь
 
28.10.14
11:25
(16)

1. В запросе разумеется. Нумеровать по возрастанию часов. Что делать с одинаковыми записями часов - понятия не имею.
2. Часы будут выводится ) соответствующие филиалу, дню недели и с соответствующим номером, полученным на предыдущем шаге.
18 Ненавижу 1С
 
гуру
28.10.14
11:28
это расписание работы что ли?
тогда нужно отедлять ВремяНачала и ВремяКонца и желательно делать в разных полях таблицы
19 mzelensky
 
28.10.14
11:29
(18) Это не расписание работы. "ВремяНачала и ВремяКонца " - тут не надо.

Давайте исключительно по вопросу ,без придумывания задач от себя.
20 mzelensky
 
28.10.14
11:36
(17) Набросал:
21 mzelensky
 
28.10.14
11:36
ВЫБРАТЬ
    МеткиПоСборуЗаказов.Филиал КАК Филиал,
    ВЫБОР
        КОГДА МеткиПоСборуЗаказов.День ЕСТЬ NULL
            ТОГДА ДниНедели.Ссылка
        ИНАЧЕ МеткиПоСборуЗаказов.День
    КОНЕЦ КАК День,
    МеткиПоСборуЗаказов.Час КАК Час
ПОМЕСТИТЬ ВТ
ИЗ
    Перечисление.ДниНедели КАК ДниНедели
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.МеткиПоСборуЗаказов КАК МеткиПоСборуЗаказов
        ПО ДниНедели.Ссылка = МеткиПоСборуЗаказов.День
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ВТ.Филиал КАК Филиал,
    ВТ.День КАК День,
    ВТ.Час КАК Час,
    СУММА(1) КАК СортировочноеПоле
ИЗ
    ВТ КАК ВТ
        ЛЕВОЕ СОЕДИНЕНИЕ ВТ КАК ВТ1
        ПО ВТ.Филиал = ВТ1.Филиал
            И ВТ.День = ВТ1.День
            И ВТ.Час <= ВТ1.Час

СГРУППИРОВАТЬ ПО
    ВТ.Час,
    ВТ.День,
    ВТ.Филиал

УПОРЯДОЧИТЬ ПО
    Филиал,
    День,
    СортировочноеПоле,
    Час
22 mzelensky
 
28.10.14
11:36
(15) Но что-то того ,что нужно, не выходит
23 mzelensky
 
28.10.14
11:40
О, вроде получилось
24 mzelensky
 
28.10.14
11:43
(10) Спасибо! Подход оказался верным!!!
25 Ненавижу 1С
 
гуру
28.10.14
11:45
у одного филиала в один день недели может быть больше двух записей?
26 mzelensky
 
28.10.14
11:46
(25) У одного филиала в один день может быть до 24 записей - по количеству часов в сутках.