|
|
Соединение таблиц с регистром сведений |
☑ |
|
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
|
Да, сорри. Я тормоз )) Спасибо
|
|
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший