Имя: Пароль:
1C
1С v8
Регистр сведений - выбор разницы значений
,
0 radiks
 
28.05.15
16:35
Подскажите как выбрать разницу значений регистра сведений в запросе?
Напр. есть значения регистра 10, 30, 55... Как получить в запросе результат 20 (т.е. 30-10), 25 ( т.е. 55-30) и т.д.
1 asady
 
28.05.15
16:36
(0) а 45 (55-10)?
2 radiks
 
28.05.15
16:37
(1)нет
3 vicof
 
28.05.15
16:38
Соединить сам с собой по периоду и взять максимум, посчитать разницу
4 radiks
 
28.05.15
16:39
(1) есть последовательность значений и нужно вывести разницу между предыдущим и последующим
5 asady
 
28.05.15
16:39
(3) период откуда ты взял? в топике нет про него ничего.

(2) по какому принципу считать разницы - пары как сочтавляются
6 asady
 
28.05.15
16:40
(4) нет в таблице предыдущего и следующего - понимаешь?
7 radiks
 
28.05.15
16:40
(3) пример можно, туплю что-то
(5) период (сочетаются по периоду), забыл написать
8 asady
 
28.05.15
16:42
(7) тогда (3)+1
9 vicof
 
28.05.15
16:44
(8) Вангую помаленьку :)
10 radiks
 
28.05.15
16:50
(8, 9) можно пример?
11 myk0lka
 
28.05.15
16:55
Т.е. если период это t, значение на период Zt то тебе нужно получить Zt - Zt-1? Так?
12 radiks
 
28.05.15
16:57
(11) именно. И это нужно в запросе
13 Timon1405
 
28.05.15
17:01
ВЫБРАТЬ
    ДАТАВРЕМЯ(2015, 1, 1) КАК Дата,
    10 КАК Количество
ПОМЕСТИТЬ ВТ

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

ВЫБРАТЬ
    ДАТАВРЕМЯ(2015, 1, 2),
    30

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

ВЫБРАТЬ
    ДАТАВРЕМЯ(2015, 1, 3),
    55

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

ВЫБРАТЬ
    ДАТАВРЕМЯ(2015, 1, 4),
    100
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ВТ.Дата КАК Дата,
    ВТ.Количество КАК Количество,
    МАКСИМУМ(ВТ1.Дата) КАК Дата1
ПОМЕСТИТЬ ВТ_МаксДат
ИЗ
    ВТ КАК ВТ
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТ КАК ВТ1
        ПО ВТ.Дата > ВТ1.Дата

СГРУППИРОВАТЬ ПО
    ВТ.Дата,
    ВТ.Количество
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ВТ.Дата,
    ВТ.Количество,
    ВТ_МаксДат.Количество - ВТ.Количество КАК Разность
ИЗ
    ВТ КАК ВТ
        ЛЕВОЕ СОЕДИНЕНИЕ ВТ_МаксДат КАК ВТ_МаксДат
        ПО ВТ.Дата = ВТ_МаксДат.Дата1
14 Demetres
 
28.05.15
17:11
Вот так ещё


        "ВЫБРАТЬ
        |    НекийРегистрСведений.Период,
        |    НекийРегистрСведений.Измерение1,
        |    НекийРегистрСведений.РесурсЧисло
        |ПОМЕСТИТЬ ВТ_Исходная
        |ИЗ
        |    РегистрСведений.НекийРегистрСведений КАК НекийРегистрСведений
        |;
        |
        |////////////////////////////////////////////////////////////////////////////////
        |ВЫБРАТЬ
        |    ВТ_Исходная.Период,
        |    ВТ_Исходная.Измерение1,
        |    ВТ_Исходная.РесурсЧисло,
        |    ЕСТЬNULL(ВТ_Исходная1.Период, ВТ_Исходная.Период) КАК ПериодСледующий,
        |    ЕСТЬNULL(ВТ_Исходная1.РесурсЧисло, ВТ_Исходная.РесурсЧисло) КАК РесурсЧислоСледующий
        |ПОМЕСТИТЬ ВТ_ДанныеСоединения
        |ИЗ
        |    ВТ_Исходная КАК ВТ_Исходная
        |        ЛЕВОЕ СОЕДИНЕНИЕ ВТ_Исходная КАК ВТ_Исходная1
        |        ПО ВТ_Исходная.Измерение1 = ВТ_Исходная1.Измерение1
        |            И ВТ_Исходная.Период < ВТ_Исходная1.Период
        |;
        |
        |////////////////////////////////////////////////////////////////////////////////
        |ВЫБРАТЬ
        |    ВТ_ДанныеСоединения.Период,
        |    ВТ_ДанныеСоединения.Измерение1,
        |    ВТ_ДанныеСоединения.РесурсЧисло,
        |    МИНИМУМ(ВТ_ДанныеСоединения.ПериодСледующий) КАК ПериодСледующий
        |ПОМЕСТИТЬ ВТ_Группировка
        |ИЗ
        |    ВТ_ДанныеСоединения КАК ВТ_ДанныеСоединения
        |
        |СГРУППИРОВАТЬ ПО
        |    ВТ_ДанныеСоединения.Период,
        |    ВТ_ДанныеСоединения.Измерение1,
        |    ВТ_ДанныеСоединения.РесурсЧисло
        |;
        |
        |////////////////////////////////////////////////////////////////////////////////
        |ВЫБРАТЬ
        |    ВТ_ДанныеСоединения.Период КАК Период,
        |    ВТ_ДанныеСоединения.Измерение1,
        |    ВТ_ДанныеСоединения.РесурсЧислоСледующий - ВТ_ДанныеСоединения.РесурсЧисло КАК ИскомаяРазность
        |ИЗ
        |    ВТ_ДанныеСоединения КАК ВТ_ДанныеСоединения
        |        ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТ_Группировка КАК ВТ_Группировка
        |        ПО ВТ_ДанныеСоединения.Период = ВТ_Группировка.Период
        |            И ВТ_ДанныеСоединения.Измерение1 = ВТ_Группировка.Измерение1
        |            И ВТ_ДанныеСоединения.РесурсЧисло = ВТ_Группировка.РесурсЧисло
        |
        |УПОРЯДОЧИТЬ ПО
        |    Период";
15 Demetres
 
28.05.15
17:13
Последняя таблица такая

        |////////////////////////////////////////////////////////////////////////////////
        |ВЫБРАТЬ
        |    ВТ_ДанныеСоединения.Период КАК Период,
        |    ВТ_ДанныеСоединения.Измерение1,
        |    ВТ_ДанныеСоединения.РесурсЧислоСледующий - ВТ_ДанныеСоединения.РесурсЧисло КАК ИскомаяРазность
        |ИЗ
        |    ВТ_ДанныеСоединения КАК ВТ_ДанныеСоединения
        |        ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТ_Группировка КАК ВТ_Группировка
        |        ПО ВТ_ДанныеСоединения.Период = ВТ_Группировка.Период
        |            И ВТ_ДанныеСоединения.Измерение1 = ВТ_Группировка.Измерение1
        |            И ВТ_ДанныеСоединения.РесурсЧисло = ВТ_Группировка.РесурсЧисло
        |            И ВТ_ДанныеСоединения.ПериодСледующий = ВТ_Группировка.ПериодСледующий
        |
        |УПОРЯДОЧИТЬ ПО
        |    Период";
16 radiks
 
28.05.15
17:24
(13, 14)  спасибо!
2 + 2 = 3.9999999999999999999999999999999...