Имя: Пароль:
1C
1С v8
Помогите с алгоритмом для запроса
0 Albena
 
02.08.11
10:53
пишу запрос для УТ на 8.1, использую построитель отчета
смысл запроса такой: вывести номенклатуру с группировкой по складам, по которой не было расхода в течение года и полугода
вот запрос
ВЫБРАТЬ
   1 КАК НетРасходаГод,
   ПартииТоваровНаСкладахОстаткиИОбороты.Номенклатура,
   ПартииТоваровНаСкладахОстаткиИОбороты.Склад,
   СУММА(ПартииТоваровНаСкладахОстаткиИОбороты.КоличествоНачальныйОстаток) КАК КоличествоНачальныйОстаток,
   СУММА(ПартииТоваровНаСкладахОстаткиИОбороты.КоличествоРасход) КАК КоличествоРасход,
   СУММА(ПартииТоваровНаСкладахОстаткиИОбороты.КоличествоКонечныйОстаток) КАК КоличествоКонечныйОстаток,
   СУММА(ПартииТоваровНаСкладахОстаткиИОбороты.СтоимостьНачальныйОстаток) КАК СтоимостьНачальныйОстаток,
   СУММА(ПартииТоваровНаСкладахОстаткиИОбороты.СтоимостьКонечныйОстаток) КАК СтоимостьКонечныйОстаток
ИЗ
   РегистрНакопления.ПартииТоваровНаСкладах.ОстаткиИОбороты(&НачДата1, &КонДата, , , ) КАК ПартииТоваровНаСкладахОстаткиИОбороты

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

ИМЕЮЩИЕ
   СУММА(ПартииТоваровНаСкладахОстаткиИОбороты.КоличествоНачальныйОстаток) > 0 И
   СУММА(ПартииТоваровНаСкладахОстаткиИОбороты.КоличествоРасход) = 0 И
   СУММА(ПартииТоваровНаСкладахОстаткиИОбороты.КоличествоКонечныйОстаток) > 0

ОБЪЕДИНИТЬ

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

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

ИМЕЮЩИЕ
   СУММА(ПартииТоваровНаСкладахОстаткиИОбороты.КоличествоНачальныйОстаток) > 0 И
   СУММА(ПартииТоваровНаСкладахОстаткиИОбороты.КоличествоРасход) = 0 И
   СУММА(ПартииТоваровНаСкладахОстаткиИОбороты.КоличествоКонечныйОстаток) > 0


подскажите, как сделать так, чтобы в результат запроса за полгода (после ОБЪЕДИНИТЬ) не попала номенклатура  с группировкой по складам, по которой не было движений год (т.е. та, что отобралась в первой части запроса)?
1 Grusswelle
 
02.08.11
10:53
(0) Без фотки не взлетит!
2 Albena
 
02.08.11
10:55
если по номенклатуре не было движений год, значит не было движений и полгода, но такая номенклатура должна попасть только в таблицу, где номенклатура без движений год
3 Scooter
 
02.08.11
10:56
есть null
4 Albena
 
02.08.11
10:56
можно ли сделать отбор сразу в запросе?
5 Albena
 
02.08.11
10:57
(3) не поняла, где проверку на null делать?
6 Scooter
 
02.08.11
10:58
(5)в запросе
7 Albena
 
02.08.11
10:58
(6) что в запросе-то понятно, что на null проверять?
8 vmv
 
02.08.11
11:00
пока что Фото = null дает неоптимальный запрос
9 Albena
 
02.08.11
11:01
нужно, чтобы во вторую часть запроса вошла только та номенклатура  с группировкой по складам. которая не вошла в первую часть запроса
10 Axel2009
 
02.08.11
11:01
ВЫБРАТЬ СУММА(НетРасходаГод), Номенклатура, Склад, КоличествоНачальныйОстаток, КоличествоКонечныйОстаток,
СтоимостьНачальныйОстаток, СтоимостьКонечныйОстаток
ИЗ (
ВЫБРАТЬ
   1 КАК НетРасходаГод,
   ПартииТоваровНаСкладахОстаткиИОбороты.Номенклатура,
   ПартииТоваровНаСкладахОстаткиИОбороты.Склад,
   СУММА(ПартииТоваровНаСкладахОстаткиИОбороты.КоличествоНачальныйОстаток) КАК КоличествоНачальныйОстаток,
   СУММА(ПартииТоваровНаСкладахОстаткиИОбороты.КоличествоРасход) КАК КоличествоРасход,
   СУММА(ПартииТоваровНаСкладахОстаткиИОбороты.КоличествоКонечныйОстаток) КАК КоличествоКонечныйОстаток,
   СУММА(ПартииТоваровНаСкладахОстаткиИОбороты.СтоимостьНачальныйОстаток) КАК СтоимостьНачальныйОстаток,
   СУММА(ПартииТоваровНаСкладахОстаткиИОбороты.СтоимостьКонечныйОстаток) КАК СтоимостьКонечныйОстаток
ИЗ
   РегистрНакопления.ПартииТоваровНаСкладах.ОстаткиИОбороты(&НачДата1, &КонДата, , , ) КАК ПартииТоваровНаСкладахОстаткиИОбороты

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

ИМЕЮЩИЕ
   СУММА(ПартииТоваровНаСкладахОстаткиИОбороты.КоличествоНачальныйОстаток) > 0 И
   СУММА(ПартииТоваровНаСкладахОстаткиИОбороты.КоличествоРасход) = 0 И
   СУММА(ПартииТоваровНаСкладахОстаткиИОбороты.КоличествоКонечныйОстаток) > 0

ОБЪЕДИНИТЬ

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

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

ИМЕЮЩИЕ
   СУММА(ПартииТоваровНаСкладахОстаткиИОбороты.КоличествоНачальныйОстаток) > 0 И
   СУММА(ПартииТоваровНаСкладахОстаткиИОбороты.КоличествоРасход) = 0 И
   СУММА(ПартииТоваровНаСкладахОстаткиИОбороты.КоличествоКонечныйОстаток) > 0) КАК ОбщаяТаблица
СГРУППИРОВАТЬ ПО Номенклатура, Склад, КоличествоНачальныйОстаток, КоличествоКонечныйОстаток,
СтоимостьНачальныйОстаток, СтоимостьКонечныйОстаток
11 Scooter
 
02.08.11
11:03
(9)а ты уверена что у тебя запрос правильный?
12 Albena
 
02.08.11
11:03
(10) спасибо, но тогда потеряется информация, к какой группе товаров принадлежит номенклатура: без расхода год или полгода
13 Axel2009
 
02.08.11
11:05
(12) как потеряется? СУММА(НетРасходаГод) если покажет 1, значит год, если 0, значит полгода
14 Albena
 
02.08.11
11:13
(13)большое спасибо, смысл поняла
15 ssh2006
 
02.08.11
11:29
Если в интервале с &НачДата1 по &НачДата2 был приход на тот-же склад, то в результате запроса будут 2 строки по одним и тем-же номенклатуре/складу из-за группировки по начальному остатку .
16 Axel2009
 
02.08.11
11:57
(15) значит достаточно выбрать МАКСИМУМ из остатков. и сгруппировать только по номенклатуре