![]() |
![]() |
![]() |
|
v8: Помогите с простым запросом | ☑ | ||
---|---|---|---|---|
0
BoaBela
11.03.13
✎
15:44
|
Простой запрос, а не пойму как вывести данные.
Помогите.....мне нужно вывести весь товар на остатке и к нему прицепить цены по типам цены.....Но получается если нет цены, то товар вообще не выводится..........а мне нужно чтобы с нулевой ценой выводился... Вот текст запроса: ВЫБРАТЬ РАЗРЕШЕННЫЕ ТоварыНаСкладахОстатки.Склад, ТоварыНаСкладахОстатки.Номенклатура, ТоварыНаСкладахОстатки.ХарактеристикаНоменклатуры, ТоварыНаСкладахОстатки.КоличествоОстаток, ЦеныНоменклатурыСрезПоследних.ТипЦен, ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Цена,2) как цена {ВЫБРАТЬ Склад.*, Номенклатура.*, ХарактеристикаНоменклатуры.*, КоличествоОстаток, ТипЦен.*, Цена} ИЗ РегистрНакопления.ТоварыНаСкладах.Остатки(&ДатаКон, ) КАК ТоварыНаСкладахОстатки ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних КАК ЦеныНоменклатурыСрезПоследних ПО ТоварыНаСкладахОстатки.Номенклатура = ЦеныНоменклатурыСрезПоследних.Номенклатура {ГДЕ ТоварыНаСкладахОстатки.Склад.*, ТоварыНаСкладахОстатки.Номенклатура.*, ТоварыНаСкладахОстатки.ХарактеристикаНоменклатуры.*, ТоварыНаСкладахОстатки.КоличествоОстаток, ЦеныНоменклатурыСрезПоследних.ТипЦен.*, ЦеныНоменклатурыСрезПоследних.Цена} {УПОРЯДОЧИТЬ ПО Склад.*, Номенклатура.*, ХарактеристикаНоменклатуры.*, КоличествоОстаток, ТипЦен.*, Цена} ИТОГИ ПО ОБЩИЕ {ИТОГИ ПО Склад.*, Номенклатура.*, ТипЦен.*} АВТОУПОРЯДОЧИВАНИЕ Что не так? |
|||
1
tdm
11.03.13
✎
15:46
|
на этом форуме обычно в заголовке темы столько воскл.знаков не ставят, не принято
|
|||
2
rbcvg
11.03.13
✎
15:46
|
ЕСТЬNULL?
|
|||
3
BoaBela
11.03.13
✎
15:47
|
Есть ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Цена,2) как цена
|
|||
4
drcrasher
11.03.13
✎
15:47
|
(2) здравая мысль, если соединять правильно
|
|||
5
Конфигуратор1с
11.03.13
✎
15:48
|
(0) вообще при левом соединении накладывание условий на левую таблицу превращает левое соединение неявно к внутреннему
|
|||
6
BoaBela
11.03.13
✎
15:48
|
я неправильно соединила? Левым соединением....но если вообще небыло установлено цены по такому типу цены то товар без цены не выводится
|
|||
7
mistеr
11.03.13
✎
15:49
|
Отбор на ЦеныНоменклатурыСрезПоследних превращает левое соединение во внутреннее.
Эти условия перенести в ПО и передавать параметрами. |
|||
8
НЕА123
11.03.13
✎
15:49
|
(0)
>Но получается если нет цены, то товар вообще не выводится точно не выводится, если нет цены? |
|||
9
GANR
11.03.13
✎
15:50
|
(0) Построитель? Тогда посмотри Построитель.ПолучитьЗапрос()
|
|||
10
НафНаф
11.03.13
✎
15:50
|
где фото?
|
|||
11
Конфигуратор1с
11.03.13
✎
15:50
|
(8) точно. Зуб BoaBela даю
|
|||
12
BoaBela
11.03.13
✎
15:50
|
Строки, группировки по товару не выводятся вообще! А вот если цена установлена, то товар тогда выводится...
|
|||
13
Конфигуратор1с
11.03.13
✎
15:50
|
(10) +100500
|
|||
14
Конфигуратор1с
11.03.13
✎
15:51
|
а в вообще нафига это все нагородили?
|
|||
15
BoaBela
11.03.13
✎
15:51
|
вообще при левом соединении накладывание условий на левую таблицу превращает левое соединение неявно к внутреннему
что это означает? |
|||
16
Конфигуратор1с
11.03.13
✎
15:52
|
это значит что если Вы пишите Выбрать * из таблицы1 левое соединение таблица2 где таблица2.какоетополе = чемуто, то это тоже самое что Вы напишите Выбрать * из таблицы1 врутреннее соединение таблица2 где таблица2.какоетополе = чемуто
|
|||
17
BoaBela
11.03.13
✎
15:53
|
Плиз, подскажите как нужно сделать запрос(но обязательно через построитель!)
|
|||
18
Конфигуратор1с
11.03.13
✎
15:54
|
(17) построитель древнее моих носков. Юзайте скд
|
|||
19
BoaBela
11.03.13
✎
15:54
|
у меня я так понимаю есть значение Таблицы1 а вот значения по номенклатуре в Таблица2 - вообще нет!
|
|||
20
Конфигуратор1с
11.03.13
✎
15:55
|
(19) правильно. поэтому отбор на второе значение будет всегда ложью
|
|||
21
BoaBela
11.03.13
✎
15:55
|
Мне нужно доработать стандартный отчет, а он ссылается на Универсальный отчет, а там построитель...деваться некуда
|
|||
22
GANR
11.03.13
✎
15:56
|
(15) Из результирующей таблицы, возвращаемой запросом, уйдут все строки, для которых не найдены записи по условию в п р а в о й таблице - будет тот же результат, что при внутреннем (в (5) небольшая опечатка).
|
|||
23
GANR
11.03.13
✎
15:56
|
(17) что показывает (9) ???
|
|||
24
фросия
11.03.13
✎
15:57
|
(17) условие для второй таблицы из ГДЕ перенести в ПО.
|
|||
25
BoaBela
11.03.13
✎
15:59
|
Условия ГДЕ мне нужны только для отбора значений в построителе и на ПО никак не влияют
|
|||
26
Конфигуратор1с
11.03.13
✎
15:59
|
С построителем не работал, но как то так попробуйте, если не заморачиваться
ВЫБРАТЬ РАЗРЕШЕННЫЕ Вложенный.Склад, Вложенный.Номенклатура, Вложенный.ХарактеристикаНоменклатуры, Вложенный.КоличествоОстаток, Вложенный.ТипЦен, Вложенный.цена {ВЫБРАТЬ Склад.*, Номенклатура.*, ХарактеристикаНоменклатуры.*, КоличествоОстаток, ТипЦен.*, цена} ИЗ (ВЫБРАТЬ ТоварыНаСкладахОстатки.Склад КАК Склад, ТоварыНаСкладахОстатки.Номенклатура КАК Номенклатура, ТоварыНаСкладахОстатки.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры, ТоварыНаСкладахОстатки.КоличествоОстаток КАК КоличествоОстаток, ЦеныНоменклатурыСрезПоследних.ТипЦен КАК ТипЦен, ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Цена, 2) КАК цена ИЗ РегистрНакопления.ТоварыНаСкладах.Остатки(&ДатаКон, ) КАК ТоварыНаСкладахОстатки ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних КАК ЦеныНоменклатурыСрезПоследних ПО ТоварыНаСкладахОстатки.Номенклатура = ЦеныНоменклатурыСрезПоследних.Номенклатура) КАК Вложенный {ГДЕ Вложенный.Склад.*, Вложенный.Номенклатура.*, Вложенный.ХарактеристикаНоменклатуры.*, Вложенный.КоличествоОстаток, Вложенный.ТипЦен.*, Вложенный.цена} {УПОРЯДОЧИТЬ ПО Склад.*, Номенклатура.*, ХарактеристикаНоменклатуры.*, КоличествоОстаток, ТипЦен.*, цена} ИТОГИ ПО ОБЩИЕ {ИТОГИ ПО Склад.*, Номенклатура.*, ТипЦен.*} АВТОУПОРЯДОЧИВАНИЕ |
|||
27
Конфигуратор1с
11.03.13
✎
16:00
|
(22) да, спасибки. я это, путаю лево с права(((
|
|||
28
фросия
11.03.13
✎
16:01
|
(25) ПО это не построитель отчетов имеется ввиду, а условие соединение таблиц: ЛЕВОЕ СОЕДИНЕНИЕ ...ПО ...(вот сюда перенесите)
|
|||
29
BoaBela
11.03.13
✎
16:04
|
Значит так....я сейчас просто в Консоль отчетов добавила вообще простой запрос:
ВЫБРАТЬ РАЗРЕШЕННЫЕ ТоварыНаСкладахОстатки.Склад, ТоварыНаСкладахОстатки.Номенклатура, ТоварыНаСкладахОстатки.ХарактеристикаНоменклатуры, ТоварыНаСкладахОстатки.КоличествоОстаток, ЦеныНоменклатурыСрезПоследних.ТипЦен, ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Цена, 2) КАК цена ИЗ РегистрНакопления.ТоварыНаСкладах.Остатки(&ДатаКон, ) КАК ТоварыНаСкладахОстатки ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних КАК ЦеныНоменклатурыСрезПоследних ПО ТоварыНаСкладахОстатки.Номенклатура = ЦеныНоменклатурыСрезПоследних.Номенклатура ИТОГИ ПО ОБЩИЕ АВТОУПОРЯДОЧИВАНИЕ И просто на закладке отбор указала тип цены. Так вот при таком запросе если тип цены не указываю, то строка с остатком выводится, а если указываю, то товар не выводится... |
|||
30
mistеr
11.03.13
✎
16:05
|
(28) Один раз не заметила, думаю и во второй не заметит.
|
|||
31
Конфигуратор1с
11.03.13
✎
16:07
|
(29) сделайте во вложенном запросе и будет Вам счастье. Временно
|
|||
32
фросия
11.03.13
✎
16:07
|
(29) читайте еще раз: когда в условиях запроса указываете в разделе ГДЕ условия для второй табличке- вы отсекаете из первой таблички те записи которым нет соответствия во второй
|
|||
33
Конфигуратор1с
11.03.13
✎
16:07
|
а вообще у Вас ничего не получится, пока фотку не выложите
|
|||
34
фросия
11.03.13
✎
16:08
|
(30) я тоже не спервого раза поняла почему так. так что шанс есть
|
|||
35
Конфигуратор1с
11.03.13
✎
16:09
|
(34) а это потому, что у Вас тоже фотки нет)
|
|||
36
Фауст
11.03.13
✎
16:09
|
Условие по типу цен перенеси в параметры виртуальной таблицы "СрезПоследних"
вот так: ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&ТипЦен) КАК ЦеныНоменклатурыСрезПоследних из ГДЕ тип цен убери. |
|||
37
Фауст
11.03.13
✎
16:10
|
СрезПоследних(ТипЦен = &ТипЦен), то есть так
|
|||
38
Конфигуратор1с
11.03.13
✎
16:10
|
Кстати, в срез последних не мешало бы дату задать
|
|||
39
BoaBela
11.03.13
✎
16:10
|
Значит так...со вложенным запросом (как описал Конфигуратор1с) тоже ничего не работает, думаете я ничего не пробовала пока не обратилась за помощью....и вложенные и не вложенные...
|
|||
40
BoaBela
11.03.13
✎
16:12
|
ВЫБРАТЬ РАЗРЕШЕННЫЕ
Вложенный.Склад, Вложенный.Номенклатура, Вложенный.ХарактеристикаНоменклатуры, Вложенный.КоличествоОстаток, Вложенный.ТипЦен, Вложенный.цена ИЗ (ВЫБРАТЬ ТоварыНаСкладахОстатки.Склад КАК Склад, ТоварыНаСкладахОстатки.Номенклатура КАК Номенклатура, ТоварыНаСкладахОстатки.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры, ТоварыНаСкладахОстатки.КоличествоОстаток КАК КоличествоОстаток, ЦеныНоменклатурыСрезПоследних.ТипЦен КАК ТипЦен, ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Цена, 0) КАК цена ИЗ РегистрНакопления.ТоварыНаСкладах.Остатки(&ДатаКон, ) КАК ТоварыНаСкладахОстатки ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&ДатаКон, ) КАК ЦеныНоменклатурыСрезПоследних ПО ТоварыНаСкладахОстатки.Номенклатура = ЦеныНоменклатурыСрезПоследних.Номенклатура) КАК Вложенный ИТОГИ ПО ОБЩИЕ АВТОУПОРЯДОЧИВАНИЕ И с датой тоже не работает.... |
|||
41
фросия
11.03.13
✎
16:12
|
(39) из ГДЕ условия для второй таблицы уберите.
|
|||
42
GANR
11.03.13
✎
16:13
|
А если как-нибудь так?
ВЫБРАТЬ ТоварыНаСкладахОстатки.Номенклатура, ТоварыНаСкладахОстатки.Характеристика, ТоварыНаСкладахОстатки.Склад, ТоварыНаСкладахОстатки.Помещение, ТоварыНаСкладахОстатки.Серия, ТоварыНаСкладахОстатки.ВНаличииОстаток, ТоварыНаСкладахОстатки.КОтгрузкеОстаток, ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.ВидЦены, ЗНАЧЕНИЕ(Справочник.ВидыЦен.ПустаяСсылка)) КАК ВидЦены, ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Цена, 0) КАК Цена ИЗ РегистрНакопления.ТоварыНаСкладах.Остатки(, {(Номенклатура).*, (Помещение).*, (Серия).*, (Склад).*, (Характеристика).*}) КАК ТоварыНаСкладахОстатки ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(, {(Валюта).*, (Номенклатура).*, (Регистратор).*, (Упаковка).*, (Характеристика).*}) КАК ЦеныНоменклатурыСрезПоследних ПО ТоварыНаСкладахОстатки.Номенклатура = ЦеныНоменклатурыСрезПоследних.Номенклатура И ТоварыНаСкладахОстатки.Характеристика = ЦеныНоменклатурыСрезПоследних.Характеристика Этот запрос у ТС не откроется - конфигурация другая. Это только идеи. |
|||
43
фросия
11.03.13
✎
16:14
|
(40) должно работать вроде, если это весь запрос
|
|||
44
BoaBela
11.03.13
✎
16:14
|
(37)СрезПоследних(ТипЦен = &ТипЦен), то есть так
мне не подходит, потому как запрос будет через построитель и эти параметры будут задаваться в отборе построителя |
|||
45
GANR
11.03.13
✎
16:16
|
(44) см. (42).
|
|||
46
Конфигуратор1с
11.03.13
✎
16:19
|
(44) отчет на почту бросьте
|
|||
47
BoaBela
11.03.13
✎
16:20
|
Сделала как в (42):
ВЫБРАТЬ ТоварыНаСкладахОстатки.Номенклатура, ТоварыНаСкладахОстатки.ХарактеристикаНоменклатуры, ТоварыНаСкладахОстатки.Склад, ТоварыНаСкладахОстатки.КоличествоОстаток, ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.ТипЦен, ЗНАЧЕНИЕ(Справочник.ТипыЦенНоменклатуры.ПустаяСсылка)) КАК ТипЦен, ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Цена, 0) КАК Цена ИЗ РегистрНакопления.ТоварыНаСкладах.Остатки(&ДатаКон, {(Номенклатура).*}) КАК ТоварыНаСкладахОстатки ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&ДатаКон, {(Номенклатура).*}) КАК ЦеныНоменклатурыСрезПоследних ПО ТоварыНаСкладахОстатки.Номенклатура = ЦеныНоменклатурыСрезПоследних.Номенклатура И ТоварыНаСкладахОстатки.ХарактеристикаНоменклатуры = ЦеныНоменклатурыСрезПоследних.ХарактеристикаНоменклатуры И та же петрушка........ |
|||
48
GANR
11.03.13
✎
16:21
|
(44)(46) лучше на files.mail.ru, а ссылку - в ветку
|
|||
49
BoaBela
11.03.13
✎
16:23
|
У меня используется - Конфигурация: Управление торговым Предприятием для Украины 1.2.13.2 (это так на всякий случай)
|
|||
50
Конфигуратор1с
11.03.13
✎
16:32
|
(49) сестра)
|
|||
51
BoaBela
11.03.13
✎
16:44
|
||||
52
Фауст
11.03.13
✎
17:05
|
(44) тогда как то так:
СрезПоследних(,{(ТипЦен) КАК ОТборПоТипуЦен}) Из ГДЕ условие убери. |
|||
53
BoaBela
12.03.13
✎
17:22
|
Файлик разместила, никаких предложений нет? Я уже думаю сделать отдельным отчетом с перебором всех позиций с остатками и подбора цены на дату
|
|||
54
GANR
12.03.13
✎
17:27
|
(53) Возможно, от построителя придется отказаться. Понять, как работает построитель поможет метод Построитель.ПолучитьЗапрос(). Но то, что это можно сделать в рамках одного запроса - факт. (42), видимо, не работает из-за того, что построитель пихает условие в секцию ГДЕ.
|
|||
55
GANR
12.03.13
✎
17:28
|
+(54) в секцию ГДЕ на поле правой таблицы
|
|||
56
BoaBela
12.03.13
✎
18:15
|
может быть...вот и хотелось бы понять....
|
|||
57
GANR
12.03.13
✎
19:15
|
(56) 3-й раз за ветку говорю Построитель.ПолучитьЗапрос() поможет понять
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |