Остатки и обороты с регистраторами 1С

Рассмотрим решение проблемы написания отчета, в котором необходимо взять остатки и обороты по регистру бухгалтерии или накопления и при этом вывести разрез по регистраторам(документам). Казалось бы эта проблема решается использованием таблицы ОстаткиИОбороты, которая позволяет нам использовать регистратор в запросе. Но при таком методе написания запроса начальные и конечные остатки не рассчитаются верно. Это произойдет потому что в запросе помимо нужной нам аналитики остатки возьмутся и по регистраторам, а это некорректно. Решается эта задача использованием объединения запросов: в первом запросе берем остатки на начало, во втором обороты с регистраторами, в третьем остатки на конец.

Пример: В запросе взять остатки и обороты по сумме, счет 62, по организации, за период, в разрезе Контрагентов, Договоров и Регистраторов.

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

СГРУППИРОВАТЬ ПО
    ХозрасчетныйОстатки.Субконто1,
    ХозрасчетныйОстатки.Субконто2

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

ВЫБРАТЬ
    ХозрасчетныйОбороты.Субконто1,
    ХозрасчетныйОбороты.Субконто2,
    NULL,
    ХозрасчетныйОбороты.Регистратор,
    ХозрасчетныйОбороты.СуммаОборотДт,
    ХозрасчетныйОбороты.СуммаОборотКт,
    NULL
ИЗ
    РегистрБухгалтерии.Хозрасчетный.Обороты(&ДатаНач, &ДатаКон, Регистратор, Счет В ИЕРАРХИИ (&Счет62), , Организация = &Организация, , ) КАК ХозрасчетныйОбороты

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

ВЫБРАТЬ
    ХозрасчетныйОстатки.Субконто1,
    ХозрасчетныйОстатки.Субконто2,
    NULL,
    NULL,
    NULL,
    NULL,
    СУММА(ХозрасчетныйОстатки.СуммаОстаток)
ИЗ
    РегистрБухгалтерии.Хозрасчетный.Остатки(ДОБАВИТЬКДАТЕ(&ДатаКон, СЕКУНДА, 1), Счет В ИЕРАРХИИ (&Счет62), , Организация = &Организация) КАК ХозрасчетныйОстатки

СГРУППИРОВАТЬ ПО
    ХозрасчетныйОстатки.Субконто1,
    ХозрасчетныйОстатки.Субконто2
;

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

СГРУППИРОВАТЬ ПО
    ОстаткиИОбороты.Контрагент,
    ОстаткиИОбороты.Договор,
    ОстаткиИОбороты.Регистратор

УПОРЯДОЧИТЬ ПО
    Контрагент,
    Договор,
    Регистратор

После написания запроса в схеме компоновки данны*х в ресурсы выкидываем поля: *НачальныйОстаток, Приход, Расход и КонечныйОстаток, в группировки выносим поля: Контрагент, Договор и Регистратор. Отчет будет выводить вам верные остатки по контрагентам и договорам, а обороты еще и по регистраторам.