Имя: Пароль:
1C
 
Преобразовать таблицу в запросе
,
0 Pershin Sergei88
 
21.12.17
08:45
Коллеги помогите построить запрос, если конечно это вообще  возможно реализовать в запросе.

Изначальная таблица:

Период            ПериодЗавершения    Состояние
05.01.2017        10.01.2017            Нет
11.01.2017        20.01.2017            Да
13.01.2017                        Да
02.02.2017        10.02.2017            Да
12.02.2017                        Да
18.02.2017                        Нет



Необходимо привести к такому виду:

Период            ПериодЗавершения    Состояние
05.01.2017        10.01.2017            Нет
11.01.2017        20.01.2017            Да
21.01.2017        01.02.2017            нет
02.02.2017        10.02.2017                      да
11.02.2017        11.02.2017            нет
12.02.2017        17.02.2017            Да
18.02.2017                                              нет
1 regniws
 
21.12.17
08:46
IQ тест - найди закономерность?
2 Pershin Sergei88
 
21.12.17
08:47
Период          ПериодЗавершения   Состояние
05.01.2017      10.01.2017            Нет
11.01.2017      20.01.2017            Да
13.01.2017                            Да
02.02.2017      10.02.2017            Да
12.02.2017                            Да
18.02.2017                            Нет



Необходимо привести к такому виду:

Период            ПериодЗавершения    Состояние
05.01.2017        10.01.2017            Нет
11.01.2017        20.01.2017            Да
21.01.2017        01.02.2017            нет
02.02.2017        10.02.2017            да
11.02.2017        11.02.2017            нет
12.02.2017        17.02.2017            Да
18.02.2017                              нет
3 Pershin Sergei88
 
21.12.17
08:51
Изначальная таблица:
Период      ПериодЗавершения Состояние
05.01.2017  10.01.2017       Нет
11.01.2017  20.01.2017       Да
13.01.2017  хххххххххх       Да
02.02.2017  10.02.2017       Да
12.02.2017  хххххххххх       Да
18.02.2017  хххххххххх       Нет



Необходимо привести к такому виду:

Период      ПериодЗавершения    Состояние
05.01.2017  10.01.2017          Нет
11.01.2017  20.01.2017          Да
21.01.2017  01.02.2017          нет
02.02.2017  10.02.2017          да
11.02.2017  11.02.2017          нет
12.02.2017  17.02.2017          Да
18.02.2017  хххххххххх          нет

Где хххххххххх - пустая дата
4 regniws
 
21.12.17
08:55
А куда делась
13.01.2017  хххххххххх       Да
5 regniws
 
21.12.17
08:56
И почему появилась
21.01.2017  01.02.2017          нет

Может проще описать задачу?
6 VladZ
 
21.12.17
08:59
Мое мнение: изначально задача поставлена криво. Задача в (0) - это "выпрямление изначально кривой задачи".
7 Pershin Sergei88
 
21.12.17
09:00
вот в консоли накидал исходную таблицу

ВЫБРАТЬ
    ДАТАВРЕМЯ(2017, 1, 5, 0, 0, 0) КАК Начало,
    ДАТАВРЕМЯ(2017, 1, 10, 0, 0, 0) КАК конец,
    ЛОЖЬ КАК Статус
ПОМЕСТИТЬ ВТ

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    ДАТАВРЕМЯ(2017, 1, 11, 0, 0, 0),
    ДАТАВРЕМЯ(2017, 1, 20, 0, 0, 0),
    ИСТИНА

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    ДАТАВРЕМЯ(2017, 1, 13, 0, 0, 0),
    ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0),
    ИСТИНА

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    ДАТАВРЕМЯ(2017, 2, 2, 0, 0, 0),
    ДАТАВРЕМЯ(2017, 2, 10, 0, 0, 0),
    ИСТИНА

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    ДАТАВРЕМЯ(2017, 2, 12, 0, 0, 0),
    ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0),
    ИСТИНА

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    ДАТАВРЕМЯ(2017, 2, 18, 0, 0, 0),
    ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0),
    ЛОЖЬ
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ВТ.Начало,
    ВТ.конец,
    ВТ.Статус
ИЗ
    ВТ КАК ВТ
8 Pershin Sergei88
 
21.12.17
09:02
(4)
А куда делась
13.01.2017  хххххххххх       Да


Она попала в период
11.01.2017  20.01.2017       Да
т.к. там тоже состояние ДА
9 VladZ
 
21.12.17
09:04
По сути - это периодический регистр сведений. Регистр содержит состояние (Да, нет).

Нужно организовать запись в этот регистр. Период завершения в этом случае не нужен. Он будет равен следующей дате изменения статуса.
10 VladZ
 
21.12.17
09:05
Запрос в этом случае будет такой:

Выбрать *
из МойНовыйРегистр.
11 Pershin Sergei88
 
21.12.17
09:05
(5) И почему появилась
21.01.2017  01.02.2017          нет


потому что вся таблица по сути это один интервал (например год), но не все периоды попадают в изначальную таблицу, поэтому их нужно добавить с статусом ложь,
чтоб на выходе была таблица без пропусков вообще, т.е. все периоды имели статусы
12 ПегийЛунь
 
21.12.17
09:10
Сформировать запрос в который добавить строку
ДОБАВИТЬКДАТЕ(КакойТоРегистр.ПериодНачала, ДЕНЬ, -1) КАК ДатаСледЗаписиМинус1
13 Pershin Sergei88
 
21.12.17
09:10
(9) Сейчас опишу полную задачу, чтоб было понятнее откуда берется изначальная таблица и почему есть потребность превратить ее в желаемый вид.
14 Радим1987
 
21.12.17
09:18
15 VladZ
 
21.12.17
10:16
(13) С этого и нужно было начинать.