|
Получить в запросе все даты указанного периода | ☑ | ||
---|---|---|---|---|
0
mzelensky
11.02.15
✎
13:23
|
Доброго всем!
В запрос передается 2 даты - начала и окончания. Нужно в запросе получить таблицу со всеми днями из указанного интервала. Точно помню, что нечто подобное выкладывали, но никак найти не могу :( |
|||
1
mikecool
11.02.15
✎
13:24
|
запрос к РС календарныеграфики
|
|||
2
trooba
11.02.15
✎
13:26
|
(0) БП3.0 РегистрСведений.ДанныеПроизводственногоКалендаря
|
|||
3
mzelensky
11.02.15
✎
13:30
|
(1) (2) Умный ты. У меня такого нет. Конфа "Розница"
|
|||
4
mzelensky
11.02.15
✎
13:30
|
(0) Где-то народ извращался все это именно запросом получать...
|
|||
5
trooba
11.02.15
✎
13:34
|
(4) Календарь в любом случае думаю есть. Называется по другому, но думаю, что есть. У вас касса в нем есть? Наверняка! Значит есть кассовая книга? А там ее печатать надо помесячно и погодично. Так что календарь, должен быть.
|
|||
6
Godofsin
11.02.15
✎
13:37
|
(5) Как связан календарь и кассовая книга?
|
|||
7
trooba
11.02.15
✎
13:43
|
(6) Хм, посмотрел в бухгалтерии (розницы нет), действительно не используется в кассовой книге календарь, думалось, что по датам из него строится обороты по кассе
|
|||
8
mzelensky
11.02.15
✎
13:48
|
(7) Он там считается каждый раз. Просто циклом (по крайней мере в старых БП именно так было)
Давайте от календаря абстрагируемся и все же попробуем запросом :) |
|||
9
Ненавижу 1С
гуру
11.02.15
✎
13:50
|
(8) там будет ограничение на интервал
в асмом общем случае - не получится |
|||
10
mzelensky
11.02.15
✎
13:52
|
(9) какого рода ограничения?
По сути, в 99% случаев интервал у меня будет лежать в рамках одного месяца |
|||
11
mzelensky
11.02.15
✎
13:53
|
(10) Можно даже так задачу перефразировать - подается дата(как параметр). Нужно получить таблицу дней всего месяца, в котором она лежит.
|
|||
12
rozer76
11.02.15
✎
13:56
|
// Возвращает таблицу значений с датами за период //
// Параметры: // НачДата - Дата - Начало периода // КонДата - Дата - Конец периода // Интервал - Строка - одно из следующих значений: // (Секунда, Минута, Час, День, Неделя, Месяц, Квартал, Полугодие, Год) // // Возвращаемое значение: // Таблица значений с датами за период. Содержит одну колонку "НачИнтервала" // Функция ПолучитьТаблицуДатЗаПериод(НачДата, КонДата, Интервал) тзИнтервалов = Новый ТаблицаЗначений; тзИнтервалов.Колонки.Добавить("НачИнтервала", Новый ОписаниеТипов("Дата")); Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | НАЧАЛОПЕРИОДА(&НачДата, День) КАК НачИнтервала |УПОРЯДОЧИТЬ ПО | НачИнтервала |ИТОГИ ПО | НачИнтервала ПЕРИОДАМИ("+Интервал+", &НачДата, &КонДата)"; //Параметры запроса Запрос.УстановитьПараметр("НачДата", НачДата); Запрос.УстановитьПараметр("КонДата", КонДата); Выборка = Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, "НачИнтервала", "ВСЕ"); Пока Выборка.Следующий() Цикл НоваяСтрока = тзИнтервалов.Добавить(); НоваяСтрока.НачИнтервала = Выборка.НачИнтервала; КонецЦикла; Возврат тзИнтервалов; КонецФункции //ПолучитьТаблицуДатЗаПериод() |
|||
13
Ненавижу 1С
гуру
11.02.15
✎
13:57
|
(1) у даты определяешь номер месяца, високосность года и тупо делаешь
ВЫБРАТЬ 1 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 2 ОБЪЕДИНИТЬ ВСЕ ... ВЫБРАТЬ 28 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 29 ОБЪЕДИНИТЬ ВСЕ ГДЕ ТвойМесяц<>2 или ГодВисокосный ... |
|||
14
kumena
11.02.15
✎
13:57
|
>> По сути, в 99% случаев интервал у меня будет лежать в рамках одного месяца
это что то меняет, или вас устраивает, что запрос иногда будет косячить? делайте через календарь и мозг не выносите. |
|||
15
kumena
11.02.15
✎
13:59
|
(12) если я правильно понял, то цель получить не из запроса, а таблицу дат в запросе.
|
|||
16
mzelensky
11.02.15
✎
14:02
|
(14) Давай для начала допустим ,что устраивает
|
|||
17
mzelensky
11.02.15
✎
14:03
|
(14)"делайте через календарь и мозг не выносите." - запарили уже!!! НЕТ КАЛЕНДАРЯ!!! ВСЕ, ТОЧКА!!! НЕТУ!!!
|
|||
18
ProgAL
11.02.15
✎
14:05
|
||||
19
mzelensky
11.02.15
✎
14:07
|
(12) откуда ты такую конструкцию взял:
|ИТОГИ ПО | НачИнтервала ПЕРИОДАМИ("+Интервал+", &НачДата, &КонДата)"; |
|||
20
mzelensky
11.02.15
✎
14:19
|
(18) Благодарю!
|
|||
21
Defender aka LINN
11.02.15
✎
14:20
|
(11) Заполни ТЗ и передай ее в запрос
|
|||
22
mzelensky
11.02.15
✎
14:21
|
(21) Сперва так и хотел. Но передавать нужно в СКД. А там геморой с этим.
(18) меня устраивает |
|||
23
mikecool
11.02.15
✎
14:23
|
(22) никаких геморроев
|
|||
24
hhhh
11.02.15
✎
14:27
|
(22)в СКД как раз нет гиморроя.
|
|||
25
Alexaha
11.02.15
✎
14:28
|
(22) в СКД группировка по периоду с дополнением по дням
|
|||
26
mikecool
11.02.15
✎
14:28
|
(25) если бы это работало еще на момент выборки - цены бы скд не было
|
|||
27
mzelensky
11.02.15
✎
14:29
|
(23) Значит я не умею ее готовить. Дай пример передачи ТЗ в СКД, формирование и вывод результата на УФ.
|
|||
28
mikecool
11.02.15
✎
14:32
|
(27) как то так:
СКД.Параметры.Установить(ТЗ) в запросе Выбрать поля поместить ВТ_ТЗ из &ТЗ |
|||
29
Alexaha
11.02.15
✎
14:32
|
(26) может и сделают....когда нибудь
|
|||
30
mzelensky
11.02.15
✎
14:37
|
(28) Ты сам так пробовал делать???
В СКД нельзя передавать ТЗ как параметр, только через "объект" |
|||
31
val
11.02.15
✎
14:57
|
||||
32
Alexaha
11.02.15
✎
15:21
|
(26) пришел в голову изврат
шаг 1. СКД формирует таблицу дат - выгружаем в ТЗ шаг 2. загружаем эту ТЗ в СКД или в обычный запрос и вперед... |
|||
33
mzelensky
11.02.15
✎
15:29
|
(32) Печаль беда с тобой...
Попутно ответь на (30) ?! |
|||
34
Alexaha
11.02.15
✎
15:39
|
(33) ну во первых мне приходилось так делать, правда от безысходности - это к 32 - ни печали ни беды - работало и нормально
по поводу 30, хоть есть набор данных объект - через него и добавляй |
|||
35
mzelensky
11.02.15
✎
16:31
|
(34) У меня корректно через него не получилось запустить. Пример есть рабочий для УФ ?
|
|||
36
Alexaha
11.02.15
✎
16:34
|
под рукой нет, увы, но как раз на УФ и писал
|
|||
37
Бертыш
11.02.15
✎
16:48
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |