Запросом получаются данные по нескольким типам цен.

По некоторому типу цен цена может быть равна нулю.

 Надо брать цену по другому типу цен, если цена оказывается равна нулю.

В коде добавил комментарий //получить цену по ТипуЦенРозница

```1c
    ВЫБРАТЬ
    ВТ_ЦеныСегодня.Номенклатура.Код КАК Код,
    ВТ_ЦеныСегодня.Номенклатура КАК Номенклатура,
    ВТ_ЦеныСегодня.Цена КАК Цена,
    ВТ_ЦеныСегодня.ТипЦен КАК ТипЦен,

    ВЫБОР
    КОГДА ВТ_ЦеныВчера.Цена = 0
    ТОГДА //получить цену по ТипуЦенРозница
    ИНАЧЕ ВТ_ЦеныВчера.Цена
    КОНЕЦ КАК ЦенаБыла
    ИЗ
    ВТ_ЦеныСегодня КАК ВТ_ЦеныСегодня
    ЛЕВОЕ СОЕДИНЕНИЕ ВТ_ЦеныВчера КАК ВТ_ЦеныВчера
    ПО ВТ_ЦеныСегодня.Номенклатура = ВТ_ЦеныВчера.Номенклатура
    И ВТ_ЦеныСегодня.ТипЦен = ВТ_ЦеныВчера.ТипЦен
```
---
Цена в условии может быть как равна 0 так и null, если, например, по данному виду цен, цена вообще не установлена.

У вас в запросе, в общем, не понятно на какую дату вы берете срез последних. И это отдельный разговор - как найти максимальную дату для вида цен на которую значение цены больше 0, и что это в принципе может дать. Так как в разные периоды цена может быть установлена и = 0, тогда по оси времени интервалы, в которых цена = 0 будут перемежаться интервалами, в которых цена > 0. И в общем не понятно что вам даст поиск максимальной даты, например за период квартал, на которую значение цены > 0, тогда как в течении квартала есть 10 различных периодов, в которых цена = 0 и 12 различных периодов, в которых цена > 0. Если тупо взять не срез последних, а записи регистра и выбрать запись с ненулевой ценой с максимальным периодом из интервала вы получите требуемое - и?

Касательно же запроса, если предположить, что по двум видам цен срез последних взят на одну дату, и условие незамысловатое: если цена 1 отсутствует или = 0 бери цену 2 (которая на полученную дату среза сама может отсутствовать или быть равной 0) тогда код в запросе может иметь вид:

```1c
    ВЫБОР
    КОГДА ЕстьNull(ВТ_ЦеныВчера.Цена,0) = 0
    ТОГДА <подставляем цену второго вида>
    ИНАЧЕ ВТ_ЦеныВчера.Цена
    КОНЕЦ КАК ЦенаБыла
```
---
Цена в условии может быть как равна 0 так и null, если, например, по данному виду цен, цена вообще не установлена.

У вас в запросе, в общем, не понятно на какую дату вы берете срез последних. И это отдельный разговор - как найти максимальную дату для вида цен на которую значение цены больше 0, и что это в принципе может дать. Так как в разные периоды цена может быть установлена и = 0, тогда по оси времени интервалы, в которых цена = 0 будут перемежаться интервалами, в которых цена > 0. И в общем не понятно что вам даст поиск максимальной даты, например за период квартал, на которую значение цены > 0, тогда как в течении квартала есть 10 различных периодов, в которых цена = 0 и 12 различных периодов, в которых цена > 0. Если тупо взять не срез последних, а записи регистра и выбрать запись с ненулевой ценой с максимальным периодом из интервала вы получите требуемое - и?

Касательно же запроса, если предположить, что по двум видам цен срез последних взят на одну дату, и условие незамысловатое: если цена 1 отсутствует или = 0 бери цену 2 (которая на полученную дату среза сама может отсутствовать или быть равной 0) тогда код в запросе может иметь вид:

```1c
    ВЫБОР
    КОГДА ЕстьNull(ВТ_ЦеныВчера.Цена,0) = 0
    ТОГДА <подставляем цену второго вида>
    ИНАЧЕ ВТ_ЦеныВчера.Цена
    КОНЕЦ КАК ЦенаБыла
```
---
стало понятнее, спасибо. цену по конкретному типу цены найду