Имя: Пароль:
1C
1С v8
В запросе выбрать документы с одинаковой датой
0 Zombi
 
12.07.12
07:19
Написал такой запрос:

ВЫБРАТЬ
   ПлатежноеПоручениеВходящее.Ссылка КАК Платежка,
   РеализацияТоваровУслуг.Ссылка КАК Реализация
ИЗ
   Документ.ПлатежноеПоручениеВходящее КАК ПлатежноеПоручениеВходящее
       ПОЛНОЕ СОЕДИНЕНИЕ Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
       ПО ПлатежноеПоручениеВходящее.ДоговорКонтрагента = РеализацияТоваровУслуг.ДоговорКонтрагента

А можно ли как то выбрать только те документы, которые были введены в пределах одного дня?
1 France
 
12.07.12
07:24
где документ.дата = ?пределдня..
ну и приведение сделать, чтобы отсечь часы минуты секунды
2 Wobland
 
12.07.12
07:29
(0) да
3 ДенисЧ
 
12.07.12
07:52
(0) _введены_? Или _имеют дату_ ? Это немного разные вещи :-)
4 Zombi
 
12.07.12
07:56
(1) Ваши бы мысли выразить примером.
(3) Имеют дату.
5 Sammo
 
12.07.12
07:56
Дата между.
Есть еще вариант привести дату к началу дня, но это некрасиво - не используется индекс по дате
6 ДенисЧ
 
12.07.12
07:59
(4) Тогда
Где НАЧАЛОПЕРИОДА(ПлатежноеПоручениеВходящее.Дата, ДЕНЬ) = НАЧАЛОПЕРИОДА(&ВыбДата, ДЕНЬ)
7 ДенисЧ
 
12.07.12
08:00
ну, или (5).
Хотя я тут не стану пока про индексы ничего говорить, не проводил опытов.
8 Zombi
 
12.07.12
08:11
Может я неправильно изьсняюсь. Мне нужно вывести в запрос только те строки, в которых платежки и реализации имеют дату в пределах одного дня. То есть не параметром я определенную дату задаю и ищу документы за этот день, а ищу операции, когда товар был оплачен и отгружен в один день.
9 shuhard
 
12.07.12
08:12
(8) для непонятливых:
НАЧАЛОПЕРИОДА(хз.Дата, ДЕНЬ)
10 Zombi
 
12.07.12
08:16
Так?:

ВЫБРАТЬ
   ПлатежноеПоручениеВходящее.Ссылка КАК Платежка,
   РеализацияТоваровУслуг.Ссылка КАК Реализация
ИЗ
   Документ.ПлатежноеПоручениеВходящее КАК ПлатежноеПоручениеВходящее
       ПОЛНОЕ СОЕДИНЕНИЕ Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
       ПО ПлатежноеПоручениеВходящее.ДоговорКонтрагента = РеализацияТоваровУслуг.ДоговорКонтрагента
ГДЕ
   НАЧАЛОПЕРИОДА(ПлатежноеПоручениеВходящее.Дата, ДЕНЬ) = НАЧАЛОПЕРИОДА(РеализацияТоваровУслуг.Дата, ДЕНЬ)
11 Zombi
 
12.07.12
08:17
Вроде работает. Спасибо всем!
12 andrewks
 
12.07.12
08:17
(10) нафига полное соединение? делай внутреннее
13 shuhard
 
12.07.12
08:18
(12) у ТС цель максимально замедлить работу системы
14 andrewks
 
12.07.12
08:18
интересно, сегодня отгрузили на 500 тыр, а оплата от клиента пришла 500р. за отгрузку месячной давности
15 Zombi
 
12.07.12
08:20
(12) Да, щас поменяю на внутреннее, полное делал когда экспериментировал
16 Zombi
 
12.07.12
08:23
(14) Эт уж бухи разбираться будут. Попросили такой вот отчет в помошь.
17 butterbean
 
12.07.12
08:25
лучше ПлатежноеПоручениеВходящее.Дата МЕЖДУ &НачД И &КонД
работает гораздо раза быстрее
18 Zombi
 
12.07.12
08:34
(17) Ну сейчас без ограничения периода, то есть по всем документам "Время выплнения запроса: 1 сек."
А где получать параметры &НачД И &КонД?
19 butterbean
 
12.07.12
08:35
(18) это было для примера, в условиях соединения так-же
20 butterbean
 
12.07.12
08:36
(19)+ хотя если и так 1 секунда, то пох наверно, это на очень больших выборках было бы заметно
21 Zombi
 
12.07.12
08:42
Так?:
ВЫБРАТЬ
   ПлатежноеПоручениеВходящее.Ссылка КАК Платежка,
   РеализацияТоваровУслуг.Ссылка КАК Реализация
ИЗ
   Документ.ПлатежноеПоручениеВходящее КАК ПлатежноеПоручениеВходящее
       ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
       ПО ПлатежноеПоручениеВходящее.ДоговорКонтрагента = РеализацияТоваровУслуг.ДоговорКонтрагента
ГДЕ
   НАЧАЛОПЕРИОДА(ПлатежноеПоручениеВходящее.Дата, ДЕНЬ) МЕЖДУ НАЧАЛОПЕРИОДА(РеализацияТоваровУслуг.Дата, ДЕНЬ) И КОНЕЦПЕРИОДА(РеализацияТоваровУслуг.Дата, ДЕНЬ)
22 butterbean
 
12.07.12
08:43
(21) ГДЕ
ПлатежноеПоручениеВходящее.Дата МЕЖДУ НАЧАЛОПЕРИОДА(РеализацияТоваровУслуг.Дата, ДЕНЬ) И КОНЕЦПЕРИОДА(РеализацияТоваровУслуг.Дата, ДЕНЬ)
23 butterbean
 
12.07.12
08:44
(22)+ и это надо запихнуть в условие соединения
24 Zombi
 
12.07.12
08:46
ВЫБРАТЬ
   ПлатежноеПоручениеВходящее.Ссылка КАК Платежка,
   РеализацияТоваровУслуг.Ссылка КАК Реализация
ИЗ
   Документ.ПлатежноеПоручениеВходящее КАК ПлатежноеПоручениеВходящее
       ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
       ПО ПлатежноеПоручениеВходящее.ДоговорКонтрагента = РеализацияТоваровУслуг.ДоговорКонтрагента
ГДЕ
   ПлатежноеПоручениеВходящее.Дата МЕЖДУ НАЧАЛОПЕРИОДА(РеализацияТоваровУслуг.Дата, ДЕНЬ) И КОНЕЦПЕРИОДА(РеализацияТоваровУслуг.Дата, ДЕНЬ)
25 butterbean
 
12.07.12
08:48
(24) замени ГДЕ на И
26 Zombi
 
12.07.12
08:50
(25)
ВЫБРАТЬ
   ПлатежноеПоручениеВходящее.Ссылка КАК Платежка,
   РеализацияТоваровУслуг.Ссылка КАК Реализация
ИЗ
   Документ.ПлатежноеПоручениеВходящее КАК ПлатежноеПоручениеВходящее
       ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
       ПО ПлатежноеПоручениеВходящее.ДоговорКонтрагента = РеализацияТоваровУслуг.ДоговорКонтрагента
           И (ПлатежноеПоручениеВходящее.Дата МЕЖДУ НАЧАЛОПЕРИОДА(РеализацияТоваровУслуг.Дата, ДЕНЬ) И КОНЕЦПЕРИОДА(РеализацияТоваровУслуг.Дата, ДЕНЬ))

Да, наверно так будет оптимальнее. Блин, мне этим запросам учиться и учиться.
27 МихаилМ
 
12.07.12
08:51
(0)

опишите  индексы, в которых  участвует поля дата
28 Zombi
 
12.07.12
08:55
(27) Поясните, пожалуйста.
29 МихаилМ
 
12.07.12
09:10
(28)
это азы. база.
без этого писать запросы
осмысленно не получится.

wiki:Индекс_(базы_данных)
30 Zombi
 
12.07.12
09:52
(29) Как в моем случае описать индексы?
31 Reset
 
12.07.12
10:04
(27) Человек, могущий ответить на этот вопрос, не будет задавать вопрос (0).
Зачем спрашивать? Чтобы  с важным видом брякнуть (29)?
32 МихаилМ
 
12.07.12
10:07
(31)
мне интересно какие можно использовать индексы
в данной задаче.

на вопрос (28)
как нужно ответить?