Имя: Пароль:
1C
 
выборка в запросе одного вида цен
0 falselight
 
26.04.18
10:35
Подскажите как поправить запрос?
В нем нужно выбрать только один вид цен "Прайс-Лист"


ВЫБРАТЬ
    ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Номенклатура, ЦеныНоменклатурыПоставщиковСрезПоследних.Номенклатура) КАК Номенклатура,
    ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Характеристика, ЦеныНоменклатурыПоставщиковСрезПоследних.Характеристика) КАК Характеристика,
    МАКСИМУМ(ВЫБОР
            КОГДА ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Период, ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)) > ЕСТЬNULL(ЦеныНоменклатурыПоставщиковСрезПоследних.Период, ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0))
                ТОГДА ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Период, ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0))
            ИНАЧЕ ЕСТЬNULL(ЦеныНоменклатурыПоставщиковСрезПоследних.Период, ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0))
        КОНЕЦ) КАК Период
ПОМЕСТИТЬ ПоследнийПериодЦены
ИЗ
    РегистрСведений.ЦеныНоменклатуры.СрезПоследних(
            ,
            ВидЦены В
                (ВЫБРАТЬ РАЗЛИЧНЫЕ
                    ВидыЦен.Ссылка КАК ВидЦены
                ИЗ
                    Справочник.ВидыЦен КАК ВидыЦен
                ГДЕ
                    (ВидыЦен.Наименование = "БазоваяRUB"
                        ИЛИ ВидыЦен.Наименование = "РасчетнаяUSDRUB"
                        ИЛИ ВидыЦен.Наименование = "РасчетнаяEURRUB"
                        ИЛИ ВидыЦен.Наименование = "НаценкаНаЗакупочнуюRUB"))) КАК ЦеныНоменклатурыСрезПоследних
        ПОЛНОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатурыПоставщиков.СрезПоследних(
                ,
                Соглашение.ДоступноДляПродажиКлиентам
                    И Соглашение.Валюта = &Валюта) КАК ЦеныНоменклатурыПоставщиковСрезПоследних
        ПО ЦеныНоменклатурыСрезПоследних.Номенклатура = ЦеныНоменклатурыПоставщиковСрезПоследних.Номенклатура
            И ЦеныНоменклатурыСрезПоследних.Характеристика = ЦеныНоменклатурыПоставщиковСрезПоследних.Характеристика

СГРУППИРОВАТЬ ПО
    ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Номенклатура, ЦеныНоменклатурыПоставщиковСрезПоследних.Номенклатура),
    ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Характеристика, ЦеныНоменклатурыПоставщиковСрезПоследних.Характеристика)

ИНДЕКСИРОВАТЬ ПО
    Номенклатура,
    Характеристика
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ПоследнийПериодЦены.Номенклатура КАК Номенклатура,
    ПоследнийПериодЦены.Характеристика КАК Характеристика,
    ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Цена, ЦеныНоменклатурыПоставщиковСрезПоследних.Цена) КАК Цена,
    ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Валюта, ЦеныНоменклатурыПоставщиковСрезПоследних.Валюта) КАК Валюта
{ВЫБРАТЬ
    Номенклатура.*,
    Характеристика.*,
    Цена,
    Валюта.*}
ИЗ
    ПоследнийПериодЦены КАК ПоследнийПериодЦены
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(
                ,
                ВидЦены В
                    (ВЫБРАТЬ РАЗЛИЧНЫЕ
                        ВидыЦен.Ссылка КАК ВидЦены
                    ИЗ
                        Справочник.ВидыЦен КАК ВидыЦен
                    ГДЕ
                        (ВидыЦен.Наименование = "БазоваяRUB"
                            ИЛИ ВидыЦен.Наименование = "РасчетнаяUSDRUB"
                            ИЛИ ВидыЦен.Наименование = "РасчетнаяEURRUB"
                            ИЛИ ВидыЦен.Наименование = "НаценкаНаЗакупочнуюRUB"))) КАК ЦеныНоменклатурыСрезПоследних
        ПО ПоследнийПериодЦены.Номенклатура = ЦеныНоменклатурыСрезПоследних.Номенклатура
            И ПоследнийПериодЦены.Характеристика = ЦеныНоменклатурыСрезПоследних.Характеристика
            И ПоследнийПериодЦены.Период = ЦеныНоменклатурыСрезПоследних.Период
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатурыПоставщиков.СрезПоследних(
                ,
                Соглашение.ДоступноДляПродажиКлиентам
                    И Соглашение.Валюта = &Валюта) КАК ЦеныНоменклатурыПоставщиковСрезПоследних
        ПО ПоследнийПериодЦены.Номенклатура = ЦеныНоменклатурыПоставщиковСрезПоследних.Номенклатура
            И ПоследнийПериодЦены.Характеристика = ЦеныНоменклатурыПоставщиковСрезПоследних.Характеристика
            И ПоследнийПериодЦены.Период = ЦеныНоменклатурыПоставщиковСрезПоследних.Период
{ГДЕ
    ПоследнийПериодЦены.Номенклатура.*,
    ПоследнийПериодЦены.Характеристика.*,
    (ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Цена, ЦеныНоменклатурыПоставщиковСрезПоследних.Цена)) КАК Цена,
    (ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Валюта, ЦеныНоменклатурыПоставщиковСрезПоследних.Валюта)).* КАК Валюта}
1 falselight
 
26.04.18
10:36
Не пойму как поправить вот это условие что бы отбирался
только один вид цен "Прайс-лист".


      ВидЦены В
                (ВЫБРАТЬ РАЗЛИЧНЫЕ
                    ВидыЦен.Ссылка КАК ВидЦены
                ИЗ
                    Справочник.ВидыЦен КАК ВидыЦен
                ГДЕ
                    (ВидыЦен.Наименование = "БазоваяRUB"
                        ИЛИ ВидыЦен.Наименование = "РасчетнаяUSDRUB"
                        ИЛИ ВидыЦен.Наименование = "РасчетнаяEURRUB"
                        ИЛИ ВидыЦен.Наименование = "НаценкаНаЗакупочнуюRUB"))) КАК ЦеныНоменклатурыСрезПоследних
2 Lexey_
 
26.04.18
10:40
(1) ну это же элементарно, ломать не строить, попробуй хоть раз подумать сам
3 falselight
 
26.04.18
10:42
(2) Так вот не могу (((((
Перепробовал всяко разно, но выбирает всегда не правильно ((((
4 PR
 
26.04.18
10:44
Странная ветка
https://www.anekdot.ru/id/228589/
5 falselight
 
26.04.18
10:45
Вот делаю так, но он выбирает все подряд.


ВЫБРАТЬ
    ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Номенклатура, ЦеныНоменклатурыПоставщиковСрезПоследних.Номенклатура) КАК Номенклатура,
    ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Характеристика, ЦеныНоменклатурыПоставщиковСрезПоследних.Характеристика) КАК Характеристика,
    МАКСИМУМ(ВЫБОР
            КОГДА ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Период, ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)) > ЕСТЬNULL(ЦеныНоменклатурыПоставщиковСрезПоследних.Период, ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0))
                ТОГДА ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Период, ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0))
            ИНАЧЕ ЕСТЬNULL(ЦеныНоменклатурыПоставщиковСрезПоследних.Период, ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0))
        КОНЕЦ) КАК Период
ПОМЕСТИТЬ ПоследнийПериодЦены
ИЗ
    РегистрСведений.ЦеныНоменклатуры.СрезПоследних(
            ,
            ВидЦены = &ПрайсЛист
                    ) КАК ЦеныНоменклатурыСрезПоследних
        ПОЛНОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатурыПоставщиков.СрезПоследних(
                ,
                Соглашение.ДоступноДляПродажиКлиентам
                    И Соглашение.Валюта = &Валюта) КАК ЦеныНоменклатурыПоставщиковСрезПоследних
        ПО ЦеныНоменклатурыСрезПоследних.Номенклатура = ЦеныНоменклатурыПоставщиковСрезПоследних.Номенклатура
            И ЦеныНоменклатурыСрезПоследних.Характеристика = ЦеныНоменклатурыПоставщиковСрезПоследних.Характеристика

СГРУППИРОВАТЬ ПО
    ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Номенклатура, ЦеныНоменклатурыПоставщиковСрезПоследних.Номенклатура),
    ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Характеристика, ЦеныНоменклатурыПоставщиковСрезПоследних.Характеристика)

ИНДЕКСИРОВАТЬ ПО
    Номенклатура,
    Характеристика
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ПоследнийПериодЦены.Номенклатура КАК Номенклатура,
    ПоследнийПериодЦены.Характеристика КАК Характеристика,
    ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Цена, ЦеныНоменклатурыПоставщиковСрезПоследних.Цена) КАК Цена,
    ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Валюта, ЦеныНоменклатурыПоставщиковСрезПоследних.Валюта) КАК Валюта
{ВЫБРАТЬ
    Номенклатура.*,
    Характеристика.*,
    Цена,
    Валюта.*}
ИЗ
    ПоследнийПериодЦены КАК ПоследнийПериодЦены
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(
                ,
            ВидЦены = &ПрайсЛист
                        ) КАК ЦеныНоменклатурыСрезПоследних
        ПО ПоследнийПериодЦены.Номенклатура = ЦеныНоменклатурыСрезПоследних.Номенклатура
            И ПоследнийПериодЦены.Характеристика = ЦеныНоменклатурыСрезПоследних.Характеристика
            И ПоследнийПериодЦены.Период = ЦеныНоменклатурыСрезПоследних.Период
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатурыПоставщиков.СрезПоследних(
                ,
                Соглашение.ДоступноДляПродажиКлиентам
                    И Соглашение.Валюта = &Валюта) КАК ЦеныНоменклатурыПоставщиковСрезПоследних
        ПО ПоследнийПериодЦены.Номенклатура = ЦеныНоменклатурыПоставщиковСрезПоследних.Номенклатура
            И ПоследнийПериодЦены.Характеристика = ЦеныНоменклатурыПоставщиковСрезПоследних.Характеристика
            И ПоследнийПериодЦены.Период = ЦеныНоменклатурыПоставщиковСрезПоследних.Период
{ГДЕ
    ПоследнийПериодЦены.Номенклатура.*,
    ПоследнийПериодЦены.Характеристика.*,
    (ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Цена, ЦеныНоменклатурыПоставщиковСрезПоследних.Цена)) КАК Цена,
    (ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Валюта, ЦеныНоменклатурыПоставщиковСрезПоследних.Валюта)).* КАК Валюта}
6 PR
 
26.04.18
10:47
(5) И что? У тебя же полное соединение. А ты отбираешь только в одной таблице. Что не так-то?
7 falselight
 
26.04.18
10:55
(6) Как в одной таблице?
В итоговом запросе номенклатура с разными ценами, не нужными
нужно только прайс лист, я просто не понимаю что нужно править.
Думал достаточно условия вид цены.
8 falselight
 
26.04.18
10:58
(6) сам запрос (0) отбирает 4  цены. Мне нужно только одну прайс-лист. Я всяко пробовал ничего не получилось....
9 PR
 
26.04.18
10:58
(7) Рукалицо
Еще раз, у тебя отбор только в первой таблице, во второй нету
Что непонятного-то?
10 falselight
 
26.04.18
10:59
(9) как это нету????? и в первой и во второй есть
11 PR
 
26.04.18
11:00
(10) Хорошо, ты победил, пусть будет по-твоему
12 falselight
 
26.04.18
11:01
(11) Я проиграл.
Результата не добился.
13 falselight
 
26.04.18
11:01
Я делал по подобию как в (0) где там задается условие на 4 таблицы. Там и я задал на одну.
14 PR
 
26.04.18
11:02
(12) Это потому что нужно не спорить, а добавлять отбор во вторую таблицу соединения
15 falselight
 
26.04.18
11:09
(14) Я разве спорил? Я просто не виду.
16 PR
 
26.04.18
11:12
(15) Какое из слов в (6) тебе непонятно?
17 shadow_sw
 
26.04.18
11:14
(12) вот тут ветку можно закрывать

зы: вроде не пятница :)
18 systemstopper
 
26.04.18
11:14
ПОЛНОЕ соединение некошерно юзать
19 falselight
 
26.04.18
11:15
(17) Да закрывайте признана проф непригодность!!!!
Подписываюсь.\
20 falselight
 
26.04.18
11:16
(18) Так оно же в оригинальном запросе, он же нормально выбирает только 4 цены. Мне нужно 1. Я его правлю на одну он все равно как попало выбирает.
21 systemstopper
 
26.04.18
11:18
(20) я имел в виду что не по стандартам это, пофиг че у тебя там выбирает
22 falselight
 
26.04.18
11:19
(21) Сам запрос не по стандартам?
23 systemstopper
 
26.04.18
11:20
(22) сам запрос у тебя вообще трэш
24 falselight
 
26.04.18
11:22
(16) Мне не понятно как править этот запрос что бы получить требуемое.
25 falselight
 
26.04.18
11:41
(23) Это не мой запрос!!!!!!!!!
26 youalex
 
26.04.18
11:54
(25) теперь твой
27 falselight
 
26.04.18
13:22
(26) Нет не мой, я ликвидировался.
Выдавать глобальные идеи — это удовольствие; искать сволочные маленькие ошибки — вот настоящая работа. Фредерик Брукс-младший