Есть отчет на СКД с вот таки набором данных:

```1c
    ВЫБРАТЬ
    _ДемоСчетНаОплатуПокупателю.Контрагент КАК Контрагент,
    МАКСИМУМ(_ДемоСчетНаОплатуПокупателю.Дата) КАК Дата
    ПОМЕСТИТЬ втДатаПоследнегоСчета
    ИЗ
    Документ._ДемоСчетНаОплатуПокупателю КАК _ДемоСчетНаОплатуПокупателю

    СГРУППИРОВАТЬ ПО
    _ДемоСчетНаОплатуПокупателю.Контрагент
    ;

    ////////////////////////////////////////////////////////////­////////////////////
    ВЫБРАТЬ
    _ДемоКонтрагенты.Ссылка КАК Ссылка,
    втДатаПоследнегоСчета.Дата КАК Дата
    ИЗ
    Справочник._ДемоКонтрагенты КАК _ДемоКонтрагенты
    ЛЕВОЕ СОЕДИНЕНИЕ втДатаПоследнегоСчета КАК втДатаПоследнегоСчета
    ПО (втДатаПоследнегоСчета.Контрагент = _ДемоКонтрагенты.Ссылка)
```

Если установить отбор по незаполненной дате последнего счета, из отчета пропадают все даты.

Почему это происходит?
---
Нашел решение.

Нужно было переименовать колонку временной таблицы. Вот так:

```1c
    ВЫБРАТЬ
    _ДемоСчетНаОплатуПокупателю.Контрагент КАК Контрагент,
    МАКСИМУМ(_ДемоСчетНаОплатуПокупателю.Дата) КАК Дата1
    ПОМЕСТИТЬ втДатаПоследнегоСчета
    ИЗ
    Документ._ДемоСчетНаОплатуПокупателю КАК _ДемоСчетНаОплатуПокупателю

    СГРУППИРОВАТЬ ПО
    _ДемоСчетНаОплатуПокупателю.Контрагент
    ;

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

```1c
    ВЫБРАТЬ
    _ДемоСчетНаОплатуПокупателю.Контрагент КАК Контрагент,
    МАКСИМУМ(_ДемоСчетНаОплатуПокупателю.Дата) КАК Дата
    ПОМЕСТИТЬ втДатаПоследнегоСчета
    ИЗ
    Документ._ДемоСчетНаОплатуПокупателю КАК _ДемоСчетНаОплатуПокупателю

    СГРУППИРОВАТЬ ПО
    _ДемоСчетНаОплатуПокупателю.Контрагент
    ;

    ////////////////////////////////////////////////////////////­­////////////////////
    ВЫБРАТЬ
    _ДемоКонтрагенты.Ссылка КАК Ссылка,
    ЕСТЬNULL(втДатаПоследнегоСчета.Дата, ДАТАВРЕМЯ(1, 1, 1)) КАК Дата
    ИЗ
    Справочник._ДемоКонтрагенты КАК _ДемоКонтрагенты
    ЛЕВОЕ СОЕДИНЕНИЕ втДатаПоследнегоСчета КАК втДатаПоследнегоСчета
    ПО (втДатаПоследнегоСчета.Контрагент = _ДемоКонтрагенты.Ссылка)
    {ГДЕ
    ЕСТЬNULL(втДатаПоследнегоСчета.Дата, ДАТАВРЕМЯ(1, 1, 1)) КАК Дата}
```
---
Условие должно быть Имеющие Максимум(_ДемоСчетНаОплатуПокупателю.Дата), а не в Где.
---
Потому что отбирает с пустыми датами, а чего бы хотелось?
---
В том то дело, что не отбирает. См. скриншот. Хотелось бы, чтобы 3 строчки, где есть дата отфильтровались, а вместо этого даты вообще исчезают.
---
Условие наложи на последнюю таблицу
ГДЕ втДатаПоследнегоСчета.Дата <> Значение(ДАТАВРЕМЯ(1,1,1))
---
Потому, что компоновщик накладывает отбор на все таблицы запроса. Т.е. в вируальной таблице втДатаПоследнегоСчета этих записей не будет, а в итоговом запросе у вас ЛЕВОЕ соединение, т.е. там дата будет NULL, а не пустая дата.
---
А можно как-то объяснить компоновщику, чтобы он не накладывал отбор на временную таблицу?
---
укажите в конструкторе запроса, к полю какой таблицы вы собираетесь применять отбор по дате.

```1c
    ВЫБРАТЬ
    _ДемоСчетНаОплатуПокупателю.Контрагент КАК Контрагент,
    МАКСИМУМ(_ДемоСчетНаОплатуПокупателю.Дата) КАК Дата
    ПОМЕСТИТЬ втДатаПоследнегоСчета
    ИЗ
    Документ._ДемоСчетНаОплатуПокупателю КАК _ДемоСчетНаОплатуПокупателю

    СГРУППИРОВАТЬ ПО
    _ДемоСчетНаОплатуПокупателю.Контрагент
    ;

    ////////////////////////////////////////////////////////////­­////////////////////
    ВЫБРАТЬ
    _ДемоКонтрагенты.Ссылка КАК Ссылка,
    ЕСТЬNULL(втДатаПоследнегоСчета.Дата, ДАТАВРЕМЯ(1, 1, 1)) КАК Дата
    ИЗ
    Справочник._ДемоКонтрагенты КАК _ДемоКонтрагенты
    ЛЕВОЕ СОЕДИНЕНИЕ втДатаПоследнегоСчета КАК втДатаПоследнегоСчета
    ПО (втДатаПоследнегоСчета.Контрагент = _ДемоКонтрагенты.Ссылка)
    {ГДЕ
    ЕСТЬNULL(втДатаПоследнегоСчета.Дата, ДАТАВРЕМЯ(1, 1, 1)) КАК Дата}
```
---
Не понял. Расскажите, пожалуйста, по-подробнее как это сделать?
---
обновил сообщение (10)
---
Распрощаться с галкой "автозаполнение" и в конструкторе запроса на вкладке "Компоновка данных" самостоятельно "нарулить" то что нужно.
---
(16)
Добавление условия:

```1c
    {ГДЕ
    ЕСТЬNULL(втДатаПоследнегоСчета.Дата, ДАТАВРЕМЯ(1, 1, 1)) КАК Дата}
```

никак не повлияло на проблему. Похоже, что это не сработает без отключения автозаполнения. Но если я его отключаю, то пропадают все поля набора данных, а добавление их вручную не доступно. Как их надо заполнять?
---
все там же, на закладке Построитель/Компоновка данных в конструкторе запроса
---
Всё получилось. Спасибо.
---
В чем суть отбора по пустой дате? Бывают счета на оплату с незаполненной датой, которые надо найти?
---
В этом примере суть в том, чтобы отобрать контрагентов, которым ни разу не выставлялись счета на оплату. Пример условный, только для демонстрации ошибки.
---
Ну вернее с нулями:
ГДЕ ЕСТЬNULL(втДатаПоследнегоСчета.Дата,Значение(ДАТАВРЕМЯ(1,1,1))) <> Значение(ДАТАВРЕМЯ(1,1,1))
---
Не подходит. Отбор устанавливает пользователь.
---
Можно отключить "Автозаполнение" и самому прописать для компоновщика все поля и отборы.
https://infostart.ru/1c/articles/1200689/
Что-то типа того

```1c
    ВЫБРАТЬ
    ЗаказКлиента.Контрагент КАК Контрагент,
    МАКСИМУМ(ЗаказКлиента.Дата) КАК Дата
    ПОМЕСТИТЬ ВТ_Заказы
    ИЗ
    Документ.ЗаказКлиента КАК ЗаказКлиента

    СГРУППИРОВАТЬ ПО
    ЗаказКлиента.Контрагент
    ;

    ////////////////////////////////////////////////////////////­////////////////////
    ВЫБРАТЬ
    Контрагенты.Ссылка КАК Контрагент,
    ЕСТЬNULL(ВТ_Заказы.Дата, ДАТАВРЕМЯ(1,1,1)) КАК Дата
    {ВЫБРАТЬ
    Контрагент.*,
    Дата}
    ИЗ
    Справочник.Контрагенты КАК Контрагенты
    ЛЕВОЕ СОЕДИНЕНИЕ ВТ_Заказы КАК ВТ_Заказы
    ПО Контрагенты.Ссылка = ВТ_Заказы.Контрагент
    {ГДЕ
    ЕСТЬNULL(ВТ_Заказы.Дата, ДАТАВРЕМЯ(1,1,1)) КАК Дата}
```

Либо как-то пересмотреть логику запроса.
---
Нашел решение.

Нужно было переименовать колонку временной таблицы. Вот так:

```1c
    ВЫБРАТЬ
    _ДемоСчетНаОплатуПокупателю.Контрагент КАК Контрагент,
    МАКСИМУМ(_ДемоСчетНаОплатуПокупателю.Дата) КАК Дата1
    ПОМЕСТИТЬ втДатаПоследнегоСчета
    ИЗ
    Документ._ДемоСчетНаОплатуПокупателю КАК _ДемоСчетНаОплатуПокупателю

    СГРУППИРОВАТЬ ПО
    _ДемоСчетНаОплатуПокупателю.Контрагент
    ;

    ////////////////////////////////////////////////////////////­////////////////////
    ВЫБРАТЬ
    _ДемоКонтрагенты.Ссылка КАК Ссылка,
    втДатаПоследнегоСчета.Дата1 КАК Дата
    ИЗ
    Справочник._ДемоКонтрагенты КАК _ДемоКонтрагенты
    ЛЕВОЕ СОЕДИНЕНИЕ втДатаПоследнегоСчета КАК втДатаПоследнегоСчета
    ПО (втДатаПоследнегоСчета.Контрагент = _ДемоКонтрагенты.Ссылка)
```
---
Спасибо! А то 1С-ка даты зачищала при отборе "Не заполнено".. Вкурить не мог от чего.. Финансисты уже отчет корявый дали пользователям на исправление, хотя данные верные