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 <= &КолДнейМеждуДатами) КАК РазностьДат
         ПО (ДОБАВИТЬКДАТЕ(&ДатаНач, МЕСЯЦ, РазностьДат.НомерДняИзДиапазона) МЕЖДУ ТоварыНаСкладах.ДатаС И ТоварыНаСкладах.ДатаПо)
   |