Имя: Пароль:
1C
1С v8
Не работает левое соединение
,
0 kible
 
13.07.12
14:46
День добрый! К остаткам номенклатуры присоединяю цены, но при формировании запроса Типцен и Цена равны NULL

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


В чем проблема?
1 izekia
 
13.07.12
14:47
вот зачем сразу на соединение валить?
2 kible
 
13.07.12
14:48
(1) цены указаны
3 izekia
 
13.07.12
14:48
во первых ВЫРАЗИТЬ(ТиповойОстатки.Субконто1 КАК ...)
4 Hillsnake
 
13.07.12
14:49
период скорее всего
5 Irbis
 
13.07.12
14:49
(0) Судя по описанию как раз работает. И Null в левом соединении не признак что оно не работает.
6 izekia
 
13.07.12
14:49
в массиве субконто что? можно код?
7 gosn1ck
 
13.07.12
14:49
массив субконто не верно передан
8 Hillsnake
 
13.07.12
14:50
(7) да точно !
9 gosn1ck
 
13.07.12
14:50
а что за конфа? почему к регистру БП обращаемся?
10 izekia
 
13.07.12
14:50
(4) не, период тут ни при чем
11 ironkrab
 
13.07.12
14:52
(10) А если на эту дату цен нет?
12 ironkrab
 
13.07.12
14:53
(0)А номенклатуру выводит ?
13 izekia
 
13.07.12
14:53
(11) да сдается мне, что это текущая дата, и соответственно все там есть
14 kible
 
13.07.12
14:55
Всем спасибо! Извиняюсь год в документе установка цен перепутал.
15 izekia
 
13.07.12
14:57
(14) как ты мог
16 kible
 
13.07.12
14:58
(15) Пятницаааааааа
17 andrewks
 
13.07.12
14:58
"В чем проблема?"

проблема в том, что условие
ТиповойОстатки.Субконто1 = ЦеныНоменклатурыСрезПоследних.Номенклатура
не выполняется
18 izekia
 
13.07.12
15:00
(17) садись - два
19 andrewks
 
13.07.12
15:02
(18) ещё скажи, что я не прав
20 izekia
 
13.07.12
15:02
(19) да нет, ты что, это я тебя так похвалил
21 andrewks
 
13.07.12
15:09
(20) странный ты
22 izekia
 
13.07.12
15:09
ну почему по-твоему это условие не будет выполняться?
23 Ненавижу 1С
 
гуру
13.07.12
15:14
(22) ну если бы оно выполнялось, то наверное цены были бы, логично?
24 izekia
 
13.07.12
15:15
(23) => (14)
25 andrewks
 
13.07.12
15:15
(22) потому, что не нашлось ни одной пары записей, для которой бы оно выполнилось.
26 hhhh
 
13.07.12
15:16
(22) ну сказали ведь: если субконто1 склады, а субконто2 номенклатура.
27 andrewks
 
13.07.12
15:16
(24) и что? это не означает, что таблица ЦеныНоменклатурыСрезПоследних пустая. а, даже если и так, то сути это не меняет - пары записей, для которой выполняется условие, нет. в данном случае просто вообще пар таких не будет
28 izekia
 
13.07.12
15:19
(27) давайте без демагогии
29 Ненавижу 1С
 
гуру
13.07.12
15:20
(28) все правильно - условие не выполняется, другое дело, что возможно соединяемое множество оказалось заведомо плохим
30 izekia
 
13.07.12
15:24
(29) не бывает плохих множеств, бывают плохие программисты
31 Ненавижу 1С
 
гуру
13.07.12
15:24
(30) ну я же не буквально ))
32 andrewks
 
13.07.12
15:24
(28) без демагогии: в срезе последних у тебя три записи:
Тапки 20р
Сланцы 30 р
Чешки 40 р.

а тебе нужно получить цены для таблицы остатокв

Ботинки  100 шт
Сапоги  200 шт.

условие равенства по номенклатуре не выполняется, следовательно, получаешь NULL
Компьютер — устройство, разработанное для ускорения и автоматизации человеческих ошибок.