Как получить начальный и конечный остаток без виртуальных таблиц?Виртуальные таблицы не подходят из-за того,что нужны остатки в разрезе того,что нет в регистрах накопления.
Пробую сделать так, как в этой статье: https://its.1c.ru/db/metod8dev/content/4049/hdoc , но выдает не корректную информацию.
Буду очень,если кто-то сможет скинуть пример запроса.
---
выбрать товар, сумма(
выбор когда видДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход) тогда 1
иначе -1 конец * количество) КАК НачОст
где Период <&ДатаНачальногоОстатка
и Регистратор.ТорговаяТочка = &тт
---
Так попробовал сделать:

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

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

    ИМЕЮЩИЕ
    МАКСИМУМ(РасходТовара.СуммаДокумента) - ЕСТЬNULL(СУММА(ПоступлениеДенег.СуммаДокумента), 0) <> 0

    ОБЪЕДИНИТЬ

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

    ////////////////////////////////////////////////////////////­////////////////////
    ВЫБРАТЬ
    ВЫБОР
    КОГДА ВложенныйЗапрос.Период < НАЧАЛОПЕРИОДА(&НачалоПериода, ДЕНЬ)
    ТОГДА НАЧАЛОПЕРИОДА(&НачалоПериода, ДЕНЬ)
    ИНАЧЕ ВложенныйЗапрос.Период
    КОНЕЦ КАК Период,
    ЕСТЬNULL(СУММА(ВЫБОР
    КОГДА ВложенныйЗапрос.Период >= НАЧАЛОПЕРИОДА(&НачалоПериода, ДЕНЬ)
    ТОГДА ВложенныйЗапрос.СуммаРасходныхДокументов
    КОНЕЦ), 0) КАК СуммаРасходныхДокументов,
    ЕСТЬNULL(СУММА(ВЫБОР
    КОГДА ВложенныйЗапрос.Период >= НАЧАЛОПЕРИОДА(&НачалоПериода, ДЕНЬ)
    ТОГДА ВложенныйЗапрос.СуммаПоступления
    КОНЕЦ), 0) КАК СуммаПоступления,
    ВложенныйЗапрос.РасходныйДокументПокупатель
    ПОМЕСТИТЬ ДатыДвижений
    ИЗ
    (ВЫБРАТЬ
    НАЧАЛОПЕРИОДА(РасходныеДокументы.ПериодРасходногоДокумента, ДЕНЬ) КАК Период,
    РасходныеДокументы.СуммаРасходногоДокумента КАК СуммаРасходныхДокументов,
    0 КАК СуммаПоступления,
    РасходныеДокументы.РасходныйДокумент.Контрагент КАК РасходныйДокументПокупатель
    ИЗ
    РасходныеДокументы КАК РасходныеДокументы

    ОБЪЕДИНИТЬ

    ВЫБРАТЬ
    НАЧАЛОПЕРИОДА(ПоступлениеДенег.Дата, ДЕНЬ),
    0,
    ПоступлениеДенег.СуммаДокумента,
    ПоступлениеДенег.Ссылка.Контрагент
    ИЗ
    Документ.ПоступлениеТоваровУслуг КАК ПоступлениеДенег
    ГДЕ
    ПоступлениеДенег.Дата >= НАЧАЛОПЕРИОДА(&НачалоПериода, ДЕНЬ)
    И ПоступлениеДенег.Дата <= КОНЕЦПЕРИОДА(&КонецПериода, ДЕНЬ)) КАК ВложенныйЗапрос

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

    ////////////////////////////////////////////////////////////­////////////////////
    ВЫБРАТЬ
    ВременныйЗапрос.РасходныйДокументПокупатель,
    СУММА(ВременныйЗапрос.НачальныйОстаток) КАК НачальныйОстаток,
    МАКСИМУМ(ДатыДвижений.СуммаРасходныхДокументов) КАК СуммаРасходныхДокументов,
    МАКСИМУМ(ДатыДвижений.СуммаПоступления) КАК СуммаПоступления,
    СУММА(ВременныйЗапрос.НачальныйОстаток) + МАКСИМУМ(ДатыДвижений.СуммаРасходныхДокументов) - МАКСИМУМ(ДатыДвижений.СуммаПоступления) КАК КонечныйОстаток
    ИЗ
    (ВЫБРАТЬ
    ДатыДвижений.Период КАК Период,
    РасходныеДокументы.РасходныйДокумент КАК РасходныйДокумент,
    ЕСТЬNULL(МАКСИМУМ(РасходныеДокументы.СуммаРасходногоДокумента) - ЕСТЬNULL(СУММА(ПоступлениеДенег.СуммаДокумента), 0), 0) КАК НачальныйОстаток,
    ДатыДвижений.РасходныйДокументПокупатель КАК РасходныйДокументПокупатель
    ИЗ
    ДатыДвижений КАК ДатыДвижений
    ЛЕВОЕ СОЕДИНЕНИЕ РасходныеДокументы КАК РасходныеДокументы
    ПО (РасходныеДокументы.ПериодРасходногоДокумента < ДатыДвижений.Период)
    И ДатыДвижений.РасходныйДокументПокупатель = РасходныеДокументы.РасходныйДокумент.Контрагент
    ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПоступлениеТоваровУслуг КАК ПоступлениеДенег
    ПО (ПоступлениеДенег.Дата < ДатыДвижений.Период)
    И (РасходныеДокументы.РасходныйДокумент = ПоступлениеДенег.Ссылка)

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

    СГРУППИРОВАТЬ ПО
    ВременныйЗапрос.РасходныйДокументПокупатель
```
---
а начальный остаток = дата0 по датаНачала с суммированием, по регистру конечный остаток = Дата0 по ДатаОкончания с суммированием не подходит?
---
там же еще есть документы,которые нужно вычитать, а не суммировать.
Так тоже попробовал,но выводит также не корректные данные:

```1c
    ВЫБРАТЬ
    СУММА(РеализацияТоваровУслуг.СуммаДокумента) КАК РТУСумма,
    NULL КАК ПоступлениеСумма,
    РеализацияТоваровУслуг.ТорговаяТочка КАК ТорговаяТочка,
    РеализацияТоваровУслуг.Ссылка КАК Документ
    ПОМЕСТИТЬ ВТ_Начало
    ИЗ
    Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
    ГДЕ
    РеализацияТоваровУслуг.ТорговаяТочка = &ТорговаяТочка
    И РеализацияТоваровУслуг.Дата < НАЧАЛОПЕРИОДА(&ДатаНачала, ДЕНЬ)

    СГРУППИРОВАТЬ ПО
    РеализацияТоваровУслуг.ТорговаяТочка,
    РеализацияТоваровУслуг.Ссылка

    ОБЪЕДИНИТЬ ВСЕ

    ВЫБРАТЬ
    NULL,
    СУММА(ПоступлениеТоваровУслуг.СуммаДокумента),
    ПоступлениеТоваровУслуг.ТорговаяТочка,
    ПоступлениеТоваровУслуг.Ссылка
    ИЗ
    Документ.ПоступлениеТоваровУслуг КАК ПоступлениеТоваровУслуг
    ГДЕ
    ПоступлениеТоваровУслуг.ТорговаяТочка = &ТорговаяТочка
    И ПоступлениеТоваровУслуг.Дата < НАЧАЛОПЕРИОДА(&ДатаНачала, ДЕНЬ)

    СГРУППИРОВАТЬ ПО
    ПоступлениеТоваровУслуг.ТорговаяТочка,
    ПоступлениеТоваровУслуг.Ссылка
    ;

    ////////////////////////////////////////////////////////////­////////////////////
    ВЫБРАТЬ
    СУММА(РеализацияТоваровУслуг.СуммаДокумента) КАК РТУСумма,
    NULL КАК ПоступлениеСумма,
    РеализацияТоваровУслуг.ТорговаяТочка КАК ТорговаяТочка,
    РеализацияТоваровУслуг.Ссылка КАК Документ
    ПОМЕСТИТЬ ВТ_Конец
    ИЗ
    Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
    ГДЕ
    РеализацияТоваровУслуг.ТорговаяТочка = &ТорговаяТочка
    И РеализацияТоваровУслуг.Дата < КОНЕЦПЕРИОДА(&ДатаОкончания, ДЕНЬ)

    СГРУППИРОВАТЬ ПО
    РеализацияТоваровУслуг.ТорговаяТочка,
    РеализацияТоваровУслуг.Ссылка

    ОБЪЕДИНИТЬ ВСЕ

    ВЫБРАТЬ
    NULL,
    СУММА(ПоступлениеТоваровУслуг.СуммаДокумента),
    ПоступлениеТоваровУслуг.ТорговаяТочка,
    ПоступлениеТоваровУслуг.Ссылка
    ИЗ
    Документ.ПоступлениеТоваровУслуг КАК ПоступлениеТоваровУслуг
    ГДЕ
    ПоступлениеТоваровУслуг.ТорговаяТочка = &ТорговаяТочка
    И ПоступлениеТоваровУслуг.Дата < КОНЕЦПЕРИОДА(&ДатаОкончания, ДЕНЬ)

    СГРУППИРОВАТЬ ПО
    ПоступлениеТоваровУслуг.ТорговаяТочка,
    ПоступлениеТоваровУслуг.Ссылка
    ;

    ////////////////////////////////////////////////////////////­////////////////////
    ВЫБРАТЬ
    СУММА(ЕСТЬNULL(ВТ_Начало.РТУСумма, 0) - ЕСТЬNULL(ВТ_Начало.ПоступлениеСумма, 0)) КАК НачальныйОстаток,
    СУММА(ЕСТЬNULL(ВТ_Конец.РТУСумма, 0) - ЕСТЬNULL(ВТ_Конец.ПоступлениеСумма, 0)) КАК КонечныйОстаток,
    ВТ_Конец.ТорговаяТочка
    ИЗ
    ВТ_Начало КАК ВТ_Начало
    ПОЛНОЕ СОЕДИНЕНИЕ ВТ_Конец КАК ВТ_Конец
    ПО ВТ_Начало.ТорговаяТочка = ВТ_Конец.ТорговаяТочка

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

И накладывать условия в где...
---
не понял.
В регистрах накопления нет реквизита "Торговая точка", а мне нужно получить начальный и конечный остаток в разрезе торговой точки.
Сможете привести пример,как получить начальный и конечный остаток, например на примере примере документов Реализация товаров и услуг и Поступление товаров и услуг? В этих документах есть реквизит "торговая точка".
---
Зато есть реквизит в документах движений. Вот по ним и фильтруй...
---
выбрать товар, сумма(
выбор когда видДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход) тогда 1
иначе -1 конец * количество) КАК НачОст
где Период <&ДатаНачальногоОстатка
и Регистратор.ТорговаяТочка = &тт
---
сделал так,но выводит не корректные данные . в десятки раз преувеличивает:

```1c
    ВЫБРАТЬ
    СУММА(ВЫБОР
    КОГДА ВзаиморасчетыСКонтрагентами.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход)
    ТОГДА ВзаиморасчетыСКонтрагентами.СуммаВзаиморасчетов
    ИНАЧЕ -ЕСТЬNULL(ВзаиморасчетыСКонтрагентами.СуммаВзаиморасчетов, 0)
    КОНЕЦ) КАК СуммаВзаиморасчетов
    ИЗ
    РегистрНакопления.ВзаиморасчетыСКонтрагентами КАК ВзаиморасчетыСКонтрагентами
    ГДЕ
    (ВзаиморасчетыСКонтрагентами.Регистратор.ТорговаяТочка = &ТорговаяТочка
    ИЛИ ВзаиморасчетыСКонтрагентами.Регистратор.СуммыДолга.ДокументРасчетовСКонтрагентом.ТорговаяТочка = &ТорговаяТочка)
    И ВзаиморасчетыСКонтрагентами.Период < КОНЕЦПЕРИОДА(&ДатаНачальногоОстатка, ДЕНЬ)
```
---
где Период <&ДатаНачальногоОстатка нужно получать так, а не так

```1c
    где Период <=НачалоПериода(&ДатаНачальногоОстатка,день)
```
?
---
Остаток мы хотим получить на куда? На момент или на начало дня? Вот из этого и надо исходить
---
так как берется остаток в регистре накопления Взаиморасчеты с контрагентами
---
Так он так и берётся... На тот момент, который указывается в параметре виртуальной таблицы.
---
понял,спасибо
---
Ну выгрузи в ексель и посчитай руками...