Имя: Пароль:
1C
1С v8
Получить Максимум по периоду.
0 Patrio_
O_Muerte
 
16.07.13
19:00
ВЫБРАТЬ
   ПродажиОбороты.Номенклатура КАК Номенклатура,
   ПродажиОбороты.Контрагент КАК Контрагент,
   СУММА(ПродажиОбороты.КоличествоОборот) КАК КоличествоОборот,
   СУММА(ПродажиОбороты.СтоимостьОборот) КАК СтоимостьОборот,
   СУММА(ПродажиОбороты.СтоимостьБезСкидокОборот) КАК СтоимостьБезСкидокОборот,
   СУММА(ПродажиОбороты.НДСОборот) КАК НДСОборот,
   ЦеныНоменклатуры.Цена КАК Цена,
   МАКСИМУМ(ЦеныНоменклатуры.Период) КАК Период,
   ПродажиОбороты.Период КАК Период1,
   ПродажиОбороты.Регистратор КАК Регистратор,
   ПродажиОбороты.ДоговорКонтрагента КАК ДоговорКонтрагента
ИЗ
   РегистрНакопления.Продажи.Обороты(&Дата1, &Дата2, Запись, ) КАК ПродажиОбороты
       ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры
       ПО ПродажиОбороты.Номенклатура = ЦеныНоменклатуры.Номенклатура
           И ПродажиОбороты.ДоговорКонтрагента.ТипЦен = ЦеныНоменклатуры.ТипЦен
           И ПродажиОбороты.Период >= ЦеныНоменклатуры.Период

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

Задача заключается в получении цен на дату каждого документа.
Подзадача которую не могу победить заключается в том, что при выполнении указанного запроса я никак не могу получить Максимум по периодам - в любом случае я получаю все периоды. Из-за этого я получаю дублированные данные в самом отчете. ЧЯДНТ

За оригинал беру эту ссылку:
http://itland.ru/forum/index.php?showtopic=2237
1 shuhard
 
16.07.13
19:01
(0) а что мешает использовать классический срез последних на каждую дату из БЗ ?
2 Patrio_
O_Muerte
 
16.07.13
19:05
Что такое БЗ?
Срез последних хранит именно последнюю дату, а мне надо получить цену на дату документа.
3 shuhard
 
16.07.13
20:05
(2) что мешает использовать классический срез последних на каждую дату из Базы знаний мисты ?
4 RomanYS
 
16.07.13
20:35
ВЫБРАТЬ
   ЦеныНоменклатурыСрезПоследних.Номенклатура КАК Номенклатура,
   ЦеныНоменклатурыСрезПоследних.Цена,
   ЦеныНоменклатурыСрезПоследних.Период
ПОМЕСТИТЬ Цены
ИЗ
   РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&НачДата, ТипЦен = &ТипЦен) КАК ЦеныНоменклатурыСрезПоследних

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

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

ИНДЕКСИРОВАТЬ ПО
   Номенклатура
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   Цены.Номенклатура КАК Номенклатура,
   Цены.Цена,
   Цены.Период КАК ПериодС,
   МИНИМУМ(ЕСТЬNULL(Цены1.Период, &КонДата)) КАК ПериодПо
ПОМЕСТИТЬ ЦеныПериодами
ИЗ
   Цены КАК Цены
       ЛЕВОЕ СОЕДИНЕНИЕ Цены КАК Цены1
       ПО Цены.Номенклатура = Цены1.Номенклатура
           И Цены.Период < Цены1.Период

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

ИНДЕКСИРОВАТЬ ПО
   Номенклатура
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   ПродажиОбороты.Номенклатура,
   ПродажиОбороты.Регистратор,
   ПродажиОбороты.Период,
   ЦеныПериодами.Цена
ИЗ
   РегистрНакопления.Продажи.Обороты(&НачДата, &КонДата, Регистратор, ) КАК ПродажиОбороты
       ЛЕВОЕ СОЕДИНЕНИЕ ЦеныПериодами КАК ЦеныПериодами
       ПО ПродажиОбороты.Номенклатура = ЦеныПериодами.Номенклатура
           И ПродажиОбороты.Период >= ЦеныПериодами.ПериодС
           И ПродажиОбороты.Период < ЦеныПериодами.ПериодПо
5 Patrio_
O_Muerte
 
17.07.13
09:22
(4)Чувак, ты меня прям задавил интеллектом, большущее тебе спасибо.
(3)Дык не просек фишку.