|
Через ЗАПРОС организовать цикл по датам месяца можно? | ☑ | ||
---|---|---|---|---|
0
andryuhin
28.07.14
✎
14:17
|
Всем привет.
С использованием ЗАПРОСА мне нужно получить на выходе список дат месяца: 01.07.2014 00:00:00 02.07.2014 00:00:00 ... 31.07.2014 00:00:00 Это вообще сделать можно? Если можно, то как? |
|||
1
floody
28.07.14
✎
14:18
|
Разрешаю.
|
|||
2
le_
28.07.14
✎
14:20
|
||||
3
Wobland
28.07.14
✎
14:20
|
а выбери из таблички дат
|
|||
4
azernot
28.07.14
✎
14:23
|
ВЫБРАТЬ
1 КАК Разряд ПОМЕСТИТЬ Цифры ОБЪЕДИНИТЬ ВЫБРАТЬ 2 ОБЪЕДИНИТЬ ВЫБРАТЬ 3 ОБЪЕДИНИТЬ ВЫБРАТЬ 4 ОБЪЕДИНИТЬ ВЫБРАТЬ 5 ОБЪЕДИНИТЬ ВЫБРАТЬ 6 ОБЪЕДИНИТЬ ВЫБРАТЬ 7 ОБЪЕДИНИТЬ ВЫБРАТЬ 8 ОБЪЕДИНИТЬ ВЫБРАТЬ 9 ОБЪЕДИНИТЬ ВЫБРАТЬ 0 ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ДОБАВИТЬКДАТЕ(&НачалоПериода, ДЕНЬ, Числа.Число) КАК ДатаДень ПОМЕСТИТЬ Даты ИЗ (ВЫБРАТЬ Единицы.Разряд + ЕСТЬNULL(Десятки.Разряд, 0) * 10 + ЕСТЬNULL(Сотни.Разряд, 0) * 100 + ЕСТЬNULL(Тысячи.Разряд, 0) * 1000 + ЕСТЬNULL(ДесяткиТысяч.Разряд, 0) * 10000 + ЕСТЬNULL(СотниТысяч.Разряд, 0) * 100000 КАК Число ИЗ Цифры КАК Единицы ЛЕВОЕ СОЕДИНЕНИЕ Цифры КАК Сотни ПО (РАЗНОСТЬДАТ(&НачалоПериода, &КонецПериода, ДЕНЬ) >= 100) ЛЕВОЕ СОЕДИНЕНИЕ Цифры КАК Десятки ПО (РАЗНОСТЬДАТ(&НачалоПериода, &КонецПериода, ДЕНЬ) >= 10) ЛЕВОЕ СОЕДИНЕНИЕ Цифры КАК Тысячи ПО (РАЗНОСТЬДАТ(&НачалоПериода, &КонецПериода, ДЕНЬ) >= 1000) ЛЕВОЕ СОЕДИНЕНИЕ Цифры КАК ДесяткиТысяч ПО (РАЗНОСТЬДАТ(&НачалоПериода, &КонецПериода, ДЕНЬ) >= 10000) ЛЕВОЕ СОЕДИНЕНИЕ Цифры КАК СотниТысяч ПО (РАЗНОСТЬДАТ(&НачалоПериода, &КонецПериода, ДЕНЬ) >= 100000)) КАК Числа ГДЕ Числа.Число <= РАЗНОСТЬДАТ(&НачалоПериода, &КонецПериода, ДЕНЬ) ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ РАЗЛИЧНЫЕ Даты.ДатаДень как День, НАЧАЛОПЕРИОДА(Даты.ДатаДень, МЕСЯЦ) КАК Месяц ИЗ Даты КАК Даты |
|||
5
le_
28.07.14
✎
14:23
|
+(2) Вот здесь еще последний запрос: http://kb.mista.ru/article.php?id=579&
|
|||
6
Wobland
28.07.14
✎
14:24
|
||||
7
andryuhin
28.07.14
✎
15:25
|
мда, достаточно геморно. Но видимо без простых вариантов, нужно пробовать это.
Спасибо большое за советы. О результатах доложусь |
|||
8
John83
28.07.14
✎
16:31
|
почему не обрабатывать какой-нить регистр, типа курсов валют или производственного календаря?
|
|||
9
anatoly
28.07.14
✎
16:34
|
(8) тогда выходных и праздников не будет.
|
|||
10
John83
28.07.14
✎
16:42
|
(9) куда ж они подеваются?
|
|||
11
andryuhin
28.07.14
✎
17:01
|
(8) как раз их и надо будет обрабатывать, НО ЛЕВЫМ СОЕДИНЕНИЕМ для каждой даты месяца
|
|||
12
John83
29.07.14
✎
21:02
|
(11) и в чем проблема?
зачем такой изврат? |
|||
13
andryuhin
30.07.14
✎
11:12
|
(12) Ты видать сути не догоняешь. Только вот не пойму чего конкретно.
Если регистр по некоторым измерениям ПУСТОЙ. Ну не заполнили его, а в запросе даты нужны. Ты как их туда по-другому запихнешь? |
|||
14
GROOVY
30.07.14
✎
11:17
|
(13) А нафига они в запросе, если их нет в регистре?
|
|||
15
YFedor
30.07.14
✎
11:18
|
(0)СКД может
|
|||
16
GROOVY
30.07.14
✎
11:24
|
(15) Если речь про вывод данных, то и обычные запросы могут в выборке получить отсутствующие периоды.
|
|||
17
andryuhin
30.07.14
✎
11:24
|
(14) Отчет такой:
колонки - это каждое число месяца по каждому числу нужно из регистра вытянуть производственные показатели. В регистре не все даты присутствуют, а в отчете все |
|||
18
GROOVY
30.07.14
✎
11:27
|
(17) Ну так, у выборки запроса есть возможность получить дополнение. В СКД так-же у группировки можно дополнение получить.
|
|||
19
andryuhin
30.07.14
✎
11:28
|
(18) СКД не использую.
"у выборки запроса есть возможность получить дополнение" - спасибо за идею, сейчас гляну, как это прикрутить |
|||
20
GROOVY
30.07.14
✎
11:29
|
запрос = новый запрос;
текст = " |ВЫБРАТЬ | ЗаказыПокупателейОбороты.Период КАК Период, | ЗаказыПокупателейОбороты.Номенклатура КАК Номенклатура, | ЗаказыПокупателейОбороты.ЗаказПокупателя КАК ЗаказПокупателя, | ЗаказыПокупателейОбороты.КоличествоОборот КАК КоличествоОборот |ИЗ | РегистрНакопления.ЗаказыПокупателей.ОстаткиИОбороты(&НачДата, &КонДата, День, , ) КАК ЗаказыПокупателейОбороты | |УПОРЯДОЧИТЬ ПО | Период | |ИТОГИ СУММА(КоличествоОборот) ПО | Период ПЕРИОДАМИ(ДЕНЬ, &НачДата, &КонДата)"; Запрос.УстановитьПараметр("НачДата", '20040601000000'); Запрос.УстановитьПараметр("КонДата", '20040930235959'); Запрос.Текст = Текст; Рез = запрос.Выполнить(); обход = рез.выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, "Период", "Все"); пока обход.следующий() цикл сообщить(">> " + обход.период); конеццикла; |
|||
21
Один С
30.07.14
✎
11:36
|
(20) Класс! Спасибо, утащил в блокнотик..
|
|||
22
andryuhin
30.07.14
✎
11:53
|
(20) Да, все верно. Для "даты" есть возможность отобрать по всем заданным периодам. Спасибо. Работает.
А я действительно изврат придумывал. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |