|
Сортировка по дате | ☑ | ||
---|---|---|---|---|
0
jonik_joker
19.09.13
✎
11:59
|
Всем привет.Похоже я чего-то не понимаю:пытаюсь сделать выборку по дате из результатов запроса,но получается пустой лист.В чем проблема?
Код: &НаСервере Функция СформироватьОтчетНовый() Запрос=Новый Запрос; Запрос.УстановитьПараметр("Клиент",Клиент); Запрос.УстановитьПараметр("ДатаНачала",НачалоДня(ДатаНачала)); Запрос.УстановитьПараметр("ДатаКонца",КонецДня(ДатаКонца)); Запрос.Текст= "ВЫБРАТЬ | РеализацияГотовойПродукцииСостав.Заявка, | СУММА(РеализацияГотовойПродукцииСостав.Стоимость) КАК Стоимость, | РеализацияГотовойПродукцииСостав.Заявка.Дата КАК Дата |ИЗ | Документ.РеализацияГотовойПродукции.Состав КАК РеализацияГотовойПродукцииСостав |ГДЕ | РеализацияГотовойПродукцииСостав.Заявка.Клиент = &Клиент | |СГРУППИРОВАТЬ ПО | РеализацияГотовойПродукцииСостав.Заявка, | РеализацияГотовойПродукцииСостав.Заявка.Дата | |УПОРЯДОЧИТЬ ПО | Стоимость"; ТаблицаДанных=Запрос.Выполнить().Выгрузить(); ДокументДанных=Новый ТабличныйДокумент; Макет=Отчеты.Отчет1.ПолучитьМакет("Макет1"); ОбластьЗаголовок=Макет.ПолучитьОбласть("Заголовок"); ОбластьСтрока=Макет.ПолучитьОбласть("Строка"); Для Каждого СтрокаДанных Из ТаблицаДанных Цикл Если СтрокаДанных.Дата>=ДатаНачала И СтрокаДанных.Дата<=ДатаКонца Тогда ОбластьСтрока.Параметры.Заявка=СтрокаДанных.Заявка; ОбластьСтрока.Параметры.Стоимость=СтрокаДанных.Стоимость; ОбластьСтрока.Параметры.Дата=СтрокаДанных.Дата; ДокументДанных.Вывести(ОбластьЗаголовок); ДокументДанных.Вывести(ОбластьСтрока); КонецЕсли; КонецЦикла; Возврат ДокументДанных; КонецФункции |
|||
1
Ненавижу 1С
гуру
19.09.13
✎
12:01
|
нда...
|
|||
2
Лефмихалыч
19.09.13
✎
12:01
|
видимо условие по дате не выполняется
|
|||
3
salvator
19.09.13
✎
12:01
|
А проверку на дату в запросе религия не позволяет сделать?
|
|||
4
Laerys
19.09.13
✎
12:02
|
с чего б начать...
|
|||
5
chelentano
19.09.13
✎
12:02
|
казалось бы, причём тут сортировка...
|
|||
6
Laerys
19.09.13
✎
12:04
|
ты в консоле запросов проверял результат запроса? мб там вообще пусто, или потом в даты не входит? в чем проблема сразу загнать условие на даты в запрос? Зачем выгружать запрос, а потом опять по нему проходить фактически?
|
|||
7
Laerys
19.09.13
✎
12:05
|
Датаначала и конца не противоречат друг другу, они вообще заполнены?
|
|||
8
jonik_joker
19.09.13
✎
12:09
|
(3),почему-то 2 условия не выполняются одновременно:либо по дате,либо по клиенту.
(6),данные получаю,но пропускаются строки ДокументДанных.Вывести(ОбластьЗаголовок); ДокументДанных.Вывести(ОбластьСтрока); сразу переходит в КонецЕсли. |
|||
9
Ненавижу 1С
гуру
19.09.13
✎
12:12
|
(8) "почему-то 2 условия не выполняются одновременно:либо по дате,либо по клиенту"
ж жешь "но пропускаются строки" опять ж жешь |
|||
10
Sabbath
19.09.13
✎
12:13
|
(0)
1. Сделай нормально проверку на дату в условиях запроса (ГДЕ). Лучше вообще сначала выбирать заявки по дате, а потом присоединять реализации. 2. Проверь сами даты. 3. Проверь, есть ли заявки вообще между этими датами. 4. Разве получать область строки ОбластьСтрока=Макет.ПолучитьОбласть("Строка"); надо не в цикле? 5. Зачем выводить заголовок в цикле? Я думаю это тоже косяк. |
|||
11
Laerys
19.09.13
✎
12:14
|
(8) "почему-то 2 условия не выполняются одновременно:либо по дате,либо по клиенту"
пустил слезу... |
|||
12
kosts
19.09.13
✎
12:15
|
(10)
>4. Разве получать область строки >ОбластьСтрока=Макет.ПолучитьОбласть("Строка"); >надо не в цикле? Не обязательно, но важно все параметры строки перезаписывать новыми значениями, то отчет выведутся повторы... |
|||
13
Sabbath
19.09.13
✎
12:16
|
+(10) к пункту 4. В цикле не надо, туплю
|
|||
14
Sabbath
19.09.13
✎
12:17
|
(12) Ага, сам присмотрелся, понял уже
|
|||
15
kosts
19.09.13
✎
12:19
|
(14) В цикле можно, я бы сказал желательно, но не обязательно, т.к. если вне цикла, то возможны ошибки...
|
|||
16
jonik_joker
19.09.13
✎
12:23
|
(11),а можно все-таки пояснить что не так?
|
|||
17
jonik_joker
19.09.13
✎
12:25
|
(10),
уже писал что 2 условия не выполняются.Если ставлю условие до дате-все формируется верно. |
|||
18
kosts
19.09.13
✎
12:27
|
(17) Запрос приведи с отбором по дате
|
|||
19
catena
19.09.13
✎
12:28
|
(16)Злые люди просто шутят. Запросы больше чем с одним условием работают некорректно и долго, всё правильно.
|
|||
20
Sabbath
19.09.13
✎
12:30
|
(19) предлагаю не ставить условия в запросах, а проверять все в цикле))
|
|||
21
Sabbath
19.09.13
✎
12:32
|
(17) выведи без условий (или без одного) с датами и клиентами и посмотри, что там, проверь, подходит ли все под условия. Не может быт ьчтоб все было ок, а одно условие выполнялось, другое вдруг нет, должна быть причина
|
|||
22
jonik_joker
19.09.13
✎
12:47
|
(18),
Запрос.Текст= "ВЫБРАТЬ | РеализацияГотовойПродукцииСостав.Заявка, | СУММА(РеализацияГотовойПродукцииСостав.Стоимость) КАК Стоимость, | РеализацияГотовойПродукцииСостав.Заявка.Дата КАК Дата |ИЗ | Документ.РеализацияГотовойПродукции.Состав КАК РеализацияГотовойПродукцииСостав |ГДЕ | РеализацияГотовойПродукцииСостав.Заявка.Дата МЕЖДУ &ДатаНачала И &ДатаКонца | |СГРУППИРОВАТЬ ПО | РеализацияГотовойПродукцииСостав.Заявка, | РеализацияГотовойПродукцииСостав.Заявка.Дата | |УПОРЯДОЧИТЬ ПО | Стоимость"; |
|||
23
jonik_joker
19.09.13
✎
12:54
|
(21),без условий все выводится,но почему-то столбец Стоимость везде пустой.При отборе по клиенту либо по дате он заполняется.
|
|||
24
jonik_joker
19.09.13
✎
12:59
|
играет какую-то роль что я беру данные из табличной части(Состав) документа РеализацияГотовойПродукции?
|
|||
25
Laerys
19.09.13
✎
13:16
|
Передай одну дату на оба параметра, точную, в день которой точно была заявка и добавь условие по клиенту этой заявки, посмотри что получится
|
|||
26
Sabbath
19.09.13
✎
13:49
|
(24) думаю, нет. Тебе просто надо в отладке или в консоли прогнать и посмотреть результат запрос с условием и без. Посмотри, что выводится, соответствуют ли условия значения полей условиям, проверь типы, параметры и подумай почему так. Так сложно сказать, не думаю, что там какое-то волшебство. Просто обычный запрос, где-то косяк в недопонимании что он делает или что должен делать. Короче покопайся в данных и в том, что получает запрос с условиями и без.
|
|||
27
jonik_joker
19.09.13
✎
15:17
|
Мой косяк,сорри:даты выводились с временем),Формат() помог.Теперь сравнение происходит,но без результата:если указываю клиента и даты-выводятся все заявки по клиенту,если только период-непонятные пару заявок.
|
|||
28
jonik_joker
19.09.13
✎
15:18
|
Вопрос:можно ли,например,
ДатаНачалаФормат=Формат(ДатаНачала,"ДФ=dd.MM.yyyy"); записать в условие запроса? |
|||
29
salvator
19.09.13
✎
15:20
|
(28) Функцию НАЧАЛОПЕРИОДА используй
|
|||
30
salvator
19.09.13
✎
15:21
|
СГРУППИРОВАТЬ ПО
РеализацияГотовойПродукцииСостав.Заявка, НАЧАЛОПЕРИОДА(РеализацияГотовойПродукцииСостав.Заявка.Дата,ДЕНЬ) |
|||
31
jonik_joker
19.09.13
✎
15:24
|
salvator,спасибо.
Будем копать дальше) |
|||
32
jonik_joker
19.09.13
✎
23:10
|
Указал условия по клиенту и дате в запросе-все работает,но...если не заполнить хотя бы 1 реквизит(клиент,дата),то сортировка не происходит.Можно ли в запросе этого избежать?
|
|||
33
salvator
20.09.13
✎
09:48
|
(32) Можно.
|
|||
34
jonik_joker
22.09.13
✎
07:53
|
(33) ,логичный вопрос...как?
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |