Имя: Пароль:
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) фигасе, не знал, что там есть
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn