Уже многократно поднимался похожий вопрос на форуме, но мне трудно поверить, что это невозможно.
У меня есть ТЗ, выгруженная из запроса, которая сразу преобразуется в csv общими функциями, как колонки вывела в запросе - то и получила в результате. И совсем бы не хотелось дополнительно после выгрузки из запроса эту ТЗ обрабатывать.

Мне всего лишь нужна дата без времени.

У меня есть временная таблица и выборка из неё. Наглядно что я пытаюсь сделать. Я хочу получить дату без времени без громоздких конструкций. Пробовала отдельно Год, День, Месяц, но эти числа не превратить в строку

```1c
    ВЫБРАТЬ
    ПРЕДСТАВЛЕНИЕ(РеестрОтгрузки.Дата) ДатаРеестра
    Поместить ЗаказыЗаПериод
    .....
    ;
    ВЫБРАТЬ
    Подстрока(ДатаРеестра,1,10) КАК ДокументДата
    ИЗ ЗаказыЗаПериод
```

Может, ему как-то convert можно подсунуть?
---
В общем, ГОРАЗДО проще, но, возможно, медленнее, будет обрабатывать результат запроса программно. Там можно будет дату в строку перевести, по точкам разложить и т.п. Но раз уж хочется в запросе, то вот запрос.

```1c
    ВЫБРАТЬ
    НАЧАЛОПЕРИОДА(&Дата, ДЕНЬ) КАК Дата,
    ГОД(НАЧАЛОПЕРИОДА(&Дата, ДЕНЬ)) КАК Год
    ПОМЕСТИТЬ ВТДата
    ;

    ////////////////////////////////////////////////////////////­////////////////////
    ВЫБРАТЬ
    ВТДата.Дата КАК Дата,
    ВЫБОР
    КОГДА (ВЫРАЗИТЬ(ВТДата.Год / 1000 КАК ЧИСЛО(1, 0))) > ВТДата.Год / 1000
    ТОГДА (ВЫРАЗИТЬ(ВТДата.Год / 1000 КАК ЧИСЛО(1, 0))) - 1
    ИНАЧЕ ВЫРАЗИТЬ(ВТДата.Год / 1000 КАК ЧИСЛО(1, 0))
    КОНЕЦ КАК ПервоеЧислоГода,
    (ВТДата.Год - ВЫБОР
    КОГДА (ВЫРАЗИТЬ(ВТДата.Год / 1000 КАК ЧИСЛО(1, 0))) > ВТДата.Год / 1000
    ТОГДА (ВЫРАЗИТЬ(ВТДата.Год / 1000 КАК ЧИСЛО(1, 0))) - 1
    ИНАЧЕ ВЫРАЗИТЬ(ВТДата.Год / 1000 КАК ЧИСЛО(1, 0))
    КОНЕЦ * 1000 - (ВТДата.Год - ВЫБОР
    КОГДА (ВЫРАЗИТЬ(ВТДата.Год / 100 КАК ЧИСЛО(2, 0))) > ВТДата.Год / 100
    ТОГДА (ВЫРАЗИТЬ(ВТДата.Год / 100 КАК ЧИСЛО(2, 0))) - 1
    ИНАЧЕ ВЫРАЗИТЬ(ВТДата.Год / 100 КАК ЧИСЛО(2, 0))
    КОНЕЦ * 100)) / 100 КАК ВтороеЧислоГода,
    (ВТДата.Год - ВЫБОР
    КОГДА (ВЫРАЗИТЬ(ВТДата.Год / 100 КАК ЧИСЛО(2, 0))) > ВТДата.Год / 100
    ТОГДА (ВЫРАЗИТЬ(ВТДата.Год / 100 КАК ЧИСЛО(2, 0))) - 1
    ИНАЧЕ ВЫРАЗИТЬ(ВТДата.Год / 100 КАК ЧИСЛО(2, 0))
    КОНЕЦ * 100 - (ВТДата.Год - ВЫБОР
    КОГДА (ВЫРАЗИТЬ(ВТДата.Год / 10 КАК ЧИСЛО(3, 0))) > ВТДата.Год / 10
    ТОГДА (ВЫРАЗИТЬ(ВТДата.Год / 10 КАК ЧИСЛО(3, 0))) - 1
    ИНАЧЕ ВЫРАЗИТЬ(ВТДата.Год / 10 КАК ЧИСЛО(3, 0))
    КОНЕЦ * 10)) / 10 КАК ТретьеЧислоГода,
    ВТДата.Год - ВЫБОР
    КОГДА (ВЫРАЗИТЬ(ВТДата.Год / 10 КАК ЧИСЛО(3, 0))) > ВТДата.Год / 10
    ТОГДА (ВЫРАЗИТЬ(ВТДата.Год / 10 КАК ЧИСЛО(3, 0))) - 1
    ИНАЧЕ ВЫРАЗИТЬ(ВТДата.Год / 10 КАК ЧИСЛО(3, 0))
    КОНЕЦ * 10 КАК ЧетвертоеЧислоГода
    ПОМЕСТИТЬ ВТДатаСЧисламиГода
    ИЗ
    ВТДата КАК ВТДата
    ;

    ////////////////////////////////////////////////////////////­////////////////////
    ВЫБРАТЬ
    ПОДСТРОКА("0123456789", ВЫБОР
    КОГДА (ВЫРАЗИТЬ(ДЕНЬ(ВТДата.Дата) / 10 КАК ЧИСЛО(1, 0))) > ДЕНЬ(ВТДата.Дата) / 10
    ТОГДА (ВЫРАЗИТЬ(ДЕНЬ(ВТДата.Дата) / 10 КАК ЧИСЛО(1, 0))) - 1
    ИНАЧЕ ВЫРАЗИТЬ(ДЕНЬ(ВТДата.Дата) / 10 КАК ЧИСЛО(1, 0))
    КОНЕЦ + 1, 1) + ПОДСТРОКА("0123456789", ДЕНЬ(ВТДата.Дата) - ВЫБОР
    КОГДА (ВЫРАЗИТЬ(ДЕНЬ(ВТДата.Дата) / 10 КАК ЧИСЛО(1, 0))) > ДЕНЬ(ВТДата.Дата) / 10
    ТОГДА (ВЫРАЗИТЬ(ДЕНЬ(ВТДата.Дата) / 10 КАК ЧИСЛО(1, 0))) - 1
    ИНАЧЕ ВЫРАЗИТЬ(ДЕНЬ(ВТДата.Дата) / 10 КАК ЧИСЛО(1, 0))
    КОНЕЦ * 10 + 1, 1) КАК ДеньМесяца,
    ПОДСТРОКА("0123456789", ВЫБОР
    КОГДА (ВЫРАЗИТЬ(МЕСЯЦ(ВТДата.Дата) / 10 КАК ЧИСЛО(1, 0))) > МЕСЯЦ(ВТДата.Дата) / 10
    ТОГДА (ВЫРАЗИТЬ(МЕСЯЦ(ВТДата.Дата) / 10 КАК ЧИСЛО(1, 0))) - 1
    ИНАЧЕ ВЫРАЗИТЬ(МЕСЯЦ(ВТДата.Дата) / 10 КАК ЧИСЛО(1, 0))
    КОНЕЦ + 1, 1) + ПОДСТРОКА("0123456789", МЕСЯЦ(ВТДата.Дата) - ВЫБОР
    КОГДА (ВЫРАЗИТЬ(МЕСЯЦ(ВТДата.Дата) / 10 КАК ЧИСЛО(1, 0))) > МЕСЯЦ(ВТДата.Дата) / 10
    ТОГДА (ВЫРАЗИТЬ(МЕСЯЦ(ВТДата.Дата) / 10 КАК ЧИСЛО(1, 0))) - 1
    ИНАЧЕ ВЫРАЗИТЬ(МЕСЯЦ(ВТДата.Дата) / 10 КАК ЧИСЛО(1, 0))
    КОНЕЦ * 10 + 1, 1) КАК Месяц,
    ПОДСТРОКА("0123456789", ВТДата.ПервоеЧислоГода + 1, 1) + ПОДСТРОКА("0123456789", ВТДата.ВтороеЧислоГода + 1, 1) + ПОДСТРОКА("0123456789", ВТДата.ТретьеЧислоГода + 1, 1) + ПОДСТРОКА("0123456789", ВТДата.ЧетвертоеЧислоГода + 1, 1) КАК Год
    ИЗ
    ВТДатаСЧисламиГода КАК ВТДата
```

Пояснения:
1. Здесь чисто операции с числами (которые получены в результате встроенных функций ДЕНЬ, МЕСЯЦ, ГОД), их деление, округление и получение остатков от деления. Через оператор ВЫБОР сделано, т.к. нужно учитывать округление в большую сторону, например, когда 1934 мы делим на 1000, с округлением получаем 2, а надо 1.
2. Те места, где ПОДСТРОКА, устанавливается +1, т.к. сама строка, из которой берутся символы, начинается с нуля, а индексы символов - с 1, т.е. если у нас число 0, и нам нужно получить символ "0", то нужно брать первый символ строки.
3. Сделал с временными таблицами, т.к. если делать вложенный запрос, и без того громоздкий и тяжелый для чтения запрос станет совсем нечитаемым. К тому же, в результирующей таблице я вывел отдельно день, месяц и год. Нужно будет их еще склеить с нужным разделителем, но это не сложно.
---
Простых решений преобразования дат в строку нет.

Есть сложные: https://infostart.ru/1c/articles/331805/
---
НАЧАЛОПЕРИОДА(РеестрОтгрузки.Дата, ДЕНЬ) КАК ДатаБезМинут
---
Вот такой запрос даст нужный результат. Это не строка, но дата без чч:мм:сс

```1c
    ВЫБРАТЬ РАЗЛИЧНЫЕ
    ЕСТЬNULL(НАЧАЛОПЕРИОДА(ЗаказКлиента.Дата, ДЕНЬ), ") КАК Дата
    ИЗ
    Документ.ЗаказКлиента КАК ЗаказКлиента
```
---
ВЫБРАТЬ РАЗЛИЧНЫЕ
    ЕСТЬNULL(НАЧАЛОПЕРИОДА(ЗаказКлиента.Дата, ДЕНЬ), "") КАК Дата
ИЗ
    Документ.ЗаказКлиента КАК ЗаказКлиента

Не даст, у него просто 00:00:00 в чч:мм:сс, которые присутствуют в результате выборки. Не знаю, почему у Вас результат отобразил без времени, какое-то отображение 1С видимо. У меня 05.01.2021 00:00:00
---
https://forum.infostart.ru/forum9/topic27446/
---
НачалоПериода мне не подходит, так как система, в которую мы выгружаем, не поймет дату более 10 символов.

Выбрала следующий вариант:

День:

```1c
    ПОДСТРОКА("0123456789", ДЕНЬ(&Дата) / 10 + 0.5, 1),
    ПОДСТРОКА("0123456789", СЕКУНДА(ДОБАВИТЬКДАТЕ(ДАТАВРЕМЯ(1, 1, 1), СЕКУНДА, 6 * ДЕНЬ(&Дата))) / 6 + 0.5, 1)
```

Месяц:

```1c
    ПОДСТРОКА("0123456789", МЕСЯЦ(&Дата) / 10 + 1, 1)
    + ПОДСТРОКА("0123456789", СЕКУНДА(ДОБАВИТЬКДАТЕ(ДАТАВРЕМЯ(1, 1, 1), СЕКУНДА, 6 * МЕСЯЦ(&Дата))) / 6 + 1, 1)
```

Год:

```1c
    ПОДСТРОКА("0123456789", ГОД(&Дата) / 1000 + 1, 1)
    + ПОДСТРОКА("0123456789", СЕКУНДА(ДОБАВИТЬКДАТЕ(ДАТАВРЕМЯ(1, 1, 1), СЕКУНДА, ГОД(&Дата) * 0.06)) / 6 + 1, 1)
    + ПОДСТРОКА("0123456789", СЕКУНДА(ДОБАВИТЬКДАТЕ(ДАТАВРЕМЯ(1, 1, 1), СЕКУНДА, ГОД(&Дата) * 0.6)) / 6 + 1, 1)
    + ПОДСТРОКА("0123456789", СЕКУНДА(ДОБАВИТЬКДАТЕ(ДАТАВРЕМЯ(1, 1, 1), СЕКУНДА, ГОД(&Дата) * 6)) / 6 + 1, 1) КАК Строка
```

Сложить с нужными разделителями. Написала отдельно, потому что есть вопросы в +1 и +0,5. При +1 в дне у меня получался неправильный день. Я не до конца поняла этот алгоритм.
---
Давайте попросим разработчиков 1С реализовать convert (
---
если подстрока(выразить (дата как строка...
не прокатит?
---
Неа( Можешь сам в консоли проверить
---
В общем, ГОРАЗДО проще, но, возможно, медленнее, будет обрабатывать результат запроса программно. Там можно будет дату в строку перевести, по точкам разложить и т.п. Но раз уж хочется в запросе, то вот запрос.

```1c
    ВЫБРАТЬ
    НАЧАЛОПЕРИОДА(&Дата, ДЕНЬ) КАК Дата,
    ГОД(НАЧАЛОПЕРИОДА(&Дата, ДЕНЬ)) КАК Год
    ПОМЕСТИТЬ ВТДата
    ;

    ////////////////////////////////////////////////////////////­////////////////////
    ВЫБРАТЬ
    ВТДата.Дата КАК Дата,
    ВЫБОР
    КОГДА (ВЫРАЗИТЬ(ВТДата.Год / 1000 КАК ЧИСЛО(1, 0))) > ВТДата.Год / 1000
    ТОГДА (ВЫРАЗИТЬ(ВТДата.Год / 1000 КАК ЧИСЛО(1, 0))) - 1
    ИНАЧЕ ВЫРАЗИТЬ(ВТДата.Год / 1000 КАК ЧИСЛО(1, 0))
    КОНЕЦ КАК ПервоеЧислоГода,
    (ВТДата.Год - ВЫБОР
    КОГДА (ВЫРАЗИТЬ(ВТДата.Год / 1000 КАК ЧИСЛО(1, 0))) > ВТДата.Год / 1000
    ТОГДА (ВЫРАЗИТЬ(ВТДата.Год / 1000 КАК ЧИСЛО(1, 0))) - 1
    ИНАЧЕ ВЫРАЗИТЬ(ВТДата.Год / 1000 КАК ЧИСЛО(1, 0))
    КОНЕЦ * 1000 - (ВТДата.Год - ВЫБОР
    КОГДА (ВЫРАЗИТЬ(ВТДата.Год / 100 КАК ЧИСЛО(2, 0))) > ВТДата.Год / 100
    ТОГДА (ВЫРАЗИТЬ(ВТДата.Год / 100 КАК ЧИСЛО(2, 0))) - 1
    ИНАЧЕ ВЫРАЗИТЬ(ВТДата.Год / 100 КАК ЧИСЛО(2, 0))
    КОНЕЦ * 100)) / 100 КАК ВтороеЧислоГода,
    (ВТДата.Год - ВЫБОР
    КОГДА (ВЫРАЗИТЬ(ВТДата.Год / 100 КАК ЧИСЛО(2, 0))) > ВТДата.Год / 100
    ТОГДА (ВЫРАЗИТЬ(ВТДата.Год / 100 КАК ЧИСЛО(2, 0))) - 1
    ИНАЧЕ ВЫРАЗИТЬ(ВТДата.Год / 100 КАК ЧИСЛО(2, 0))
    КОНЕЦ * 100 - (ВТДата.Год - ВЫБОР
    КОГДА (ВЫРАЗИТЬ(ВТДата.Год / 10 КАК ЧИСЛО(3, 0))) > ВТДата.Год / 10
    ТОГДА (ВЫРАЗИТЬ(ВТДата.Год / 10 КАК ЧИСЛО(3, 0))) - 1
    ИНАЧЕ ВЫРАЗИТЬ(ВТДата.Год / 10 КАК ЧИСЛО(3, 0))
    КОНЕЦ * 10)) / 10 КАК ТретьеЧислоГода,
    ВТДата.Год - ВЫБОР
    КОГДА (ВЫРАЗИТЬ(ВТДата.Год / 10 КАК ЧИСЛО(3, 0))) > ВТДата.Год / 10
    ТОГДА (ВЫРАЗИТЬ(ВТДата.Год / 10 КАК ЧИСЛО(3, 0))) - 1
    ИНАЧЕ ВЫРАЗИТЬ(ВТДата.Год / 10 КАК ЧИСЛО(3, 0))
    КОНЕЦ * 10 КАК ЧетвертоеЧислоГода
    ПОМЕСТИТЬ ВТДатаСЧисламиГода
    ИЗ
    ВТДата КАК ВТДата
    ;

    ////////////////////////////////////////////////////////////­////////////////////
    ВЫБРАТЬ
    ПОДСТРОКА("0123456789", ВЫБОР
    КОГДА (ВЫРАЗИТЬ(ДЕНЬ(ВТДата.Дата) / 10 КАК ЧИСЛО(1, 0))) > ДЕНЬ(ВТДата.Дата) / 10
    ТОГДА (ВЫРАЗИТЬ(ДЕНЬ(ВТДата.Дата) / 10 КАК ЧИСЛО(1, 0))) - 1
    ИНАЧЕ ВЫРАЗИТЬ(ДЕНЬ(ВТДата.Дата) / 10 КАК ЧИСЛО(1, 0))
    КОНЕЦ + 1, 1) + ПОДСТРОКА("0123456789", ДЕНЬ(ВТДата.Дата) - ВЫБОР
    КОГДА (ВЫРАЗИТЬ(ДЕНЬ(ВТДата.Дата) / 10 КАК ЧИСЛО(1, 0))) > ДЕНЬ(ВТДата.Дата) / 10
    ТОГДА (ВЫРАЗИТЬ(ДЕНЬ(ВТДата.Дата) / 10 КАК ЧИСЛО(1, 0))) - 1
    ИНАЧЕ ВЫРАЗИТЬ(ДЕНЬ(ВТДата.Дата) / 10 КАК ЧИСЛО(1, 0))
    КОНЕЦ * 10 + 1, 1) КАК ДеньМесяца,
    ПОДСТРОКА("0123456789", ВЫБОР
    КОГДА (ВЫРАЗИТЬ(МЕСЯЦ(ВТДата.Дата) / 10 КАК ЧИСЛО(1, 0))) > МЕСЯЦ(ВТДата.Дата) / 10
    ТОГДА (ВЫРАЗИТЬ(МЕСЯЦ(ВТДата.Дата) / 10 КАК ЧИСЛО(1, 0))) - 1
    ИНАЧЕ ВЫРАЗИТЬ(МЕСЯЦ(ВТДата.Дата) / 10 КАК ЧИСЛО(1, 0))
    КОНЕЦ + 1, 1) + ПОДСТРОКА("0123456789", МЕСЯЦ(ВТДата.Дата) - ВЫБОР
    КОГДА (ВЫРАЗИТЬ(МЕСЯЦ(ВТДата.Дата) / 10 КАК ЧИСЛО(1, 0))) > МЕСЯЦ(ВТДата.Дата) / 10
    ТОГДА (ВЫРАЗИТЬ(МЕСЯЦ(ВТДата.Дата) / 10 КАК ЧИСЛО(1, 0))) - 1
    ИНАЧЕ ВЫРАЗИТЬ(МЕСЯЦ(ВТДата.Дата) / 10 КАК ЧИСЛО(1, 0))
    КОНЕЦ * 10 + 1, 1) КАК Месяц,
    ПОДСТРОКА("0123456789", ВТДата.ПервоеЧислоГода + 1, 1) + ПОДСТРОКА("0123456789", ВТДата.ВтороеЧислоГода + 1, 1) + ПОДСТРОКА("0123456789", ВТДата.ТретьеЧислоГода + 1, 1) + ПОДСТРОКА("0123456789", ВТДата.ЧетвертоеЧислоГода + 1, 1) КАК Год
    ИЗ
    ВТДатаСЧисламиГода КАК ВТДата
```

Пояснения:
1. Здесь чисто операции с числами (которые получены в результате встроенных функций ДЕНЬ, МЕСЯЦ, ГОД), их деление, округление и получение остатков от деления. Через оператор ВЫБОР сделано, т.к. нужно учитывать округление в большую сторону, например, когда 1934 мы делим на 1000, с округлением получаем 2, а надо 1.
2. Те места, где ПОДСТРОКА, устанавливается +1, т.к. сама строка, из которой берутся символы, начинается с нуля, а индексы символов - с 1, т.е. если у нас число 0, и нам нужно получить символ "0", то нужно брать первый символ строки.
3. Сделал с временными таблицами, т.к. если делать вложенный запрос, и без того громоздкий и тяжелый для чтения запрос станет совсем нечитаемым. К тому же, в результирующей таблице я вывел отдельно день, месяц и год. Нужно будет их еще склеить с нужным разделителем, но это не сложно.
---
Какой-то театр абсурда.
И совсем бы не хотелось дополнительно после выгрузки из запроса эту ТЗ обрабатывать. Поэтому давайте сотворим монстра в запросе, вместо элементарной постобработки.
---
Постобработка не всегда возможна или разумна.
Например, в отчёте на СКД.