Имя: Пароль:
1C
Админ
Помогите с запросом
,
0 prorokk
 
18.04.13
12:36
День добрый Уважаемые! помогите с запросом

ВЫБРАТЬ
   ТоварыНаСкладахОстаткиИОбороты.Номенклатура,
   ТоварыНаСкладахОстаткиИОбороты.КоличествоКонечныйОстаток,
   ТоварыНаСкладахОстаткиИОбороты.КоличествоНачальныйОстаток
ИЗ
   РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты(&датаН, &датаК, Месяц, , ) КАК ТоварыНаСкладахОстаткиИОбороты

не могу понять как прикрутить сюда цены (рег. сведений)
что-бы выводились на начало и конец периода
1 zak555
 
18.04.13
12:37
двумя левыеми
2 Wobland
 
18.04.13
12:37
прикручивай две таблицы про цены на дату
3 lopus
 
18.04.13
12:38
Смотри запрос в УТ 11 торг 29
4 wise
 
18.04.13
12:39
скажи ХОТЬ, что ХОЧЕШЬ иметь на выходе...

p.s. а ЛУЧШЕ просто задачу ОЗВУЧЬ.
5 prorokk
 
18.04.13
12:43
(4) Задача такая
нужно за указанный период в ТЗ вывести
Номенклатура КоличествоНачало КоличествоКонец ЦенаН ЦенаК

при условии что ЦенаН <> ЦенаК
6 prorokk
 
18.04.13
12:47
По левому получилось

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

а в ТЗ одна и та-же позиция по 15 раз.
7 1Сергей
 
18.04.13
12:48
(6) в РегистрСведений.ЦеныНоменклатуры не одно ведь измерение, правда?
8 Рэйв
 
18.04.13
12:49
(6)
....РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&ДатаН)
....РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&ДатаК)
9 prorokk
 
18.04.13
12:49
(7) да да да... позабыл...
10 prorokk
 
18.04.13
13:01
(8) Спасибо не подумал про СрезПоследних и дату
11 prorokk
 
18.04.13
13:04
Итак получилось

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

Но жутко медленно формируется
А Возможно ли в Запросе прописать условие ЦенаН<>ЦенаК
12 zak555
 
18.04.13
13:07
(11) не используй таблицу ОстаткиИОбороты -- используй только остатки
13 1Сергей
 
18.04.13
13:08
(11) >>А Возможно ли в Запросе прописать условие ЦенаН<>ЦенаК

Да
14 prorokk
 
18.04.13
13:15
(12) А как с началом и концом Периода?
(13) Можно пример?
15 prorokk
 
18.04.13
13:19
жуткое торможение Вылечил...
16 prorokk
 
18.04.13
13:21
(13)
ГДЕ
ЦеныНоменклатурыСрезПоследнихНачало.Цена <> ЦеныНоменклатурыСрезПоследнихКонец.Цена";

так не сильно Позорно?
17 zak555
 
18.04.13
13:27
ВЫБРАТЬ
   ТоварыНаСкладахОстатки.КоличествоОстаток КАК КоличествоНачальныйОстаток,
   ТоварыНаСкладахОстатки.Номенклатура
ПОМЕСТИТЬ ОстаткиНаНачало
ИЗ
   РегистрНакопления.ТоварыНаСкладах.Остатки(&ДатаН, ) КАК ТоварыНаСкладахОстатки
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   ЕСТЬNULL(ТоварыНаСкладахОстатки.Номенклатура, ОстаткиНаНачало.Номенклатура) КАК Номенклатура,
   ОстаткиНаНачало.КоличествоНачальныйОстаток,
   ТоварыНаСкладахОстатки.КоличествоОстаток КАК КоличествоКонечныйОстаток
ИЗ
   ОстаткиНаНачало КАК ОстаткиНаНачало
       ПОЛНОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки(&датаК, ) КАК ТоварыНаСкладахОстатки
       ПО ОстаткиНаНачало.Номенклатура = ТоварыНаСкладахОстатки.Номенклатура
18 zak555
 
18.04.13
13:33
хотя временная таблица наверное ненужна

ВЫБРАТЬ
   ЕСТЬNULL(ТоварыНаСкладахОстаткиНач.Номенклатура, ТоварыНаСкладахОстаткиКон.Номенклатура) КАК Номенклатура,
   ТоварыНаСкладахОстаткиНач.КоличествоОстаток КАК КоличествоНачальныйОстаток,
   ТоварыНаСкладахОстаткиКон.КоличествоОстаток КАК КоличествоКонечныйОстаток
ИЗ
   РегистрНакопления.ТоварыНаСкладах.Остатки(&ДатаН, ) КАК ТоварыНаСкладахОстаткиНач
       ПОЛНОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки(&ДатаК, ) КАК ТоварыНаСкладахОстаткиКон
       ПО ТоварыНаСкладахОстаткиНач.Номенклатура = ТоварыНаСкладахОстаткиКон.Номенклатура
19 1Сергей
 
18.04.13
13:35
(16) вполне нормально
20 Steini
 
18.04.13
13:37
наоборот, рекомендуется все три виртуальные таблицы разнести по временным таблицам - потом уже их все соединить - выйгрыш по времени для больших таблиц будет колосальный
21 zak555
 
18.04.13
13:38
(20) да ?
22 Steini
 
18.04.13
13:39
(21) пруф не скину, но такая рекомендация есть, а именно: не делать соединений с виртуальными таблицами никогда, только со временными
23 1Сергей
 
18.04.13
13:40
(22) у меня на постгре финты с ВТ не срабатывали, но соглашусь с Вами
24 prorokk
 
18.04.13
13:54
Всем Спасибо)
25 zak555
 
18.04.13
14:06
(22) > а именно: не делать соединений с виртуальными таблицами никогда, только со временными

даже если делается запрос по индексируемым полям ?