![]() |
![]() |
![]() |
|
Помогите найти ошибку в запросе | ☑ | ||
---|---|---|---|---|
0
Joshim
19.09.11
✎
14:08
|
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ | ТоварыКПолучениюНаСкладыОстатки.Номенклатура КАК Номенклатура, | СУММА(ТоварыКПолучениюНаСкладыОстатки.КоличествоОстаток) КАК КоличествоОстатокКомпании |ИЗ | РегистрНакопления.ТоварыКПолучениюНаСклады.Остатки( | , | ДокументПолучения ССЫЛКА Документ.ПриходныйОрдерНаТовары | И (ДокументПолучения.Дата МЕЖДУ &ПарНачПериода И &ПарКонПериода)) КАК ТоварыКПолучениюНаСкладыОстатки | |СГРУППИРОВАТЬ ПО | ТоварыКПолучениюНаСкладыОстатки.Номенклатура | |УПОРЯДОЧИТЬ ПО | Номенклатура"; Запрос.УстановитьПараметр("ПарНачПериода", НачПериода); Запрос.УстановитьПараметр("ПарКонПериода", КонПериода); Условие по дате отрабатывает не верно? |
|||
1
cViper
19.09.11
✎
14:10
|
Запрос.УстановитьПараметр("ПарКонПериода", КонецДня(КонПериода));
|
|||
2
mzelensky
19.09.11
✎
14:10
|
(0) вот объясни пожалуйста, что ты вообще ПРЕДПОЛАГАЕШЬ выбрать этим запросом?
|
|||
3
cViper
19.09.11
✎
14:10
|
НачалоДня для НачПериода
|
|||
4
aleks-id
19.09.11
✎
14:11
|
(3) ты уже в v8: Переход в начало выборки офигенно помог.. ага...
|
|||
5
cViper
19.09.11
✎
14:13
|
(4) Что сказать то хотел?
|
|||
6
Joshim
19.09.11
✎
14:13
|
(2) Остатки по Приходному ордеру
|
|||
7
Maxus43
19.09.11
✎
14:13
|
(2) +1
|
|||
8
Joshim
19.09.11
✎
14:14
|
началоДня() добавил, только выборка все равно пустая
|
|||
9
Joshim
19.09.11
✎
14:16
|
(8) не не пустая, все работает. НачалоДня не хватало спасибо
|
|||
10
mzelensky
19.09.11
✎
14:17
|
(6) какие остатки? по какому "Приходному ордеру" ???
|
|||
11
asady
19.09.11
✎
14:17
|
(0) СГРУППИРОВАТЬ ПО выбрось
|
|||
12
mzelensky
19.09.11
✎
14:17
|
(0) там у тебя либо какая-то очень хитрая задача...либо ты не понимаешь что хочешь!
|
|||
13
salvator
19.09.11
✎
14:19
|
(9) Когда решаешь подобного рода задачи, нужно представлять, что делаешь. А не так - тяп-ляп запрос, один раз запустил - не получил что хотел. И бегом постить на мисту...
|
|||
14
Joshim
19.09.11
✎
14:30
|
(13) повозился сначала часок, потом постил..
А как проверить в запросе заполнение параметра ПарНачПериода?? |
|||
15
salvator
19.09.11
✎
14:31
|
(14) Отладчик не предлагать? (с)
|
|||
16
Joshim
19.09.11
✎
14:31
|
(14) Пробовал ЕстьNull(ПарНачПериода, 0) - не работает, как еще?
|
|||
17
Joshim
19.09.11
✎
14:32
|
(15) условие в запросе поставить хочу: если ПарНачПериода заполнен тогда ..
Как можно сделать? |
|||
18
Axel2009
19.09.11
✎
14:34
|
построитель запроса
|
|||
19
Joshim
19.09.11
✎
14:35
|
можно конечно так:
"ВЫБРАТЬ .... РегистрНакопления.ТоварыКПолучениюНаСклады.Остатки( | , | ДокументПолучения ССЫЛКА Документ.ПриходныйОрдерНаТовары | И ( ?(ЗначениеЗаполнено(ПарНачПериода),"ДокументПолучения.Дата МЕЖДУ &ПарНачПериода И &ПарКонПериода", "") +"... а так чтоб в запросе? |
|||
20
asady
19.09.11
✎
14:37
|
(0) и вот это плохо
ДокументПолучения.Дата Замени на ВЫРАЗИТЬ(ДокументПолучения КАК Документ.ПриходныйОрдерНаТовары).Дата |
|||
21
Joshim
19.09.11
✎
14:41
|
(20)
Можете в двух словах сказать почему так лучше? |
|||
22
asady
19.09.11
✎
14:42
|
(21) платформа может сгенерировать неоптимальный запрос
поскольку ДокументПолучения имеет составной тип |
|||
23
salvator
19.09.11
✎
14:42
|
(19) Если через одно место, то динамически собирай
Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ТоварыКПолучениюНаСкладыОстатки.Номенклатура КАК Номенклатура, | СУММА(ТоварыКПолучениюНаСкладыОстатки.КоличествоОстаток) КАК КоличествоОстатокКомпании |ИЗ | РегистрНакопления.ТоварыКПолучениюНаСклады.Остатки( | , | ДокументПолучения ССЫЛКА Документ.ПриходныйОрдерНаТовары"; Если ЗначениеЗаполнено(НачПериода) Тогда Запрос.Текст = Запрос.Текст + " | И (ДокументПолучения.Дата МЕЖДУ &ПарНачПериода И &ПарКонПериода)"; КонецЕсли; Запрос.Текст = Запрос.Текст + ") КАК ТоварыКПолучениюНаСкладыОстатки | |СГРУППИРОВАТЬ ПО | ТоварыКПолучениюНаСкладыОстатки.Номенклатура | |УПОРЯДОЧИТЬ ПО | Номенклатура"; А лучше - (18) |
|||
24
Joshim
19.09.11
✎
14:49
|
(22) спасибо
Подскажите, почему: И ВЫРАЗИТЬ(ДокументПолучения КАК Документ.ПриходныйОрдерНаТовары).Дата >= &ПарНачПериода И ВЫРАЗИТЬ(ДокументПолучения КАК Документ.ПриходныйОрдерНаТовары).Дата >= &ПарКонПериода Не работает? (ВЫРАЗИТЬ(ДокументПолучения КАК Документ.ПриходныйОрдерНаТовары).Дата МЕЖДУ &ПарНачПериода И &ПарКонПериода - работает нормально) ? |
|||
25
Joshim
19.09.11
✎
14:50
|
(24) все сам вижу ошибку
|
|||
26
cViper
19.09.11
✎
14:54
|
(20)У него в условиях виртуальной таблицы ССЫЛКА стоит.
|
|||
27
asady
19.09.11
✎
14:55
|
(26) ну и что?
|
|||
28
cViper
19.09.11
✎
15:53
|
(27) Смысл дублировать?
|
|||
29
Axel2009
19.09.11
✎
15:57
|
(28) чтобы не присоединялись лишние таблицы
|
|||
30
cViper
19.09.11
✎
16:04
|
(29) Это понятно, а разве (26) не делает этого?
|
|||
31
Axel2009
19.09.11
✎
16:19
|
(30) не делает. левое соединение будет в любом случае для всех таблиц составного типа если не указано ВЫРАЗИТЬ.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |