Доброго дня. Вчера столкнулся с неприятной ситуацией. У нас КА 2.4.6.231 платформа 8.3.14.1565, ввиду доработок режим совместимости 8.3.13.

Не захотела считаться амортизация при установленной версии внеоборотных активов 2.4 Выдает ошибку

Документ.АмортизацияОС2_4.МодульМенеджера(108)}: Ошибка при вызове метода контекста (Выполнить)
  РезультатЗапроса = Запрос.Выполнить();
по причине:
{(1311, 128)}: Неверные параметры "КОНЕЦПЕРИОДА"
(РАЗНОСТЬДАТ(ЕСТЬNULL(Изменения_УУ.ДатаПоследнегоИзменения, ПараметрыАмортизацииОСУУ.ДатаПоследнегоИзменения), КОНЕЦПЕРИОДА(<<?>>ЕСТЬNULL(Изменения_УУ.ДатаПоследнегоИзменения, ПараметрыАмортизацииОСУУ.ДатаПоследнегоИзменения), МЕСЯЦ), ДЕНЬ) + 1) / ДЕНЬ(КОНЕЦПЕРИОДА(ЕСТЬNULL(Изменения_УУ.ДатаПоследнегоИзменения, ПараметрыАмортизацииОСУУ.ДатаПоследнегоИзменения), МЕСЯЦ))

Начал копать и выяснил, что в одной из временных таблиц "ДатаПоследнегоИзменения" со значением NULL

После этого взял типовую конфигурацию и посмотрел там, запрос такой же и все работает замечательно.

Дальше решил поэксперементировать со значением NULL. Создал простой запрос

```1c
    ВЫБРАТЬ
    NULL КАК МоеПоле
    ПОМЕСТИТЬ ВВТ

    ИНДЕКСИРОВАТЬ ПО
    МоеПоле
```

и получил ошибку в режиме совместимости 8.3.13:
 {(2,2)}: Индексируемое поле не может иметь составной тип и тип неограниченной длины <<?>>NULL КАК МоеПоле
в режиме совместимости 8.3.12 такой ошибки нет

Затем запрос с датами:

```1c
    ВЫБРАТЬ
    NULL КАК ДатаРегистрации,
    Организации.Ссылка КАК Организация
    ПОМЕСТИТЬ ВВТ
    ИЗ
    Справочник.Организации КАК Организации
    ;

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

в режиме совместимости получил ошибку:

{(12,15)}: неверные параметры "КОНЕЦПЕРИОДА"
КОНЕЦПЕРИОДА(<<?>>ЕСТЬNULL(ВВТ.ДатаРегистрации, Организации.ДатаРегистрации), ДЕНЬ) КАК ДатаРегистрации

В режиме совместимости 8.3.12 все отрабатывает хорошо.

Дак вот собственно вопрос это очередной глюк или же все таки так надо?

p.s. В режиме совместимости "Неиспользовать" на платформе 8.3.14 такие же ошибки
Если в первом случае заменить NULL на НЕОПРЕДЕЛНО, а во втором NULL на ДАТАВРЕМЯ(1, 1, 1) то ошибка пропадает, амортизация начала считаться
---
Вроде как оно, но это не точно:
При формировании временной таблицы с помощью оператора языка запросов ПОМЕСТИТЬ, тип поля временной таблицы, куда помещается NULL, становится составным. Составной тип включает в себя следующие типы: Число с точностью 1.0, Строка длиной 1 символ, ДатаВремя, Булево и NULL.
Рекомендуется провести анализ использования полей временных таблиц, которые могут принимать NULL.

В режиме совместимости с версией 8.3.12 поведение не изменилось.

https://dl04.1c.ru/content/Platform/8_3_13_1690/1cv8upd_8_3_13_1690.htm
А вообще там много "оптимизаций" провели как с СКД, так и с запросами
---
Вроде как оно, но это не точно:
При формировании временной таблицы с помощью оператора языка запросов ПОМЕСТИТЬ, тип поля временной таблицы, куда помещается NULL, становится составным. Составной тип включает в себя следующие типы: Число с точностью 1.0, Строка длиной 1 символ, ДатаВремя, Булево и NULL.
Рекомендуется провести анализ использования полей временных таблиц, которые могут принимать NULL.

В режиме совместимости с версией 8.3.12 поведение не изменилось.

https://dl04.1c.ru/content/Platform/8_3_13_1690/1cv8upd_8_3_13_1690.htm
А вообще там много "оптимизаций" провели как с СКД, так и с запросами
---
и зачем они это сделали? наверное только "САМОМУ"... Нуралиеву известно)))
---
Пишут что:
Стало возможно использовать поля, которые во временной таблице содержат значения NULL в выражениях, которые не поддерживают использование NULL. В этом случае можно использовать функцию языка запросов ВЫРАЗИТЬ() для получения нужного типа.
По мне, так: "ну чтобы было".