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


То есть в этом запросе я хочу увидеть остаток по номенклатуре и цену. Проблема: строка выводится в отчет только если цена на неё установлена. Если остаток есть, но нет цены, то строка теряется. Если я правильно понимаю как работает правое соединение, то номенклатура должна вывестись полностью (где есть остатки), а цена дописывается если она есть; а если нету - то null.

Вопросы: 1) Почему не работает правое соединение?
2) Как сделать так чтобы работало?
1 rs_trade
 
28.06.12
13:07
(0) для начала, параметры вирт. таблицы где?
2 sanja26
 
28.06.12
13:08
ГДЕ
   ЦеныНоменклатурыСрезПоследних.ТипЦен = &ТипЦен d gfhfvtnhs
3 sanja26
 
28.06.12
13:08
в параметры вирт. таблицы
4 ДенисЧ
 
28.06.12
13:08
Поменяй местами таблицы и присоеднияй цены слева к остаткам.
5 ZanderZ
 
28.06.12
13:09
(0) не правильно ты понимаешь если ты пишешь
ГДЕ
   ЦеныНоменклатурыСрезПоследних.ТипЦен = &ТипЦен - это уже к результирующей таблицы
в соединение запихай условие
6 DasTPID
 
28.06.12
13:12
(5)!!!!! Спасибо, кажется я понял
7 rs_trade
 
28.06.12
13:33
(6) покажи конечный запрос. посмотрим как ты понял.
8 DasTPID
 
28.06.12
13:44
(7) Ну самое простое это

ГДЕ
   ЦеныНоменклатурыСрезПоследних.ТипЦен = &ТипЦен ИЛИ ЦеныНоменклатурыСрезПоследних.ТипЦен IS NULL
9 SanGvin
 
28.06.12
13:56
(8) а не проще так:


ВЫБРАТЬ
   ПартииТоваровНаСкладахОстатки.Номенклатура,
   ПартииТоваровНаСкладахОстатки.Склад,
   ПартииТоваровНаСкладахОстатки.КоличествоОстаток,
   ЦеныНоменклатурыСрезПоследних.Цена
ИЗ
   РегистрНакопления.ПартииТоваровНаСкладах.Остатки(&Дата, ) КАК ПартииТоваровНаСкладахОстатки
       ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&Дата, ТипЦен = &ТипЦен) КАК ЦеныНоменклатурыСрезПоследних
       ПО (ЦеныНоменклатурыСрезПоследних.Номенклатура = ПартииТоваровНаСкладахОстатки.Номенклатура)
10 SanGvin
 
28.06.12
13:57
+(9) в этом случае, если я прально понял твои потребности, ты получишь остатки в любом случае и последние цены с указанным типом если они есть.
11 rs_trade
 
28.06.12
14:05
(8) букварь тебе читать надо. запросы писать рано.
12 DasTPID
 
28.06.12
14:28
(9) Действительно так проще
13 DasTPID
 
04.07.12
11:56
РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&Дата, ТипЦен = &ТипЦен)

По какому ключевому слову в СП можно прочитать о такой конструкции? Имеется в виду как задавать параметры в круглых скобках
14 izekia
 
04.07.12
11:57
(!3) сп
15 Fragster
 
гуру
04.07.12
11:58
(13) не СП, а встроенная справка!
16 Ненавижу 1С
 
гуру
04.07.12
11:58
(13) Работа с запросами->Таблицы запросов->...->Параметры
17 Ненавижу 1С
 
гуру
04.07.12
11:59
(15) в СП тоже есть
18 izekia
 
04.07.12
11:59
(15) когда это синтакс-помощник стал встроенной справкой?
19 DasTPID
 
04.07.12
12:00
(16) Нашёл, спасибо
20 Fragster
 
гуру
04.07.12
12:00
(18) я грю, про запросы читать лучше во встроенной справке
(16) фигасе, не знал, что там есть
Оптимист верит, что мы живем в лучшем из миров. Пессимист боится, что так оно и есть.