Здравствуйте, может кто нибудь помочь запросом?
Мне нужно сделать так что бы в колонке "Просрочка" не выходило значение (737 653)

Я понимаю что она выходит с результата (ТОГДА РАЗНОСТЬДАТ(ДОБАВИТЬКДАТЕ(ДоговорыКонтрагентов.тн_СрокПоставки, ДЕНЬ, ДоговорыКонтрагентов.СрокОплаты), &ТекДата, ДЕНЬ))

У меня получается где колонки "Срок оплаты дата " не заполнена , там значение (01.01.0001.0.0.0.0)
минус текущая дата = 737 653

И вот теперь не получается убрать 737 653, хотелось бы просто пустым оставить незаполненные колонки

Вот сам запрос:

ВЫБРАТЬ
 ДоговорыКонтрагентов.Наименование КАК ДоговорКонтрагента,
 ДоговорыКонтрагентов.тн_БазовыйДоговор КАК ДопСоглашение,
 ДоговорыКонтрагентов.Владелец КАК Контрагент,
 ДоговорыКонтрагентов.ВидДоговора,
 ДоговорыКонтрагентов.тн_ОтветственныйИсполнитель КАК Ответственный,
 ДоговорыКонтрагентов.тн_СрокПоставки КАК СрокПоставки,
 ДоговорыКонтрагентов.СрокОплаты КАК СрокОплатыУсловие,
 ДОБАВИТЬКДАТЕ(ДоговорыКонтрагентов.тн_СрокПоставки, ДЕНЬ, ДоговорыКонтрагентов.СрокОплаты) КАК СрокОплатыДата,
 ВЫБОР
  КОГДА ДОБАВИТЬКДАТЕ(ДоговорыКонтрагентов.тн_СрокПоставки, ДЕНЬ, ДоговорыКонтрагентов.СрокОплаты) < &ТекДата
   ТОГДА РАЗНОСТЬДАТ(ДОБАВИТЬКДАТЕ(ДоговорыКонтрагентов.тн_СрокПоставки, ДЕНЬ, ДоговорыКонтрагентов.СрокОплаты), &ТекДата, ДЕНЬ)
  ИНАЧЕ ""
 КОНЕЦ КАК Просрочка,
 "" КАК Поставка
ИЗ
 Справочник.ДоговорыКонтрагентов КАК ДоговорыКонтрагентов
---
```1c
    ...
    ВЫБОР
    КОГДА ДОБАВИТЬКДАТЕ(ДоговорыКонтрагентов.тн_СрокПоставки, ДЕНЬ, ДоговорыКонтрагентов.СрокОплаты) < &ТекДата
    И ДоговорыКонтрагентов.тн_СрокПоставки<> ДАТАВРЕМЯ(1,1,1)
    ТОГДА РАЗНОСТЬДАТ(ДОБАВИТЬКДАТЕ(ДоговорыКонтрагентов.тн_СрокПоставки, ДЕНЬ, ДоговорыКонтрагентов.СрокОплаты), &ТекДата, ДЕНЬ)
    ИНАЧЕ "
    КОНЕЦ КАК Просрочка,
    ...
```
---
У меня получается где колонки "Срок оплаты дата " не заполнена , там значение (01.01.0001.0.0.0.0)
минус текущая дата = 737 653
 ну так проверку здесь на пустую дату добавить нужно

```1c
    Case when "Срок оплаты дата " = DateTime(1,1,1,1,1,1) then 0 end
```
---
Вот я попробовал так, но что то не работает
ВЫБОР
 КОГДА ДОБАВИТЬКДАТЕ(ДоговорыКонтрагентов.тн_СрокПоставки, ДЕНЬ, ДоговорыКонтрагентов.СрокОплаты) = ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)
  ТОГДА 0
 ИНАЧЕ ДОБАВИТЬКДАТЕ(ДоговорыКонтрагентов.тн_СрокПоставки, ДЕНЬ, ДоговорыКонтрагентов.СрокОплаты)
КОНЕЦ
---
может дело в NULL?
ВЫБОР
КОГДА ДОБАВИТЬКДАТЕ(ДоговорыКонтрагентов.тн_СрокПоставки, ДЕНЬ, ДоговорыКонтрагентов.СрокОплаты) = ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0) ИЛИ ДоговорыКонтрагентов.тн_СрокПоставки ЕСТЬ NULL
ТОГДА 0
ИНАЧЕ ДОБАВИТЬКДАТЕ(ДоговорыКонтрагентов.тн_СрокПоставки, ДЕНЬ, ДоговорыКонтрагентов.СрокОплаты)
КОНЕЦ
---
Вряд ли дело в NULL, тут получается то что
СрокОплатыДата - ТекущаяДата
---
Возможно причина в том что я перевожу дату на тип число
А потом когда добавляю поле "Просрачка " и там срабатывает функция "РАЗНОСТЬДАТ" она ошибку дает
---
что я перевожу дату на тип число - где ?
---
(КОГДА ДОБАВИТЬКДАТЕ(ДоговорыКонтрагентов.тн_СрокПоставки, ДЕНЬ, ДоговорыКонтрагентов.СрокОплаты) = ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)
ТОГДА 0)

Тогда = 0
Вроде как число получается
---
Так и проверяйте СРОКОПЛАТЫ, а не то выражение, которое проверяете Вы на пустую дату.
И, кстати, ДобавитьКДате тоже возвращает дату.

```1c
    ....
    ВЫБОР
    КОГДА ДоговорыКонтрагентов.СрокОплаты = ДАТАВРЕМЯ(1,1,1)
    ТОГДА ДАТАВРЕМЯ(1,1,1)
    КОГДА....
    ...
```
---
Как я понял выводится в колонке "просрочка" будет ДАТАВРЕМЯ(1,1,1) ?
---
А Вам что нужно, 0 ?, тогда напишите 0.

Я, так понимаю, нужно что-то вроде этого:
....

```1c
    ТОГДА ВЫБОР КОГДА ДоговорыКонтрагентов.СрокОплаты = ДАТАВРЕМЯ(1,1,1)
    ТОГДА 0
    ИНАЧЕ
    РАЗНОСТЬДАТ(ДОБАВИТЬКДАТЕ(ДоговорыКонтрагентов.тн_СрокПоставки, ДЕНЬ, ДоговорыКонтрагентов.СрокОплаты), &ТекДата, ДЕНЬ)
    КОНЕЦ
```

...
---
Мне желательно оставить пустое значение, типо ""
---
Т.е. вставьте ещё ветвь ВЫБОР
---
Блин. Вам же ещё первый комментатор всё подсказал. Правда в латинской раскладке.
---
Вот так сделайте:

```1c
    ВЫБРАТЬ
    ДоговорыКонтрагентов.Наименование КАК ДоговорКонтрагента,
    ДоговорыКонтрагентов.тн_БазовыйДоговор КАК ДопСоглашение,
    ДоговорыКонтрагентов.Владелец КАК Контрагент,
    ДоговорыКонтрагентов.ВидДоговора,
    ДоговорыКонтрагентов.тн_ОтветственныйИсполнитель КАК Ответственный,
    ДоговорыКонтрагентов.тн_СрокПоставки КАК СрокПоставки,
    ДоговорыКонтрагентов.СрокОплаты КАК СрокОплатыУсловие,
    ДОБАВИТЬКДАТЕ(ДоговорыКонтрагентов.тн_СрокПоставки, ДЕНЬ, ДоговорыКонтрагентов.СрокОплаты) КАК СрокОплатыДата,
    ВЫБОР
    КОГДА ДОБАВИТЬКДАТЕ(ДоговорыКонтрагентов.тн_СрокПоставки, ДЕНЬ, ДоговорыКонтрагентов.СрокОплаты) < &ТекДата
    И ДоговорыКонтрагентов.СрокОплаты <> ДАТАВРЕМЯ(1,1,1)
    ТОГДА РАЗНОСТЬДАТ(ДОБАВИТЬКДАТЕ(ДоговорыКонтрагентов.тн_СрокПоставки, ДЕНЬ, ДоговорыКонтрагентов.СрокОплаты), &ТекДата, ДЕНЬ)
    ИНАЧЕ "
    КОНЕЦ КАК Просрочка,
    " КАК Поставка
    ИЗ
    Справочник.ДоговорыКонтрагентов КАК ДоговорыКонтрагентов
```
---
Я вот сделал как вы написали, результат колонки "Просрочка" остаётся 737 653 если не заполнены остальные колонки
---
тн_СрокПоставки

Тогда проблема не только в сроке оплаты. Выведете всё и посмотрите.
т.е. добавьте в список выводимых полей:
ДоговорыКонтрагентов.тн_СрокПоставки,
ДоговорыКонтрагентов.СрокОплаты,
ДОБАВИТЬКДАТЕ(ДоговорыКонтрагентов.тн_СрокПоставки, ДЕНЬ, ДоговорыКонтрагентов.СрокОплаты),
РАЗНОСТЬДАТ(ДОБАВИТЬКДАТЕ(ДоговорыКонтрагентов.тн_СрокПоставки, ДЕНЬ, ДоговорыКонтрагентов.СрокОплаты), &ТекДата, ДЕНЬ),
&ТекДата

И сразу поймете, где у Вас чего нету. Вдруг параметр &ТекДата заполнен непонятно как.
---
ТекДата заполненом текущей датой (17.08.2020)

Проблема в том что например СрокОплаты заполнен число 01.08.2020
Далее поле "СрокОплатыУсловие" заполнен числом 10

Далее делаем вычисляемое поле = СрокОплаты + СрокОплатыУсловие = получаем 11.08.2020

В этом моменте проблема как бы начинается - если оба поля пустые, мы получаем пустую дату

Далее добавляем вычисляемое "Просрочка" и там в начале мы сравниваем с текущей датой и если
текущая дата больше 11.08.2020 тогда выводим формула (Первое вычисляемое поле где мы получили 11.08.2020 - текущая дата, например текдата 17.08.2020 = должно вывести 6 (это работает))

А когда мы текдату - вычисляемое поле (в котором пустая дата) = мы получаем 737 653

А я хотел сделать чтоб пустая колонка тогда была
---
Так у вас ДоговорыКонтрагентов.СрокОплаты Не ДатаВремя , а число?
В таком случае бессмысленно сравнивать число с пустой датой. оно всегда ложь будет.
М.б. тогда лучше проверять ДоговорыКонтрагентов.тн_СрокПоставки на пустую дату?
---
```1c
    ...
    ВЫБОР
    КОГДА ДОБАВИТЬКДАТЕ(ДоговорыКонтрагентов.тн_СрокПоставки, ДЕНЬ, ДоговорыКонтрагентов.СрокОплаты) < &ТекДата
    И ДоговорыКонтрагентов.тн_СрокПоставки<> ДАТАВРЕМЯ(1,1,1)
    ТОГДА РАЗНОСТЬДАТ(ДОБАВИТЬКДАТЕ(ДоговорыКонтрагентов.тн_СрокПоставки, ДЕНЬ, ДоговорыКонтрагентов.СрокОплаты), &ТекДата, ДЕНЬ)
    ИНАЧЕ "
    КОНЕЦ КАК Просрочка,
    ...
```
---
ООО круто))) помогло))) Спасибо большое)
ВЫБОР
КОГДА ДОБАВИТЬКДАТЕ(ДоговорыКонтрагентов.тн_СрокПоставки, ДЕНЬ, ДоговорыКонтрагентов.СрокОплаты) ДАТАВРЕМЯ(1,1,1)
  ТОГДА РАЗНОСТЬДАТ(ДОБАВИТЬКДАТЕ(ДоговорыКонтрагентов.тн_СрокПоставки, ДЕНЬ, ДоговорыКонтрагентов.СрокОплаты), &ТекДата, ДЕНЬ)
ИНАЧЕ ""
КОНЕЦ
---
А можете еще подсказать?) Можно ли в запросе соединить строку + число
Например чтоб в колонке "Просрочка" выходило - Просрочено на 2 дня
---
Полноценную конкатенацию строк запросы 1с не умеют.
(Некоторые примитивы срабатывают).

Лучше так назовите колонку.
---
"Просрочено на (в днях)"

0
0
2
5
4
0
---
Понял, спасибо)