Имя: Пароль:
1C
 
Не выводятся нулевые остатки - почему?
0 jq
 
08.09.07
13:14
Хочу вывести в отчет и товары у кот. нулевые остатки. Добавил условие Есть Null и связал рег. Остатки с рег. ТоварыНаСкладах, а нулевые не выводятся - почему?

   "ВЫБРАТЬ
   |    ТоварыНаСкладахОстатки.Номенклатура КАК Номенклатура,
   |    СУММА(ВЫБОР
   |            КОГДА ТоварыНаСкладахОстатки.КоличествоОстаток ЕСТЬ NULL
   |                ТОГДА 0
   |            ИНАЧЕ ТоварыНаСкладахОстатки.КоличествоОстаток
   |        КОНЕЦ) КАК КоличествоОстаток,
   |    ТоварыНаСкладахОстатки.ХарактеристикаНоменклатуры
   |ИЗ
   |    РегистрНакопления.ТоварыНаСкладах КАК ТоварыНаСкладах
   |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки КАК ТоварыНаСкладахОстатки
   |        ПО ТоварыНаСкладах.Номенклатура = ТоварыНаСкладахОстатки.Номенклатура
   |            И ТоварыНаСкладах.Склад = ТоварыНаСкладахОстатки.Склад
   |ГДЕ
   |    ТоварыНаСкладахОстатки.Склад = &ВыбСклад
   |
   |СГРУППИРОВАТЬ ПО
   |    ТоварыНаСкладахОстатки.Номенклатура,
   |    ТоварыНаСкладахОстатки.ХарактеристикаНоменклатуры
   |
   |УПОРЯДОЧИТЬ ПО
   |    ТоварыНаСкладахОстатки.Номенклатура.Наименование"
1 Мимохожий Однако
 
08.09.07
13:15
Привяжи еще к справочнику Номенклатура
2 mikecool
 
08.09.07
13:16
+1 Номенклатура + левые соединения твоих регистров...
3 jq
 
08.09.07
13:17
Пытался, но тогда выдает: Неоднозначное поле Номенклатура.Ссылка
4 kumena
 
08.09.07
13:20
потому что нулевые остатки не хранятся в регистрах.
5 Мимохожий Однако
 
08.09.07
13:24
(3)Код покажи. Может и подскажут дальше
6 jq
 
08.09.07
13:32
"ВЫБРАТЬ
   |    ТоварыНаСкладахОстатки.Номенклатура КАК Номенклатура,
   |    СУММА(ВЫБОР
   |            КОГДА ТоварыНаСкладахОстатки.КоличествоОстаток ЕСТЬ NULL
   |                ТОГДА 0
   |            ИНАЧЕ ТоварыНаСкладахОстатки.КоличествоОстаток
   |        КОНЕЦ) КАК КоличествоОстаток,
   |    ТоварыНаСкладахОстатки.ХарактеристикаНоменклатуры
   |ИЗ
   |    РегистрНакопления.ТоварыНаСкладах.Остатки КАК ТоварыНаСкладахОстатки
   |        ПОЛНОЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК Номенклатура
   |        ПО ТоварыНаСкладахОстатки.Номенклатура = Номенклатура.Ссылка
   |ГДЕ
   |    ТоварыНаСкладахОстатки.Склад = &ВыбСклад
   |
   |СГРУППИРОВАТЬ ПО
   |    ТоварыНаСкладахОстатки.Номенклатура,
   |    ТоварыНаСкладахОстатки.ХарактеристикаНоменклатуры
   |
   |УПОРЯДОЧИТЬ ПО
   |    ТоварыНаСкладахОстатки.Номенклатура.Наименование"

Ошибка: Неоднозначное поле "Номенклатура.Ссылка"
ПО ТоварыНаСкладахОстатки.Номенклатура = <<?>>Номенклатура.Ссылка
7 IronDemon
 
08.09.07
13:40
ПОЛНОЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК Товар
ПО ТоварыНаСкладахОстатки.Номенклатура = Товар.Ссылка
8 jq
 
08.09.07
13:44
Ааа, у меня два раза "Как Номеннклатура", а я искал "Номенклатура.Ссылка" :)
9 jq
 
08.09.07
13:47
Все-равно нулевые остатки не выводятся :(
10 Defender aka LINN
 
08.09.07
14:00
(3) Псевдоним таблцы справочника поменять религия мешает?
(7) Не итите моск. ЛЕВОЕ соединение с таблицей номенклатуры. Для эстетов возможен вариант с ОБЪЕДИНИТЬ ВСЕ.
11 IronDemon
 
08.09.07
14:02
(10) запрос не я писал, я исправил ошибку с именами
12 jq
 
08.09.07
14:16
"ВЫБРАТЬ
   |    ТоварыНаСкладахОстатки.Номенклатура КАК Номенклатура,
   |    СУММА(ВЫБОР
   |            КОГДА ТоварыНаСкладахОстатки.КоличествоОстаток ЕСТЬ NULL
   |                ТОГДА 0
   |            ИНАЧЕ ТоварыНаСкладахОстатки.КоличествоОстаток
   |        КОНЕЦ) КАК КоличествоОстаток,
   |    ТоварыНаСкладахОстатки.ХарактеристикаНоменклатуры
   |ИЗ
   |    РегистрНакопления.ТоварыНаСкладах.Остатки КАК ТоварыНаСкладахОстатки
   |        ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК Товар
   |        ПО ТоварыНаСкладахОстатки.Номенклатура = Товар.Ссылка
   |ГДЕ
   |    ТоварыНаСкладахОстатки.Склад = &ВыбСклад
   |
   |СГРУППИРОВАТЬ ПО
   |    ТоварыНаСкладахОстатки.Номенклатура,
   |    ТоварыНаСкладахОстатки.ХарактеристикаНоменклатуры
   |
   |УПОРЯДОЧИТЬ ПО
   |    ТоварыНаСкладахОстатки.Номенклатура.Наименование"

Выдает только положительные остатки, я уже и левое соединение и полное пробовал, все одно и тоже.
13 k23
 
08.09.07
14:24
сказано же было в (4)
это же РегистрНакопления, нет там никаких остатков вообще, приращения там.
нужно выбирать всю номенклатуру, которой нет в РегистрНакопления.Остаток
14 Злобный Фей
 
08.09.07
14:29
Тупо навскидку:

ВЫБРАТЬ
   Товар.Ссылка,
   Товар.Представление,
   ТоварыНаСкладахОстатки.КоличествоОстаток
ИЗ
   Справочник.Номенклатура КАК Товар
       ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки КАК ТоварыНаСкладахОстатки
       ПО Товар.Ссылка = ТоварыНаСкладахОстатки.Номенклатура
ГДЕ
   ЕСТЬNULL(ТоварыНаСкладахОстатки.КоличествоОстаток,0) = 0
15 jq
 
08.09.07
14:52
Ничего не понимаю, а теперь почему не выводит?

"ВЫБРАТЬ
|    Товар.Ссылка КАК Ссылка,
|    СУММА(ВЫБОР
|            КОГДА ТоварыНаСкладахОстатки.КоличествоОстаток ЕСТЬ NULL
|                ТОГДА 0
|            ИНАЧЕ ТоварыНаСкладахОстатки.КоличествоОстаток КОНЕЦ) КАК КоличествоОстаток
|ИЗ
|    Справочник.Номенклатура КАК Товар
|        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки КАК ТоварыНаСкладахОстатки
|        ПО Товар.Ссылка = ТоварыНаСкладахОстатки.Номенклатура
|ГДЕ
|    ТоварыНаСкладахОстатки.Склад = &ВыбСклад
|
|СГРУППИРОВАТЬ ПО
|    Товар.Ссылка
|
|УПОРЯДОЧИТЬ ПО
|    Товар.Наименование"
16 mikecool
 
08.09.07
14:55
1) замени ВЫБОР на ЕСТЬНУЛЛ
2) а есть ли у тебя по этому складу нулевые остатки?
17 Злобный Фей
 
08.09.07
15:04
(16) 1. пох; 2. тоже пох.
(15) Автор, не тупи! Запрос правильный, но ГДЕ у тебя условие на нулевые остатки?
18 jq
 
08.09.07
15:07
Нулевые остатки есть, а как это вместо Выбор ЕстьNull ???
19 mikecool
 
08.09.07
15:09
(17) зачем какое-то условие???
20 mikecool
 
08.09.07
15:10
(18) вместо
ВЫБОР
|            КОГДА ТоварыНаСкладахОстатки.КоличествоОстаток ЕСТЬ NULL
|                ТОГДА 0
|            ИНАЧЕ ТоварыНаСкладахОстатки.КоличествоОстаток КОНЕЦ

можно записать

ЕСТЬNULL(ТоварыНаСкладахОстатки.КоличествоОстаток, 0)
21 jq
 
08.09.07
15:10
(17)Если я добавляю

ГДЕ
   ЕСТЬNULL(ТоварыНаСкладахОстатки.КоличествоОстаток,0) = 0

тогда вообще ничего не выводит...
22 Злобный Фей
 
08.09.07
15:13
(18) Йоптыть, твое

|    СУММА(ВЫБОР
|            КОГДА ТоварыНаСкладахОстатки.КоличествоОстаток ЕСТЬ NULL
|                ТОГДА 0
|            ИНАЧЕ ТоварыНаСкладахОстатки.КоличествоОстаток КОНЕЦ) КАК КоличествоОстаток

это ПОЛЕ. Т.е. если совсем по тупому, тут ты определяешь, чаво у тя в отчет попадет в колонку остаток. На строки в выборке ето никак не влияет.

ГДЕ
   ЕСТЬNULL(ТоварыНаСкладахОстатки.КоличествоОстаток,0) = 0
23 mikecool
 
08.09.07
15:13
(21) не слушай фея... а если с твоим условием ничего не выводит - значит нет
нулевых остатков...
24 jq
 
08.09.07
15:14
(22)Ничего не выводит:

"ВЫБРАТЬ
|    Товар.Ссылка КАК Ссылка
|ИЗ
|    Справочник.Номенклатура КАК Товар
|        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки КАК ТоварыНаСкладахОстатки
|        ПО Товар.Ссылка = ТоварыНаСкладахОстатки.Номенклатура
|ГДЕ
|    ТоварыНаСкладахОстатки.Склад = &ВыбСклад
|    И ЕСТЬNULL(ТоварыНаСкладахОстатки.КоличествоОстаток,0) = 0
|
|СГРУППИРОВАТЬ ПО
|    Товар.Ссылка
|
|УПОРЯДОЧИТЬ ПО
|    Товар.Наименование"
25 Злобный Фей
 
08.09.07
15:14
(19) Да, это уже я туплю. Мне чета прочиталось, что автору надо только нулевые ((
26 Defender aka LINN
 
08.09.07
15:14
(15)

|ГДЕ
|    ТоварыНаСкладахОстатки.Склад = &ВыбСклад

Вопросы?
27 mikecool
 
08.09.07
15:14
+23 еще раз повторю - никаких условий для получения нулевых остатков не
требуется, достаточно к номенклатуре левым соединением привязать регистр
остатков...
когда же уже будем т-скл учить?
28 jq
 
08.09.07
15:16
(23)Остатки есть (всмысле нулевые), т.к. у меня запрос выводил товары у которых только нулевые остатки. А мне надо, чтобы выводились все товары, и с нулевыми и с положительными.
29 jq
 
08.09.07
15:17
Сейчас еще попробую...
30 Злобный Фей
 
08.09.07
15:19
тады убери

|     И ЕСТЬNULL(ТоварыНаСкладахОстатки.КоличествоОстаток,0) = 0

и буит те щастье
31 Defender aka LINN
 
08.09.07
15:20
(30) Злобный, что чего, на? Да ты ПОСМОТРИ на этот запрос в (15)...
32 Злобный Фей
 
08.09.07
15:22
(27) Дадада, ты прав. Тока вот не надо мну скуль учить, я его лет десять назад изучал и с тех пор перманентно юзаю
33 Злобный Фей
 
08.09.07
15:26
(31) Не придирайся. Автору вывалится товар со всех складов. Ну и пох. Че, я за него буду думать, как номенклатуру отфильтровать по складам?
34 Defender aka LINN
 
08.09.07
15:28
(33) Да понятно, я тоже не собираюсь это делать :)
35 Злобный Фей
 
08.09.07
15:33
Вот у меня на тек проекте всё просто. Два склада,  на самом деле просто на две зоны разделили: в одной большой товар, в другой - мелкий. И тупо сделали реквизит "Склад" у номенклатуры. А чё там у автора - хрен ево знает. В общем случае для УТ он не сможет получить интересующую его инфу в принципе.
Однако это всё какая-то телепатия
36 jq
 
08.09.07
15:33
Т.е. как я понимаю все свелось к тому, что:

"ВЫБРАТЬ
|    Товар.Ссылка КАК Ссылка,
|    ТоварыНаСкладахОстатки.КоличествоОстаток
|ИЗ
|    Справочник.Номенклатура КАК Товар
|        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки КАК ТоварыНаСкладахОстатки
|        ПО Товар.Ссылка = ТоварыНаСкладахОстатки.Номенклатура
|ГДЕ
|    ТоварыНаСкладахОстатки.Склад = &ВыбСклад
|
|СГРУППИРОВАТЬ ПО
|    Товар.Ссылка,
|    ТоварыНаСкладахОстатки.КоличествоОстаток
|
|УПОРЯДОЧИТЬ ПО
|    Товар.Наименование"

выводит только положительные остатки по выбранному складу, а если убрать условие

|ГДЕ
|    ТоварыНаСкладахОстатки.Склад = &ВыбСклад

тогда выводит по всем складам и нулевые остатки и положительные, а теперь получается надо отдельно результат запроса фильтровать?
37 Defender aka LINN
 
08.09.07
15:35
(35) "в общем случае для УТ он не сможет получить интересующую его инфу в принципе." - меняй приципы.
(36) Нет, это получается, только если документацию не читать. Кто документацию читает, тот сразу получает нужный результат.
38 Злобный Фей
 
08.09.07
15:36
(36) ..выводит только положительные остатки по выбранному складу.. и нулевые остатки по ВСЕЙ номенклатуре из твоей базы
39 Злобный Фей
 
08.09.07
15:40
(37) Давай, говори полностью. Какие принципы нужно поменять? Обычно у мну две проблемы: 1 неправильно прочитал/понял условие задачи, 2 плохо знаю конфу
40 jq
 
08.09.07
15:41
(38)...выводит только положительные остатки по выбранному складу.. и нулевые остатки по ВСЕЙ номенклатуре из твоей базы... КРОМЕ заданного склада, по нему положительные остатки не выводятся, у меня вроде так
41 Злобный Фей
 
08.09.07
15:46
Ну вас, вы меня совсем запутали, пойду выпью исчо вотке, бо народ уже негодует.
ЗЫ: Объясните плиз поподробнее чаво нуна получить в итоге
ЗЗЫ: а мот я просто уже немного того и туплю...
42 jq
 
08.09.07
15:48
Мне надо, чтобы выводились все товары, и с нулевыми остатками и с положительными
43 Defender aka LINN
 
08.09.07
15:49
(39) Параметры виртуальных таблиц.
44 Злобный Фей
 
08.09.07
15:52
(43) Енто касается исключительно быстродействия. Да ГДЕ работает звиздец как медленнее, чем параметр, ну и фигле? Зато очень наглядно. Если автор задаст условие в параметр вирт таблицы ему станет легче? Вопрос с нулевыми остатками тут при чём?
45 Злобный Фей
 
08.09.07
15:56
К тому же (можете не верить) первым постом в треде хотел обратить на это внимание, но забыл :)
46 Defender aka LINN
 
08.09.07
16:02
(44) Да при том. И наглядность тут вредна, особенное если вы с автором пойймете, что номенклатуры с нулевым остатком в таблице регистра не будет. А следовательно, условиее ее отбрости, бо там NULL, а не склад.
Элементарные, блин, вещи...
47 Злобный Фей
 
08.09.07
16:14
(46) Или я хреново понял задачу, или ты..
48 Злобный Фей
 
08.09.07
17:00
да що вы говорите... Интересно, туплю я или ты?...
49 Defender aka LINN
 
08.09.07
18:41
(48) Скорее ты.
"Енто касается исключительно быстродействия" - не только
"Если автор задаст условие в параметр вирт таблицы ему станет легче?" - еще как
"Вопрос с нулевыми остатками тут при чём?" - условие в "ГДЕ" их отсекло.
50 Фулиган
 
09.09.07
17:32
Эээ. А вооще не проще взять оборотный регистр и получить нулевые остатки если был оборот?
51 Сюзи
 
09.09.07
17:57
(42) попробуй так
"ВЫБРАТЬ
|ТоварыНаСкладахОстатки.Номенклатура,
|ТоварыНаСкладахОстатки.КоличествоОстаток
|ИЗ
|Справочник.Номенклатура КАК СпрНоменклатура
|ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки(&ПарДата, Склад = &ВыбСклад) КАК ТоварыНаСкладахОстатки
|ПО СпрНоменклатура.Ссылка = ТоварыНаСкладахОстатки. Номенклатура ";
52 jq
 
09.09.07
18:36
(51)Почти то что надо, только получается, что если нулевой остаток, то и номенклатуру не показывает, т.е. выводит полностью пустую строчку...
Проблемы невозможно решaть нa том же уровне компетентности, нa котором они возникaют. Альберт Эйнштейн