Имя: Пароль:
1C
1С v8
Получение предпоследней цены из регистра сведений
,
0 avz07
 
30.07.13
19:11
Доброго всем времени суток!
Мне дали задание, получить предпоследнюю цену из Регистра Сведений.Но я к сожалению, не представляю как это правильно сделать.
Пожалуйста, помогите.
1 Aleksey
 
30.07.13
19:12
(0) кнопку красную "Я" справа от заголовка видел? Для начало советую нажать на неё и почитать
2 Aleksey
 
30.07.13
19:12
запросом в котором использовать Выбрать первые 2 + Сортировать.
3 avz07
 
30.07.13
19:56
забыл написать, надо предпоследнюю отличающаяся от последней.
например:
если идут записи 6,7,7,8,9,1,1
то мне надо получить 9
4 Aleksey
 
30.07.13
19:58
различные?
5 avz07
 
30.07.13
20:08
да, записи различные
6 Aleksey
 
30.07.13
20:10
(5) ты не понял в запросе указываешь ключевое слово различные и первые 2 и сортируешь по периоду
7 avz07
 
30.07.13
20:16
а.. теперь понятно.
8 avz07
 
30.07.13
20:27
как это можно применить к Ценам Номенклатуры?
я попытался и у меня получился не точен результат
9 avz07
 
30.07.13
20:43
а точнее, то вообще не то что надо
10 Славен
 
30.07.13
20:48
упорядочить по дате ещё не забыть
11 avz07
 
30.07.13
20:57
вот пробная версия запроса:

ВЫБРАТЬ РАЗЛИЧНЫЕ ПЕРВЫЕ 2
    ЦеныНоменклатуры.Цена,
    ЦеныНоменклатуры.Номенклатура
ИЗ
    РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры
ГДЕ
    ЦеныНоменклатуры.Период = &Период
    И ЦеныНоменклатуры.ТипЦен = &ТипЦен
    И ЦеныНоменклатуры.Номенклатура = &Номенклатура

    
СГРУППИРОВАТЬ ПО
    ЦеныНоменклатуры.Период,
    ЦеныНоменклатуры.Цена,
    ЦеныНоменклатуры.Номенклатура

я выбираю конкретную дату, конкретную номенклатуру, а результат не выводит.
12 avz07
 
30.07.13
20:59
извините, что так много спрашиваю, я еще не на слишком опытный
13 Славен
 
30.07.13
21:01
глянь отладчиком что у тебя в параметрах
14 Aleksey
 
31.07.13
01:06
ГДЕ
    ЦеныНоменклатуры.Период = &Период

Это явно тут лишнее, поэтому и ничего не находит


И где упорядочить?
15 EugeniaK
 
31.07.13
01:58
Теоретически должно быть что-то типа такого

ВЫБРАТЬ
    ЦеныНоменклатурыСрезПоследних.Номенклатура,
    ЦеныНоменклатурыСрезПоследних.Цена
ИЗ
    РегистрСведений.ЦеныНоменклатуры.СрезПоследних(
            &Дата,
            ТипЦен = &ТипЦен
                И НЕ (Номенклатура, Цена) В
                        (ВЫБРАТЬ
                            ЦеныНоменклатурыСрезПоследних.Номенклатура,
                            ЦеныНоменклатурыСрезПоследних.Цена
                        ИЗ
                            РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&Дата, ТипЦен = &ТипЦен) КАК ЦеныНоменклатурыСрезПоследних)) КАК ЦеныНоменклатурыСрезПоследних
16 razlagator
 
31.07.13
02:00
не РегистрСведений.ЦеныНоменклатуры, а РегистрСведений.ЦеныНоменклатурыСрезПоследних
17 GenAcid
 
31.07.13
06:08
(16) Зачем здесь виртуальные таблицы?

ВЫБРАТЬ РАЗЛИЧНЫЕ ПЕРВЫЕ 2
    ЦеныНоменклатуры.Цена,
    ЦеныНоменклатуры.Номенклатура
ИЗ
    РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры
ГДЕ
    ЦеныНоменклатуры.Период <= &Период
    И ЦеныНоменклатуры.ТипЦен = &ТипЦен
    И ЦеныНоменклатуры.Номенклатура = &Номенклатура
УПОРЯДОЧИТЬ ПО
    ЦеныНоменклатуры.Период УБЫВ


Только потом надо проверять количество записей, если цена в принципе одна, то запрос вернет одну запись.
18 GenAcid
 
31.07.13
06:18
(17) Чет я тупнул с похмела, не получится так)
19 hhhh
 
31.07.13
06:30
(15) различные где тут?
20 вовочка
 
31.07.13
07:01
21 EugeniaK
 
31.07.13
11:11
(19) А нафиг различные?
Нам нужна одна предпоследняя цена.
Её запрос и вернет.
22 Aleksey
 
31.07.13
11:12
(21) Условие такое "надо предпоследнюю отличающаяся от последней. "
23 Trotter
 
31.07.13
11:14
(0) Это вам на собеседовании задали ?
24 EugeniaK
 
31.07.13
16:53
(22) Именно ее мой запрос и вернет.
Различные тут при чем?
Нужна одна предпоследняя, а не 2 разных.
25 avz07
 
09.08.13
16:21
спасибо за советы!
Независимо от того, куда вы едете — это в гору и против ветра!