Имя: Пароль:
1C
1С v8
Выбрать одно и то же поле в запросе 2 раза с разным параметром
, ,
0 R0m1n
 
26.02.17
19:23
Всем, доброго вечера. Ситуация такая - необходимо сформировать запрос, в котором будут выбраны ЦеныНоменклатуры(регистр сведений) 2-х разных типов из  и всё это соединить с доком ПоступлениеНоменклатуры  - в момент проведения делаю отчет, чтобы увидеть старую/новую закупочную и розничную цены. В общем то вопрос таков - как выбрать одно и то же поле два раза(предполагаю что здесь просто разные синонимы полей нужно назначить), и с разным параметром(а вот это не знаю как должно выглядеть).
Вот текущий код, но с выборкой только одного поля:

ВЫБРАТЬ
                                  |    ПоступлениеТоваровУслугТовары.Номенклатура,
                                  |    ПоступлениеТоваровУслугТовары.ХарактеристикаНоменклатуры,
                                  |    ПоступлениеТоваровУслугТовары.Цена КАК ЦенаДокумента,
                                  |    ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Цена, 0) КАК ЦенаСтарая,
                                  |    ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Цена, 0) КАК Поле1
                                  |ИЗ
                                  |    Документ.ПоступлениеТоваровУслуг.Товары КАК ПоступлениеТоваровУслугТовары
                                  |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&ДатаСреза, ТипЦен = &ТипЦен) КАК ЦеныНоменклатурыСрезПоследних
                                  |        ПО ПоступлениеТоваровУслугТовары.Номенклатура = ЦеныНоменклатурыСрезПоследних.Номенклатура
                                  |            И ПоступлениеТоваровУслугТовары.ХарактеристикаНоменклатуры = ЦеныНоменклатурыСрезПоследних.ХарактеристикаНоменклатуры
                                  |ГДЕ
                                  |    ПоступлениеТоваровУслугТовары.Ссылка = &Ссылка
                                  |    И ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Цена, 0) <> ПоступлениеТоваровУслугТовары.Цена
                                  |
                                  |СГРУППИРОВАТЬ ПО
                                  |    ПоступлениеТоваровУслугТовары.Номенклатура,
                                  |    ПоступлениеТоваровУслугТовары.ХарактеристикаНоменклатуры,
                                  |    ПоступлениеТоваровУслугТовары.Цена,
                                  |    ЦеныНоменклатурыСрезПоследних.Цена");
1 R0m1n
 
26.02.17
19:24
|    ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Цена, 0) КАК Поле1 - это исключить, это уже мои эксперименты, сорри
2 shuhard
 
26.02.17
19:24
(0) объединить все
3 R0m1n
 
26.02.17
19:26
(2) два запроса делать? по другом никак?
4 h-sp
 
26.02.17
19:30
ВЫБРАТЬ
                                  |    ПоступлениеТоваровУслугТовары.Номенклатура,
                                  |    ПоступлениеТоваровУслугТовары.ХарактеристикаНоменклатуры,
                                  |    ПоступлениеТоваровУслугТовары.Цена КАК ЦенаДокумента,
                                  |    ЕСТЬNULL(ЦеныНоменклатурыСрезПоследнихСтарые.Цена, 0) КАК ЦенаСтарая,
ЕСТЬNULL(ЦеныНоменклатурыСрезПоследнихНовые.Цена, 0) КАК ЦенаНовая,                                  |    ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Цена, 0) КАК Поле1
                                  |ИЗ
                                  |    Документ.ПоступлениеТоваровУслуг.Товары КАК ПоступлениеТоваровУслугТовары
                                  |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&ДатаСреза, ТипЦен = &ТипЦенСтарые) КАК ЦеныНоменклатурыСрезПоследнихСтарые
                                  |        ПО ПоступлениеТоваровУслугТовары.Номенклатура = ЦеныНоменклатурыСрезПоследнихСтарые.Номенклатура
                                  |            И ПоступлениеТоваровУслугТовары.ХарактеристикаНоменклатуры = ЦеныНоменклатурыСрезПоследнихСтарые.ХарактеристикаНоменклатуры   |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&ДатаСреза, ТипЦен = &ТипЦенНовые) КАК ЦеныНоменклатурыСрезПоследнихНовые
                                  |        ПО ПоступлениеТоваровУслугТовары.Номенклатура = ЦеныНоменклатурыСрезПоследнихНовые.Номенклатура
                                  |            И ПоступлениеТоваровУслугТовары.ХарактеристикаНоменклатуры = ЦеныНоменклатурыСрезПоследнихНовые.ХарактеристикаНоменклатуры
5 PR
 
26.02.17
19:32
(2) Мде, ну ну
6 PR
 
26.02.17
19:33
(0) Два левых соединения делай
7 nordbox
 
26.02.17
19:44
я конечно дико извиняюсь а почему не воспользоваться уже готовым????
Функция ПолучитьЦенуНоменклатуры(Номенклатура, ХарактеристикаНоменклатуры = Неопределено, Знач ТипЦен, ДатаПараметр = Неопределено, ЕдиницаИзмерения = Неопределено,
                                 Валюта = Неопределено, Курс = 0, Кратность = 1, ПроцентСкидкиНаценки = 0, ДоговорКонтрагента = Неопределено,
                                 УсловиеПродаж = Неопределено) Экспорт

Это из общего модуля Ценообразование
нфига весь огород городить?
8 PR
 
26.02.17
19:45
(7) Да не извиняйся, кому-то нужно и кавнокодить запросами в цикле
9 nordbox
 
26.02.17
19:54
(8) заниматься насилованием мозгов и мазохизмом после праздников это сейчас наверное модно ))
10 R0m1n
 
26.02.17
19:59
(7)да, чё то я забыл про это, спасибо. если чё, код не мой - фрилансера)) правда в 10.2 может еще и не было этой функции, на 10.3 код перевозили без какого либо рефакторинга
11 PR
 
26.02.17
20:00
(9) Бедолага, жаль, что одно сраное левое соединение изнасиловало твой мозг
12 PR
 
26.02.17
20:01
(10) Фрилансер молодец, че, все правильно сделал
Кaк может человек ожидaть, что его мольбaм о снисхождении ответит тот, кто превыше, когдa сaм он откaзывaет в милосердии тем, кто ниже его? Петр Трубецкой