Помогите с запросом

1. 03.03.21 13:25 Сейчас в теме
Есть запрос, который тянет цены номенклатуры. До этого в массив передавался только 1 вид цен - Розничная. Теперь будет передаваться 2 вида. Розничная и Скидка. Вопрос: Как можно дописать запрос, чтобы по одной номенклатуре с определенной характеристикой выводилась Скидочная цена, если есть, если она NULL или 0, тогда пусть выводится Розничная?

В запросах слаб очень поэтому прошу помощи.

ВЫБРАТЬ
    Цены.Номенклатура КАК Номенклатура,
    Цены.Характеристика КАК Характеристика,
    Цены.ВидЦены КАК ТипЦен,
    МАКСИМУМ(Цены.Цена) КАК Цена
ИЗ
    РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&ТекущаяДата, ВидЦены В (&МассивТипыЦен)) КАК Цены

СГРУППИРОВАТЬ ПО
    Цены.Номенклатура,
    Цены.ВидЦены,
    Цены.Характеристика

ОБЪЕДИНИТЬ
ВЫБРАТЬ
    ЦеныБезХарактеристики.Номенклатура,
    ЗНАЧЕНИЕ(Справочник.ХарактеристикиНоменклатуры.ПустаяСсылка),
    ЦеныБезХарактеристики.ВидЦены,
    МАКСИМУМ(ЦеныБезХарактеристики.Цена)
ИЗ
    РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&ТекущаяДата, ВидЦены В (&МассивТипыЦен)) КАК ЦеныБезХарактеристики

СГРУППИРОВАТЬ ПО
    ЦеныБезХарактеристики.Номенклатура,
    ЦеныБезХарактеристики.ВидЦены
ИТОГИ ПО
    Номенклатура
Показать
Ответы
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
3. keyn5565` 6 03.03.21 14:12 Сейчас в теме
(1)
ВЫБРАТЬ
Цены.Номенклатура КАК Номенклатура,
Цены.Характеристика КАК Характеристика,
Цены.ВидЦены КАК ТипЦен,
Цены.Цена КАК Цена
ПОМЕСТИТЬ вВсеЦены
ИЗ
РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&ТекущаяДата, ВидЦены В (&МассивТипыЦен)) КАК Цены
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
СкидочныеЦены.Номенклатура КАК Номенклатура,
СкидочныеЦены.Характеристика КАК Характеристика,
СкидочныеЦены.ТипЦен КАК ТипЦен,
МАКСИМУМ(СкидочныеЦены.Цена) КАК Цена
ПОМЕСТИТЬ мСкидочныеЦены
ИЗ
вВсеЦены КАК СкидочныеЦены
ГДЕ
СкидочныеЦены.ТипЦен = &ТипЦенСкидка

СГРУППИРОВАТЬ ПО
СкидочныеЦены.Номенклатура,
СкидочныеЦены.Характеристика,
СкидочныеЦены.ТипЦен
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
РозничныеЦены.Номенклатура КАК Номенклатура,
РозничныеЦены.Характеристика КАК Характеристика,
РозничныеЦены.ТипЦен КАК ТипЦен,
МАКСИМУМ(РозничныеЦены.Цена) КАК Цена
ПОМЕСТИТЬ мРозничныеЦены
ИЗ
вВсеЦены КАК РозничныеЦены
ГДЕ
РозничныеЦены.ТипЦен = &ТипЦенРозница
И НЕ РозничныеЦены.Номенклатура В
(ВЫБРАТЬ
мСкидочныеЦены.Номенклатура КАК Номенклатура
ИЗ
мСкидочныеЦены КАК мСкидочныеЦены)

СГРУППИРОВАТЬ ПО
РозничныеЦены.Номенклатура,
РозничныеЦены.Характеристика,
РозничныеЦены.ТипЦен
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
мСкидочныеЦены.Номенклатура КАК Номенклатура,
мСкидочныеЦены.Характеристика КАК Характеристика,
мСкидочныеЦены.ТипЦен КАК ТипЦен,
мСкидочныеЦены.Цена КАК Цена
ИЗ
мСкидочныеЦены КАК мСкидочныеЦены

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
мРозничныеЦены.Номенклатура,
мРозничныеЦены.Характеристика,
мРозничныеЦены.ТипЦен,
мРозничныеЦены.Цена
ИЗ
мРозничныеЦены КАК мРозничныеЦены
ИТОГИ ПО
Номенклатура
Показать
4. user1302499 03.03.21 14:40 Сейчас в теме
(3) Запрос выдает только цену со скидкой. Нужно где-то втулить проверку на 0 и NULL. Как я думаю во 2 или 3 запросе?
6. keyn5565` 6 03.03.21 14:48 Сейчас в теме
(4) проверку на цену равную 0?
5. user1302499 03.03.21 14:45 Сейчас в теме
(3) Либо может быть в последнем запросе нужно не через объединить, а иначе делать
8. keyn5565` 6 03.03.21 15:00 Сейчас в теме
(5) установите условие в первом запросе "Цена <> 0"
7. keyn5565` 6 03.03.21 14:50 Сейчас в теме
(1) какая основная задача этого запроса?
11. user1302499 04.03.21 10:54 Сейчас в теме
(7) в (10) прикрепил скриншот
2. homer_ 76 03.03.21 13:55 Сейчас в теме
Как это не грустно, но программирование это не ваше.
Для начало вам надо на бумажки нарисовать блок-схему. А далее задавать вопросы по синтаксису.
В качестве бонуса))
Берем данную таблицу (розница) и заворачиваем во временную, далее собираем еще одну временную таблицу со скидками. Далее в третьем пакете запроса соединяем 2 таблицы и выводим нужный результат.
keyn5565`; +1 Ответить
9. 17808849 54 04.03.21 07:17 Сейчас в теме
ВЫБРАТЬ
    Цены.Номенклатура КАК Номенклатура,
    ВЫБОР
	КОГДА ЕСТЬNULL(ЦеныБезХарактеристики.Цена, 0) = 0 ТОГДА
	      Цены.Характеристика
	ИНАЧЕ
	      ЦеныБезХарактеристики.Характеристика
    КОНЕЦ КАК Характеристика,
    ВЫБОР
	КОГДА ЕСТЬNULL(ЦеныБезХарактеристики.Цена, 0) = 0 ТОГДА
	      Цены.ВидЦены
	ИНАЧЕ
	      ЦеныБезХарактеристики.ВидЦены
    КОНЕЦ КАК ТипЦен,
    ВЫБОР
	КОГДА ЕСТЬNULL(ЦеныБезХарактеристики.Цена, 0) = 0 ТОГДА
	      Цены.Цена
	ИНАЧЕ
	      ЦеныБезХарактеристики.Цена
    КОНЕЦ КАК Цена
ИЗ
    РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&ТекущаяДата, ВидЦены В (&ТипыЦенРозничная)) КАК Цены
    	ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&ТекущаяДата, Характеристика = ЗНАЧЕНИЕ(Справочник.ХарактеристикиНоменклатуры.ПустаяСсылка) И ВидЦены В (&ТипыЦенСкидка)) КАК ЦеныБезХарактеристики
    	ПО Цены.Номенклатура = ЦеныБезХарактеристики.Номенклатура


ИТОГИ ПО
    Номенклатура
Показать
10. user1302499 04.03.21 10:40 Сейчас в теме
(9) Не выводит цену по скидке, выводит цену розничную. Смотрите на картинку, вот так вот текущий запрос работает. Я подчеркнул строки, они одинаковые, нужно чтобы если есть Цена со скидкой Розничная уже не выбиралась. Как я думаю, нужно вложенные запросы использовать и там связями это дело убирать. НО не уверен, что я прав.
Прикрепленные файлы:
12. 17808849 54 04.03.21 11:10 Сейчас в теме
(10)
и одинаковые, нужно чтобы если есть Цена со скидкой Розничная уже не выбиралась. Как я думаю, нужно вложенные запросы использовать и там связями

Добавьте "Различные" и будет вам счастье

Так же, в показанном примере, разные характеристики
13. user1302499 04.03.21 11:22 Сейчас в теме
14. user1302499 04.03.21 15:26 Сейчас в теме
Все, написал, всем спасибо)
Оставьте свое сообщение
Вопросы с вознаграждением