Имя: Пароль:
1C
1С v8
убрать строки с одинаковой ценой, если она осталась на следующих датах (СКД)
, , ,
0 leobrn
 
08.12.16
11:06
Подскажите, как реализовать...
Нужно убрать строки с одинаковой ценой, если она осталась на следующих датах.

Допустим есть следэ. данные:
Дата Цена
01.01.2016 5460
03.01.2016 5460
04.01.2016 5630
05.01.2016 5460
13.01.2016 7200
15.01.2016 7200

Нужно, чтобы выводилось так:
01.01.2016 5460
04.01.2016 5630
05.01.2016 5460
13.01.2016 7200

Запрос:
ВЫБРАТЬ
    ПриходнаяНакладнаяЗапасы.Ссылка.Дата КАК Дата,
    ПриходнаяНакладнаяЗапасы.Ссылка.Контрагент,
    ПриходнаяНакладнаяЗапасы.Количество,
    ПриходнаяНакладнаяЗапасы.Цена,
    ПриходнаяНакладнаяЗапасы.Количество * ПриходнаяНакладнаяЗапасы.Цена КАК Сумма,
    ПриходнаяНакладнаяЗапасы.Номенклатура
ИЗ
    Документ.ПриходнаяНакладная.Запасы КАК ПриходнаяНакладнаяЗапасы
{ГДЕ
    (ПриходнаяНакладнаяЗапасы.Ссылка.Дата МЕЖДУ &Начало И &Конец)}


УПОРЯДОЧИТЬ ПО
    Дата УБЫВ
1 kumena
 
08.12.16
11:33
Выбрать
Цена

Поместить ВсеЦены
Из Таблица

Сгруппировать
по
Цена

;

Выбрать
ВсеЦены.Цена
,Минимум(Таблица.Дата) КАК Дата

Из ВсеЦены

Левое соединение Таблица КАК Таблица
По ВсеЦены.Цена = Таблица.Цена

Сгруппировать по
ВсеЦены.Цена
2 Вафель
 
08.12.16
11:39
(1) цена может снова такой же стать, так что не сработает
3 leobrn
 
08.12.16
12:32
(2) да попробовал таким способом , не выводит строку, когда цена снова такая же
4 leobrn
 
08.12.16
12:32
ВЫБРАТЬ
    ПриходнаяНакладнаяЗапасы.Цена
ПОМЕСТИТЬ ВсеЦены
ИЗ
    Документ.ПриходнаяНакладная.Запасы КАК ПриходнаяНакладнаяЗапасы

СГРУППИРОВАТЬ ПО
    ПриходнаяНакладнаяЗапасы.Цена
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ВсеЦены.Цена,
    МИНИМУМ(ПриходнаяНакладнаяЗапасы.Ссылка.Дата) КАК Дата,
    ПриходнаяНакладнаяЗапасы.Количество,
    ПриходнаяНакладнаяЗапасы.Номенклатура,
    ПриходнаяНакладнаяЗапасы.Ссылка.Контрагент,
    ВсеЦены.Цена * ПриходнаяНакладнаяЗапасы.Количество КАК Сумма
ИЗ
    ВсеЦены КАК ВсеЦены
        Левое СОЕДИНЕНИЕ Документ.ПриходнаяНакладная.Запасы КАК ПриходнаяНакладнаяЗапасы
        ПО ВсеЦены.Цена = ПриходнаяНакладнаяЗапасы.Цена
{ГДЕ
    (ПриходнаяНакладнаяЗапасы.Ссылка.Дата МЕЖДУ &Начало И &Конец)}

СГРУППИРОВАТЬ ПО
    ВсеЦены.Цена,
    ПриходнаяНакладнаяЗапасы.Количество,
    ПриходнаяНакладнаяЗапасы.Номенклатура,
    ПриходнаяНакладнаяЗапасы.Ссылка.Контрагент

УПОРЯДОЧИТЬ ПО
    Дата УБЫВ
5 leobrn
 
08.12.16
18:15
Может еще есть какой-нибудь вариант ?
6 Мышка
 
09.12.16
00:37
это ж вроде СКД? зачем тогда пытаться все сделать в запросе?
можно через вычисляемые поля:
ВЫБОР КОГДА ВЫЧИСЛИТЬВЫРАЖЕНИЕ("Цена",,,"Предыдущая","Предыдущая")=Цена Тогда 0 ИНАЧЕ Цена КОНЕЦ

а те строки, в которых ПредыдЦена = 0, скрыть.
7 leobrn
 
09.12.16
06:14
(6) получилось, но не могу скрыть поля. Ставлю отбор цена не равно 0 не реагирует и почему то итог по контрагенту допустим рассчитывается, как будто остались старые значение, а не с 0.
8 leobrn
 
09.12.16
08:33
попробовал сделать новое поле в вычисляемых выражениях, назвал ПредЦена и задал ВЫЧИСЛИТЬВЫРАЖЕНИЕ("Цена",,,"Предыдущая","Предыдущая"). Потом в отборе ставлю , что Цена не равна ПредЦены и выдает Выражение не может быть вычислено НаборДанных1.Цена
9 Dotoshin
 
09.12.16
08:51
(0) А какова конечная цель этого мероприятия?
10 AceVi
 
09.12.16
09:31
(0) Это стандартная задачка - выбор срез последних\первых на дату в запросе. Получается что цена у тебя выступает как одно из измерений. загугли пример запроса.