Имя: Пароль:
1C
1С v8
Соединение таблиц с регистром сведений
0 dimonram1978
 
30.09.13
11:23
День добрый.

Может я что то не понимаю, но например есть две таблицы:

Спр.Номенклатура  
Артикул Товар
001    Балалайка
002    Гусли
003    Арфа

РС.Цены
Номенклатура Цена
Балалайка   150
Гусли  
Арфа  200

Хочу выбрать в запросе всю номенклатуру и соединить с регистром сведений, чтобы вывелась вся номенклатура и цены, и если цены нет, то Null.
Запрос:
ВЫБРАТЬ
    Номенклатура1.Артикул,
    Номенклатура1.Ссылка,
    ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Цена, 0) КАК Поле1
ИЗ
    Справочник.Номенклатура КАК Номенклатура1
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних КАК ЦеныНоменклатурыСрезПоследних
        ПО (Номенклатура1.Ссылка = ЦеныНоменклатурыСрезПоследних.Номенклатура)


В итоге получаю в результате только те товары на которые цены есть, если цена не задана, то в результате такой товар не отображается.
В чем проблема? Если соединять с регистром накопления левым соединением результат всегда нормальный...
1 Галахад
 
гуру
30.09.13
11:28
Откуда уверенность, что не работает?
2 Crush
 
30.09.13
11:53
(0) Тут никто не поймет. Запрос правильный.
Есть что то еще.. Либо запрос не целиком выложил, либо - это источник данных для скд, а там отбор.
Выполни свой запрос в консоли и всё должно работать
3 dimonram1978
 
30.09.13
12:10
Да, я забыла написать, что идет еще отбор по типу цен:

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

Без этого отбора запрос таки выдает все цены, а том числе и пустые. Но у некоторых товаров может быть 2 и 3 и 4 типа цен. А я хочу получить только одного типа цены и нули, если таких цен у товаров нет.
4 Sammo
 
30.09.13
12:15
И ЦеныНоменклатурыСрезПоследних.ТипЦен = &ТипЦен

Приводит к тому, что соединение становится внутренним.
Классика.
Вынести в ПО
5 Галахад
 
гуру
30.09.13
12:15
Вот тут ошибка:

И ЦеныНоменклатурыСрезПоследних.ТипЦен = &ТипЦен
6 dimonram1978
 
30.09.13
12:25
Каким образом можно получить такую таблицу с выбранным типом цен и нулями, когда цен нет?
7 Ненавижу 1С
 
гуру
30.09.13
12:27
ВЫБРАТЬ
    Номенклатура1.Артикул,
    Номенклатура1.Ссылка,
    ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Цена, 0) КАК Поле1
ИЗ
    Справочник.Номенклатура КАК Номенклатура1
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(,ТипЦен = &ТипЦен) КАК ЦеныНоменклатурыСрезПоследних
        ПО (Номенклатура1.Ссылка = ЦеныНоменклатурыСрезПоследних.Номенклатура)
ГДЕ
    НЕ Номенклатура1.ЭтоГруппа
    И НЕ Номенклатура1.ПометкаУдаления
8 dimonram1978
 
30.09.13
12:36
Да, сорри. Я тормоз )) Спасибо
AdBlock убивает бесплатный контент. 1Сергей