Имя: Пароль:
1C
1С v8
Помогите с запросом
,
0 aspect
 
22.12.11
16:20
ВЫБРАТЬ РАЗЛИЧНЫЕ
   ПродажиОбороты.Регистратор,
   ПродажиОбороты.Номенклатура,
   ПродажиОбороты.ПериодДень,
   ВложенныйЗапрос.Период,
   ВложенныйЗапрос.Цена
ИЗ
   РегистрНакопления.Продажи.Обороты(&НачПериода, &КонПериода, Авто, ) КАК ПродажиОбороты
       ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
           ЦеныНоменклатурыСрезПоследних.Период КАК Период,
           ЦеныНоменклатурыСрезПоследних.Цена КАК Цена,
           ЦеныНоменклатурыСрезПоследних.Номенклатура КАК Номенклатура,
           ЦеныНоменклатурыСрезПоследних.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры
       ИЗ
           РегистрСведений.ЦеныНоменклатуры.СрезПоследних КАК ЦеныНоменклатурыСрезПоследних) КАК ВложенныйЗапрос
       ПО ПродажиОбороты.Номенклатура = ВложенныйЗапрос.Номенклатура
           И ПродажиОбороты.ХарактеристикаНоменклатуры = ВложенныйЗапрос.ХарактеристикаНоменклатуры
           И ПродажиОбороты.ПериодДень > ВложенныйЗапрос.Период
1 YF
 
22.12.11
16:21
Телепаты уже спешат тебе на помощь :-)
2 aspect
 
22.12.11
16:27
(1) сорри, нужно к номенклатуре подсоединить только последнюю цену, а не все за прошлый период. Если ограничиваю подзапрос выбрать первые 1 - не находит цен, т.к. есть цены заданные после периода продажи обороты.
3 YF
 
22.12.11
16:27
ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ Первые 1

не работает?
4 kuromanlich
 
22.12.11
16:29
(2) в книге знаний есть пример как организовать срез последний в запросе
5 kuromanlich
 
22.12.11
16:30
(3) этот способ еще до связи обрезает таблицу, по сему не катит
6 aspect
 
22.12.11
16:30
7 kuromanlich
 
22.12.11
16:31
(6) оно самое
8 ssh2006
 
22.12.11
16:51
ВЫБРАТЬ
   ПродажиОбороты.ПериодДень,
   ПродажиОбороты.Регистратор,
   ПродажиОбороты.Номенклатура,
   ПродажиОбороты.ХарактеристикаНоменклатуры,
   ЦеныНоменклатуры.ТипЦен,
   ЦеныНоменклатуры.Цена
ИЗ
   РегистрНакопления.Продажи.Обороты(&НачПериода, &КонПериода, Авто, ) КАК ПродажиОбороты
       ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры
       ПО ПродажиОбороты.ХарактеристикаНоменклатуры = ЦеныНоменклатуры.ХарактеристикаНоменклатуры
           И ((ЦеныНоменклатуры.Период, ЦеныНоменклатуры.ТипЦен) В
               (ВЫБРАТЬ
                   МАКСИМУМ(ТабЦеныНоменклатуры.Период) КАК Период,
                   ТабЦеныНоменклатуры.ТипЦен
               ИЗ
                   РегистрСведений.ЦеныНоменклатуры КАК ТабЦеныНоменклатуры
               ГДЕ
                   ТабЦеныНоменклатуры.Номенклатура = ПродажиОбороты.Номенклатура
                   И ТабЦеныНоменклатуры.ХарактеристикаНоменклатуры = ПродажиОбороты.ХарактеристикаНоменклатуры
                   И ТабЦеныНоменклатуры.Период <= ПродажиОбороты.ПериодДень
               СГРУППИРОВАТЬ ПО
                           ТабЦеныНоменклатуры.ТипЦен))
           И ПродажиОбороты.Номенклатура = ЦеныНоменклатуры.Номенклатура
9 aspect
 
22.12.11
18:31
(8) Спасибо, так и сделал (первый пример статьи), работает быстро.
10 AndOne
 
22.12.11
18:35
(8)
за такую реализацию запроса необхоимо отстреливать :)
11 aspect
 
22.12.11
18:39
(10) Вот ссылка Книга знаний: Срез последних на каждую дату в запросе; , отстреливайте, только приведите свое решение, т.к. я сдался.
12 ssh2006
 
23.12.11
10:25
(9) в статье в первом примере по другому сделано. В моем примере подзапрос в условии соединения использует поля внешнего запроса - корелированный подзапрос.
(10) за пиз**жь без аргументации в угол ставить надо