Здравствуйте! Такая ситуация, пишу отчет...код запроса представлен ниже.

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

    ////////////////////////////////////////////////////////////­////////////////////
    ВЫБРАТЬ РАЗЛИЧНЫЕ
    ВТ_ВсеОтпуска.Сотрудник КАК Сотрудник,
    ВТ_ВсеОтпуска.ДатаОкончания КАК ДатаОкончания,
    ВТ_ВсеОтпуска.ВидЕжегодногоОтпуска КАК ВидЕжегодногоОтпуска,
    ВТ_ВсеОтпуска.КоличествоДнейВГод КАК КоличествоДнейВГод,
    ВТ_ВсеОтпуска.ДнейОтпускаПотрачено КАК ДнейОтпускаПотрачено,
    ВТ_ВсеОтпуска.ДатаНачала КАК ДатаНачала,
    ВЫБОР
    КОГДА ВТ_ВсеОтпуска.ДнейОтпускаПотрачено > ВТ_ВсеОтпуска.КоличествоДнейВГод
    ТОГДА ВТ_ВсеОтпуска.ДнейОтпускаПотрачено - ВТ_ВсеОтпуска.КоличествоДнейВГод
    ИНАЧЕ ВТ_ВсеОтпуска.ДнейОтпускаПотрачено
    КОНЕЦ КАК ОтпускаНаСледующийГод
    ПОМЕСТИТЬ ВТ_ОстатвкиОтпусковНаСлГод
    ИЗ
    ВТ_ВсеОтпуска КАК ВТ_ВсеОтпуска
    ;

    ////////////////////////////////////////////////////////////­////////////////////
    ВЫБРАТЬ
    ВТ_ОстатвкиОтпусковНаСлГод.Сотрудник КАК Сотрудник,
    ВТ_ОстатвкиОтпусковНаСлГод.ДатаНачала КАК ДатаНачала,
    ВТ_ОстатвкиОтпусковНаСлГод.ДатаОкончания КАК ДатаОкончания,
    ВТ_ОстатвкиОтпусковНаСлГод.ДнейОтпускаПотрачено КАК ДнейОтпускаПотрачено,
    ВТ_ОстатвкиОтпусковНаСлГод.КоличествоДнейВГод КАК КоличествоДнейВГод,
    ВТ_ОстатвкиОтпусковНаСлГод.ОтпускаНаСледующийГод КАК ОтпускаНаСледующийГод,
    ВТ_ОстатвкиОтпусковНаСлГод.ВидЕжегодногоОтпуска КАК ВидЕжегодногоОтпуска
    ИЗ
    ВТ_ОстатвкиОтпусковНаСлГод КАК ВТ_ОстатвкиОтпусковНаСлГод
```

И вот какая ситуация как видно на первом скрине:

если года у периода за который выдается отпуск не совпадают, появляется огромная каша как на скрине 2.

Если года в документе за который предоставляется отпуск одинаковые проблем особо нет, то есть мне надо чтобы минус стал нулем и отрицательные значения упали на следующий год, надеюсь доступно объяснил, помогите, сам не могу разобраться....
---
Как вариант - применить функцию
ВычислитьВыражение(Выражение, Группировка, ТипРасчета, Начало, Конец, Сортировка, ИерархическаяСортировка, ОбработкаОдинаковыхЗначенийПорядка)

Создать вычисляемое поле ОтпускаОсталосьВЭтомГоду
Если нужен нарастающий итог: ВычислитьВыражение("Сумма(ОсталосьОтпуска )", , "Группировка", "Первая", "Текущая")
Если нужно только из предыдущего года остаток
ОтпускаОсталось - ВычислитьВыражение(ЕстьNull(ОтпускаОсталось,0),"", "Группировка", "Предыдущая", "Предыдущая")
Чтобы отфильтровать отрицательные значения использовать
Вsбор
Когда МоёВыражение < 0
Тогда 0
Иначе
МоёВыражение
Конец

И уже это поле выводить в последней колонке отчёта
Вот ещё небольшая подсказка с видео: Разбор ВычислитьВыражение
---
Зачем так много временных таблиц?

ПО ЗаработанныеПраваНаОтпуска.Сотрудник.Ссылка = ФактическиеОтпуска.Сотрудник.Ссылка Мои глаза! Сотрудник и так Ссылка.
---
да просто пробовал разные варианты, к окончательному результату не пришел....
---
а что не так с соединением?...
---
Вызывается лишнее неявное левое соединение
---
спасибо, убрал.
---
Как вариант - применить функцию
ВычислитьВыражение(Выражение, Группировка, ТипРасчета, Начало, Конец, Сортировка, ИерархическаяСортировка, ОбработкаОдинаковыхЗначенийПорядка)

Создать вычисляемое поле ОтпускаОсталосьВЭтомГоду
Если нужен нарастающий итог: ВычислитьВыражение("Сумма(ОсталосьОтпуска )", , "Группировка", "Первая", "Текущая")
Если нужно только из предыдущего года остаток
ОтпускаОсталось - ВычислитьВыражение(ЕстьNull(ОтпускаОсталось,0),"", "Группировка", "Предыдущая", "Предыдущая")
Чтобы отфильтровать отрицательные значения использовать
Вsбор
Когда МоёВыражение < 0
Тогда 0
Иначе
МоёВыражение
Конец

И уже это поле выводить в последней колонке отчёта
Вот ещё небольшая подсказка с видео: Разбор ВычислитьВыражение
---
не знал про эту функцию, буду пробовать, спасибо.