Имя: Пароль:
1C
1C 7.7
v7: SQL, прямой запрос, периодический реквизит, получить первое значение после даты
0 Eeakie
 
29.10.15
18:35
Добрый вечер.

|        case
    |        when $ЗаявкаСтроки.ПриходаНет = 1
    |        then $ЗаявкаСтроки.Количество * 'тут должно быть следующее значение периодического реквизита после Ж.date_time_iddoc'
    |        else $ЗаявкаСтроки.Количество * $ПоследнееЗначение.Товары.Прих_Цена(Товары.id, cast(left(Журнал.date_time_iddoc, 8) as datetime))
    |        end
    |        as СуммаПокупки

Как получить "следующее после Ж.date_time_iddoc значение периодического реквизита"?
1 Ёпрст
 
29.10.15
18:38
писать ручонками запрос к _1sconst и  там, что угодно, хоть последнее, хоть предпоследнее
2 Eeakie
 
29.10.15
18:41
(1) Не сильно радужно..
3 orefkov
 
29.10.15
19:00
Посмотри, во что $ПоследнееЗначение разворачивается, и сделай по аналогии.
http://www.1cpp.ru/docum/html/ODBC.html#id38
4 Eeakie
 
29.10.15
19:22
(3) Честно говоря, не очень понял какую аналогию тут можно провести.
5 Eeakie
 
29.10.15
19:38
(3) А нет, всё понял :) Спасибо.
6 orefkov
 
29.10.15
19:52
(5)
Там скорее всего будет что-то типа (select top 1 ... where date < .... order by ... desc)

А тебе надо будет
(select top 1 ... where date > ... order by ... asc)
7 Eeakie
 
29.10.15
19:55
(6) Да, так и сделал. Еще раз спасибо.
8 Eeakie
 
29.10.15
19:56
(6) + только убрать "по убыванию" надо было.
9 orefkov
 
29.10.15
20:20
(8)
А знак сравнения даты?
меньше на больше.
10 Eeakie
 
29.10.15
20:22
(9)
|        case
    |        when $ЗаявкаСтроки.ПриходаНет = 1
    |        then $ЗаявкаСтроки.Количество * (
    |            select top 1
    |                cast(Периодика.value as numeric(15, 3))
    |            from
    |                _1sconst as Периодика (nolock)
    |            where
    |                Периодика.id = 38 and
    |                Периодика.objid = Товары.id and
    |                Периодика.date > cast(left(Журнал.date_time_iddoc, 8) as datetime)
    |            order by
    |                Периодика.date, Периодика.time, Периодика.docid, Периодика.row_id
    |            )
    |        else $ЗаявкаСтроки.Количество * (
    |            select top 1
    |                cast(Периодика.value as numeric(15, 3))
    |            from
    |                _1sconst as Периодика (nolock)
    |            where
    |                Периодика.id = 38 and
    |                Периодика.objid = Товары.id and
    |                Периодика.date <= cast(left(Журнал.date_time_iddoc, 8) as datetime)
    |            order by
    |                Периодика.date desc, Периодика.time desc, Периодика.docid desc, Периодика.row_id desc
    |            )
    |        end
    |        as СуммаПокупки,
Кaк может человек ожидaть, что его мольбaм о снисхождении ответит тот, кто превыше, когдa сaм он откaзывaет в милосердии тем, кто ниже его? Петр Трубецкой