Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Как в запросе выбрать все даты входящие в указанный период?

Как в запросе выбрать все даты входящие в указанный период?
Я
   drdroid
 
28.05.12 - 16:54
Есть период, например с 20.05.12 - 28.05.12, как запросом в 1С получить все даты что входят в этот период? Т.е. результат должен получится, такой:

20.05.12
21.05.12
22.05.12
...
28.05.12
 
 
   EasyRider
 
1 - 28.05.12 - 16:55
условие "Между" ?
   Ненавижу 1С
 
2 - 28.05.12 - 16:56
(0) в 1С для этого используют типовое решение - специальная таблица, обычно это РС РегламентированныйПроизводственныйКалендарь
   manyak
 
3 - 28.05.12 - 16:56
Дата МЕЖДУ &НачДата И &КонДата
   DrShad
 
4 - 28.05.12 - 16:56
(0) в поиск
(1) запрос в студию
   Axel2009
 
5 - 28.05.12 - 16:56
выбрать * из регистрсведений.РегламентированныйПроизводственныйКалендарь
где ДатаКалендаря МЕЖДУ &Д1 И &Д2
   shuhard
 
6 - 28.05.12 - 16:57
(5) + 1
если календаря нет - то сделать или загрузить во ВТ снаружи
   drdroid
 
7 - 28.05.12 - 16:57
(1)(4) Запроса нет как такового.
(2)(5) Спасибо, это оно.
   andrewks
 
8 - 28.05.12 - 17:15

select
 dateadd(dateadd(dateadd(datetime(1,1,1),day,days.day-1),month,months.month-1),year,years.year-1) as Дата
from
 years
,months
,days
where (dateadd(dateadd(dateadd(datetime(1,1,1),day,days.day-1),month,months.month-1),year,years.year-1)>=&LeftBound)
 and (dateadd(dateadd(dateadd(datetime(1,1,1),day,days.day-1),month,months.month-1),year,years.year-1)<=&RightBound)
group by
 dateadd(dateadd(dateadd(datetime(1,1,1),day,days.day-1),month,months.month-1),year,years.year-1)


   andrewks
 
9 - 28.05.12 - 17:16
копипаст неполный получился. так:

select
 0 as num
into digits
union select 1 union select 2 union select 3 union select 4 union select 5 union select 6 union select 7 union select 8 union select 9

;

select
 digits1.num+10*digits2.num as day
into days 
from
 digits as digits1
,digits as digits2
where (digits1.num+10*digits2.num between 1 and 31)
index by day

;

select
 digits1.num+10*digits2.num as month
into months
from
 digits as digits1
,digits as digits2
where (digits1.num+10*digits2.num between 1 and 12)
index by month

;

select
 digits1.num+10*digits2.num+100*digits3.num+1000*digits4.num as year
into years 
from
 digits as digits1
,digits as digits2
,digits as digits3
,digits as digits4
where (digits1.num+10*digits2.num+100*digits3.num+1000*digits4.num between 2000 and 2020)
index by year

;

select
 dateadd(dateadd(dateadd(datetime(1,1,1),day,days.day-1),month,months.month-1),year,years.year-1) as Дата
from
 years
,months
,days
where (dateadd(dateadd(dateadd(datetime(1,1,1),day,days.day-1),month,months.month-1),year,years.year-1)>=&LeftBound)
 and (dateadd(dateadd(dateadd(datetime(1,1,1),day,days.day-1),month,months.month-1),year,years.year-1)<=&RightBound)
group by
 dateadd(dateadd(dateadd(datetime(1,1,1),day,days.day-1),month,months.month-1),year,years.year-1)


   ssh2006
 
10 - 28.05.12 - 17:23
Вариант на русском
ВЫБРАТЬ
    0 КАК Цифра
ПОМЕСТИТЬ ТабЦифр

ОБЪЕДИНИТЬ

ВЫБРАТЬ
   1

ОБЪЕДИНИТЬ

ВЫБРАТЬ
   2

ОБЪЕДИНИТЬ

ВЫБРАТЬ
   3

ОБЪЕДИНИТЬ

ВЫБРАТЬ
   4

ОБЪЕДИНИТЬ

ВЫБРАТЬ
   5

ОБЪЕДИНИТЬ

ВЫБРАТЬ
   6

ОБЪЕДИНИТЬ

ВЫБРАТЬ
   7

ОБЪЕДИНИТЬ

ВЫБРАТЬ
   8

ОБЪЕДИНИТЬ

ВЫБРАТЬ
   9
;
 ////////////////////////////////////////////////////////////////////////////////
 
ВЫБРАТЬ
    ДОБАВИТЬКДАТЕ(&ДатаНачала, ДЕНЬ, ТабЦифр1.Цифра + 10 * ТабЦифр2.Цифра + 100 * ТабЦифр3.Цифра + 1000 * ТабЦифр4.Цифра) КАК День
ПОМЕСТИТЬ ТабДней
ИЗ
    ТабЦифр КАК ТабЦифр1,
    ТабЦифр КАК ТабЦифр2,
    ТабЦифр КАК ТабЦифр3,
    ТабЦифр КАК ТабЦифр4
ГДЕ
    ДОБАВИТЬКДАТЕ(&ДатаНачала, ДЕНЬ, ТабЦифр1.Цифра + 10 * ТабЦифр2.Цифра + 100 * ТабЦифр3.Цифра + 1000 * ТабЦифр4.Цифра) <= &ДатаКонца

ИНДЕКСИРОВАТЬ ПО
    День
;

 ////////////////////////////////////////////////////////////////////////////////
 
ВЫБРАТЬ
    ТабДней.День
ИЗ
    ТабДней КАК ТабДней
   andrewks
 
11 - 28.05.12 - 17:26
(10) да, стартовать от левой границы будет пооптимальней
   drdroid
 
12 - 30.05.12 - 11:15
(9)(10) Крутяк!

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.