помогите с запросом

Allexei

Well-Known Member
02.05.2008
322
1
#1
Платформа 8.2
Здравствуйте! Подскажите пжста как можно запросом выбрать по дням остатки товаров(регист накопления "Остатки товаров") с учетом дней когда движений не было. Запрос в СКД передаваться не будет. Сейчас выводятся остатки только по дням когда было движение. Надо же по всем дням.
 

Allexei

Well-Known Member
02.05.2008
322
1
#2
Путем ковыряния запросов родилась следующая конструкция:
Код:
ВЫБРАТЬ
ВложенныйЗапрос.Период,
ВЫБОР
КОГДА (НЕ ЕСТЬNULL(ТоварыНаСкладахОстаткиИОбороты.ВНаличииКонечныйОстаток, 0) = 0)
ТОГДА 1
ИНАЧЕ 0
КОНЕЦ КАК ВНаличииЕсть,
ВЫБОР
КОГДА ЕСТЬNULL(ТоварыНаСкладахОстаткиИОбороты.ВНаличииКонечныйОстаток, 0) = 0
ТОГДА 1
ИНАЧЕ 0
КОНЕЦ КАК ВНаличииНет
ПОМЕСТИТЬ ОборотПоДням
ИЗ
(ВЫБРАТЬ
НАЧАЛОПЕРИОДА(ВыручкаИСебестоимостьПродажОбороты.Период, ДЕНЬ) КАК Период
ИЗ
РегистрНакопления.ВыручкаИСебестоимостьПродаж.Обороты(&НачДата, &КонДата, День, ) КАК ВыручкаИСебестоимостьПродажОбороты

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

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
НАЧАЛОПЕРИОДА(ОборотПоДням.Период, МЕСЯЦ) КАК Поле1,
СУММА(ОборотПоДням.ВНаличииЕсть) КАК ВНаличииЕсть,
СУММА(ОборотПоДням.ВНаличииНет) КАК ВНаличииНет
ИЗ
ОборотПоДням КАК ОборотПоДням

СГРУППИРОВАТЬ ПО
НАЧАЛОПЕРИОДА(ОборотПоДням.Период, МЕСЯЦ)
Результат примерно следующий
Месяц - 1; В наличии дней-5; Отсутсвовал - 25;
Месяц - 2; В наличии дней-6; Отсутсвовал - 25;