Имя: Пароль:
1C
1С v8
Помогите с запросом 1С 8
0 Dimon1C
 
02.04.15
13:54
Возможно решение простое, но что-то на ум не идет
Есть периодический Регистр сведений "Работники"

нужно получить запросом в одной строке данные о текущей записи и о следующей по времени.
Пример, исходные записи:
Сидоров 01.05.2015
Сидоров 03.05.2015
Сидоров 05.05.2015

В итоге:
Сидоров 01.05.2015 03.05.2015
Сидоров 03.05.2015 05.05.2015
Сидоров 05.05.2015 <пустая дата>
1 1976vas
 
02.04.15
13:57
(0) Получай нормально в запросе, а в выборке уже химичь.
2 Ненавижу 1С
 
гуру
02.04.15
13:58
ВЫБРАТЬ
    КурсыВалют.Валюта,
    КурсыВалют.Период,
    МИНИМУМ(КурсыВалют1.Период) КАК Период1
ИЗ
    РегистрСведений.КурсыВалют КАК КурсыВалют
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КурсыВалют КАК КурсыВалют1
        ПО КурсыВалют.Валюта = КурсыВалют1.Валюта
            И КурсыВалют.Период < КурсыВалют1.Период

СГРУППИРОВАТЬ ПО
    КурсыВалют.Период,
    КурсыВалют.Валюта
3 DrShad
 
02.04.15
13:59
(2) вот как ты успеваешь так быстро запросы клепать? только хотел сказать про соединение, а ты уже и запрос выложил
4 Ненавижу 1С
 
гуру
02.04.15
14:01
(3) у меня есть брошюра "запросы на каждый случай"
5 DrShad
 
02.04.15
14:03
(4) а в электронном виде есть?
6 Ненавижу 1С
 
гуру
02.04.15
14:04
(5) в голове есть)))
да шучу я, но мысль интересная
7 Dimon1C
 
02.04.15
14:09
Усложню задачу:

Исходные записи:
Сидоров 01.05.2015 Вахтер
Сидоров 03.05.2015 Слесарь
Сидоров 05.05.2015 Электрик

В итоге:
Сидоров 01.05.2015 03.05.2015 Вахтер Слесарь
Сидоров 03.05.2015 05.05.2015 Слесарь Электрик
Сидоров 05.05.2015 <пустая дата> Электрик <пусто>
8 DrShad
 
02.04.15
14:09
(6) я бы даже в такой электронной документации нажал бы кнопочку "Отблагодарить автора" :))
9 DrShad
 
02.04.15
14:10
(7) ты еще за первую постановку не рассчитался
10 butterbean
 
02.04.15
14:10
(7) э усложнило задачу на 0,0001%
11 Альбатрос
 
02.04.15
14:11
(7) Ну все, теперь не решаемо... Даже добавление ннужных полей в запросе не поможет... Сворачивай.
12 Ненавижу 1С
 
гуру
02.04.15
14:15
(7) надо соединиться с этой же таблицей по периодам и сотруднику еще два раза

с тебя 300 рублей на телефон
13 DrShad
 
02.04.15
14:18
(12) это не я :), хотя чем черт не шутит
14 Ненавижу 1С
 
гуру
02.04.15
14:19
(13) что не ты?
15 Ненавижу 1С
 
гуру
02.04.15
14:19
ВЫБРАТЬ
    КурсыВалют.Валюта,
    КурсыВалют.Период,
    МИНИМУМ(КурсыВалют1.Период) КАК Период1
ПОМЕСТИТЬ Т
ИЗ
    РегистрСведений.КурсыВалют КАК КурсыВалют
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КурсыВалют КАК КурсыВалют1
        ПО КурсыВалют.Валюта = КурсыВалют1.Валюта
            И КурсыВалют.Период < КурсыВалют1.Период

СГРУППИРОВАТЬ ПО
    КурсыВалют.Период,
    КурсыВалют.Валюта
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    Т.Валюта,
    Т.Период,
    Т.Период1,
    КурсыВалют.Курс,
    КурсыВалют1.Курс КАК Курс1
ИЗ
    Т КАК Т
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КурсыВалют КАК КурсыВалют
        ПО Т.Валюта = КурсыВалют.Валюта
            И Т.Период = КурсыВалют.Период
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КурсыВалют КАК КурсыВалют1
        ПО Т.Валюта = КурсыВалют1.Валюта
            И Т.Период1 = КурсыВалют1.Период
16 Dimon1C
 
02.04.15
14:26
(15) Большое спасибо, поидее можно первое соединение во 2 запросе не делать, так как курс можно получить в первом запросе.
17 DrShad
 
02.04.15
14:32
(14) я тебе деньги кидал легко, а вот тут не факт
18 Ненавижу 1С
 
гуру
02.04.15
14:43
(16) можно, где мои 300?
19 Ненавижу 1С
 
гуру
02.04.15
14:44
(17) )))
Есть два вида языков, одни постоянно ругают, а вторыми никто не пользуется.