| v8: Полные остатки по периоду во вложенном запросе по начальному остаткуКлючевые слова: запрос,остатки,полные,день,период, начальный остаток, н.о.
 
 
 На примере регистра Товары на складах
 
 
ВЫБРАТЬ
 ТоварыНаСкладах.Номенклатура,
 ТоварыНаСкладах.ХарактеристикаНоменклатуры,
 ДОБАВИТЬКДАТЕ(&ДатаНач, МЕСЯЦ, РазностьДат.НомерДняИзДиапазона) КАК Период,
 ТоварыНаСкладах.КоличествоНачальныйОстаток
 ИЗ
 (ВЫБРАТЬ
 МАКСИМУМ(ЗапросДатаС.ДатаС) КАК ДатаС,
 ЗапросДатаПо.Номенклатура КАК Номенклатура,
 ЗапросДатаПо.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
 ЗапросДатаПо.ДатаПо КАК ДатаПо,
 ЗапросДатаПо.КоличествоНачальныйОстаток КАК КоличествоНачальныйОстаток
 ИЗ
 (ВЫБРАТЬ
 ТоварыНаСкладахОстаткиИОбороты.Номенклатура КАК Номенклатура,
 ТоварыНаСкладахОстаткиИОбороты.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
 КОНЕЦПЕРИОДА(ТоварыНаСкладахОстаткиИОбороты.Период, МЕСЯЦ) КАК ДатаПо,
 ТоварыНаСкладахОстаткиИОбороты.КоличествоНачальныйОстаток КАК КоличествоНачальныйОстаток
 ИЗ
 РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты(&ДатаНач, &ДатаКон, Месяц, , ) КАК ТоварыНаСкладахОстаткиИОбороты) КАК ЗапросДатаПо
 ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
 ТоварыНаСкладахОстаткиИОбороты.Номенклатура КАК Номенклатура,
 ТоварыНаСкладахОстаткиИОбороты.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
 ВЫБОР
 КОГДА ДОБАВИТЬКДАТЕ(ТоварыНаСкладахОстаткиИОбороты.Период, МЕСЯЦ, 1) > &ДатаКон
 ТОГДА &ДатаНач
 ИНАЧЕ ДОБАВИТЬКДАТЕ(ТоварыНаСкладахОстаткиИОбороты.Период, МЕСЯЦ, 1)
 КОНЕЦ КАК ДатаС
 ИЗ
 РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты(&ДатаНач, &ДатаКон, Месяц, , ) КАК ТоварыНаСкладахОстаткиИОбороты) КАК ЗапросДатаС
 ПО ЗапросДатаС.Номенклатура = ЗапросДатаПо.Номенклатура
 И ЗапросДатаС.ХарактеристикаНоменклатуры = ЗапросДатаПо.ХарактеристикаНоменклатуры
 И ЗапросДатаС.ДатаС < ЗапросДатаПо.ДатаПо
 
 СГРУППИРОВАТЬ ПО
 ЗапросДатаПо.Номенклатура,
 ЗапросДатаПо.ДатаПо,
 ЗапросДатаПо.ХарактеристикаНоменклатуры,
 ЗапросДатаПо.КоличествоНачальныйОстаток) КАК ТоварыНаСкладах
 ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
 aa.a * 1000 + bb.b * 100 + cc.c * 10 + dd.d КАК НомерДняИзДиапазона
 ИЗ
 (ВЫБРАТЬ
 0 КАК a
 
 ОБЪЕДИНИТЬ
 
 ВЫБРАТЬ
 1
 
 ОБЪЕДИНИТЬ
 
 ВЫБРАТЬ
 2
 
 ОБЪЕДИНИТЬ
 
 ВЫБРАТЬ
 3
 
 ОБЪЕДИНИТЬ
 
 ВЫБРАТЬ
 4
 
 ОБЪЕДИНИТЬ
 
 ВЫБРАТЬ
 5
 
 ОБЪЕДИНИТЬ
 
 ВЫБРАТЬ
 6
 
 ОБЪЕДИНИТЬ
 
 ВЫБРАТЬ
 7
 
 ОБЪЕДИНИТЬ
 
 ВЫБРАТЬ
 8
 
 ОБЪЕДИНИТЬ
 
 ВЫБРАТЬ
 9) КАК aa
 ПОЛНОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
 0 КАК b
 
 ОБЪЕДИНИТЬ
 
 ВЫБРАТЬ
 1
 
 ОБЪЕДИНИТЬ
 
 ВЫБРАТЬ
 2
 
 ОБЪЕДИНИТЬ
 
 ВЫБРАТЬ
 3
 
 ОБЪЕДИНИТЬ
 
 ВЫБРАТЬ
 4
 
 ОБЪЕДИНИТЬ
 
 ВЫБРАТЬ
 5
 
 ОБЪЕДИНИТЬ
 
 ВЫБРАТЬ
 6
 
 ОБЪЕДИНИТЬ
 
 ВЫБРАТЬ
 7
 
 ОБЪЕДИНИТЬ
 
 ВЫБРАТЬ
 8
 
 ОБЪЕДИНИТЬ
 
 ВЫБРАТЬ
 9) КАК bb
 ПО (ИСТИНА)
 ПОЛНОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
 0 КАК c
 
 ОБЪЕДИНИТЬ
 
 ВЫБРАТЬ
 1
 
 ОБЪЕДИНИТЬ
 
 ВЫБРАТЬ
 2
 
 ОБЪЕДИНИТЬ
 
 ВЫБРАТЬ
 3
 
 ОБЪЕДИНИТЬ
 
 ВЫБРАТЬ
 4
 
 ОБЪЕДИНИТЬ
 
 ВЫБРАТЬ
 5
 
 ОБЪЕДИНИТЬ
 
 ВЫБРАТЬ
 6
 
 ОБЪЕДИНИТЬ
 
 ВЫБРАТЬ
 7
 
 ОБЪЕДИНИТЬ
 
 ВЫБРАТЬ
 8
 
 ОБЪЕДИНИТЬ
 
 ВЫБРАТЬ
 9) КАК cc
 ПО (ИСТИНА)
 ПОЛНОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
 0 КАК d
 
 ОБЪЕДИНИТЬ
 
 ВЫБРАТЬ
 1
 
 ОБЪЕДИНИТЬ
 
 ВЫБРАТЬ
 2
 
 ОБЪЕДИНИТЬ
 
 ВЫБРАТЬ
 3
 
 ОБЪЕДИНИТЬ
 
 ВЫБРАТЬ
 4
 
 ОБЪЕДИНИТЬ
 
 ВЫБРАТЬ
 5
 
 ОБЪЕДИНИТЬ
 
 ВЫБРАТЬ
 6
 
 ОБЪЕДИНИТЬ
 
 ВЫБРАТЬ
 7
 
 ОБЪЕДИНИТЬ
 
 ВЫБРАТЬ
 8
 
 ОБЪЕДИНИТЬ
 
 ВЫБРАТЬ
 9) КАК dd
 ПО (ИСТИНА)
 ГДЕ
 aa.a * 1000 + bb.b * 100 + cc.c * 10 + dd.d <= &КолДнейМеждуДатами) КАК РазностьДат
 ПО (ДОБАВИТЬКДАТЕ(&ДатаНач, МЕСЯЦ, РазностьДат.НомерДняИзДиапазона) МЕЖДУ ТоварыНаСкладах.ДатаС И ТоварыНаСкладах.ДатаПо)
 
 |