|
Вопрос по запросу | ☑ | ||
---|---|---|---|---|
0
WED
26.03.12
✎
13:31
|
Понимаю, что вопрос простой, но что-то никак не соображу.
Имеем: Документ: Заказ Регистр сведенй: РабочийЖурнал Поля регистра: ОбъектЗаписи: ДокументСсылка.Заказ ВидЗаписи: Перечисление.ВидыЗаписи (Значения: ДатаИсполнения, Комментарий) Запись: (типы: Дата, Строка) По каждому заказу в регистре может быть несколько записей. Каждая запись имеет свой период (т.е. дату когда её внесли). Например записи в регистре: Заказ1, ДатаИсполнения, 01.03.12 Заказ2, Комментарий, Тра-ля-ля Заказ2, ДатаИсполнения, 02.03.12 Заказ1, ДатаИсполнения, 05.03.12 Заказ1, ДатаИсполнения, 03.03.12 Заказ1, Комментарий, Тру-ля-ля Заказ2, ДатаИсполнения, 04.03.12 Так вот. Запрос с отбором по виду записи ДатаИсполнения должен выдать следующее: Заказ1, 03.03.12 Заказ2, 04.03.12 т.е. он должен вернуть последнюю запись вида ДатаИсполнения по каждому заказу. Что-то я не соображу как мне выбрать только последнюю запись по каждому заказу. Мой запрос: ВЫБРАТЬ РабочийЖурнал.Запись КАК ДатаИсполнения, РабочийЖурнал.Объект.Ссылка КАК Заказ ИЗ РегистрСведений.РабочийЖурнал КАК РабочийЖурнал ГДЕ РабочийЖурнал.ВидЗаписи = ЗНАЧЕНИЕ(Перечисление.ВидыЗаписиРабочегоЖурнала.ДатаИсполнения) Возвращает все записи вида ДатаИсполнения по всем заказам. А как получить только последнюю по каждому заказу? |
|||
1
КМ155
26.03.12
✎
13:33
|
(0) используй срез последних
|
|||
2
Ненавижу 1С
гуру
26.03.12
✎
13:34
|
последнюю в каком смысле?
|
|||
3
Axel2009
26.03.12
✎
13:37
|
ВЫБРАТЬ
МАКСИМУМ(РабочийЖурнал.Запись) КАК ДатаИсполнения, РабочийЖурнал.Объект КАК Заказ ИЗ РегистрСведений.РабочийЖурнал КАК РабочийЖурнал ГДЕ РабочийЖурнал.ВидЗаписи = ЗНАЧЕНИЕ(Перечисление.ВидыЗаписиРабочегоЖурнала.ДатаИсполнения) СГРУППИРОВАТЬ ПО РабочийЖурнал.Объект |
|||
4
WED
26.03.12
✎
13:48
|
(2) последнюю из внесенных записей данного вида по данному заказу.
(3) у тебя получится наибольшая дата исполнения по заказу, а надо последнюю из внесенных. |
|||
5
WED
26.03.12
✎
13:50
|
(1) срез последних по моему примеру записей даст
Заказ2, 04.03.12 и потеряет Заказ1, 03.03.12 |
|||
6
lubja
26.03.12
✎
13:52
|
(5) а ты проверь )
срез последних - это раз, а второе - условие перенеси в условия виртуальной таблицы среза послдежних |
|||
7
Ненавижу 1С
гуру
26.03.12
✎
13:53
|
(5) заказ это ресурс? тогда хреновые вы архитекторы
|
|||
8
WED
26.03.12
✎
13:55
|
(7) почему ресурс? реквизит!
(6) как раз проверяю. :) |
|||
9
Ненавижу 1С
гуру
26.03.12
✎
13:56
|
(8) а ну тогда ваще пясец
|
|||
10
WED
26.03.12
✎
14:00
|
(9) тьфу! совсем запутал! не реквизит конечно - измерение :)
(6) проверил. вот запрос: ВЫБРАТЬ ВЫРАЗИТЬ(РабочийЖурналСрезПоследних.Запись КАК ДАТА) КАК ДатаИсполнения, РабочийЖурналСрезПоследних.Объект.Ссылка КАК Заказ ИЗ РегистрСведений.РабочийЖурнал.СрезПоследних(, ВидЗаписи = ЗНАЧЕНИЕ(Перечисление.ВидыЗаписиРабочегоЖурнала.ДатаИсполнения)) КАК РабочийЖурналСрезПоследних УПОРЯДОЧИТЬ ПО ДатаИсполнения УБЫВ вместо 30 записей вернул 4... |
|||
11
WED
26.03.12
✎
14:02
|
а 4 он их вернул потому что на каждую дату исполнения может быть несколько заказов. вернется только один заказов
|
|||
12
dva1c
26.03.12
✎
14:05
|
(11) Нужна одна запись? Используй МАКСИМУМ из (3).
|
|||
13
WED
26.03.12
✎
14:06
|
(12) Тогда будет не последняя,а наибольшая дата. Мне надо последнюю из занесенных в регистр по конкретному заказу
|
|||
14
dva1c
26.03.12
✎
14:10
|
(13) Дата пишется со временем. Не?
|
|||
15
WED
26.03.12
✎
14:13
|
Без разницы.
Посмотри на мой пример записей в (0). Там по заказ1 есть три записи с датой исполнения: Заказ1, ДатаИсполнения, 01.03.12 Заказ1, ДатаИсполнения, 05.03.12 Заказ1, ДатаИсполнения, 03.03.12 твой вариант вернет дату 05.03.12, а должно быть 03.03.12 |
|||
16
Axel2009
26.03.12
✎
14:22
|
(4) ну и чем же задается порядок записей в регистре?
|
|||
17
zladenuw
26.03.12
✎
14:23
|
период
|
|||
18
Axel2009
26.03.12
✎
14:28
|
ВЫБРАТЬ РабочийЖурнал.* ИЗ РабочийЖурнал КАК РабочийЖурнал
ВНУТРЕННЕЕ СОЕДИНЕНИЕ ( ВЫБРАТЬ МАКСИМУМ(РабочийЖурнал.Период) КАК Период, РабочийЖурнал.Объект КАК Заказ ИЗ РегистрСведений.РабочийЖурнал КАК РабочийЖурнал ГДЕ РабочийЖурнал.ВидЗаписи = ЗНАЧЕНИЕ(Перечисление.ВидыЗаписиРабочегоЖурнала.ДатаИсполнения) СГРУППИРОВАТЬ ПО РабочийЖурнал.Объект) КАК МаксПериод ПО РабочийЖурнал.Объект = МаксПериод.Объект И РабочийЖурнал.Период = МаксПериод.Период |
|||
19
zladenuw
26.03.12
✎
14:31
|
(18) а разве нельзя просто максимум по периоду ?
|
|||
20
WED
26.03.12
✎
14:48
|
(18) Что-то тут ошибок в запросе много...
|
|||
21
WED
26.03.12
✎
14:52
|
но логику понял. копаю в эту сторону
|
|||
22
WED
26.03.12
✎
14:53
|
Работает.
|
|||
23
WED
26.03.12
✎
14:53
|
Финальный запрос таков:
ВЫБРАТЬ ВЫРАЗИТЬ(РабочийЖурнал.Запись КАК ДАТА) КАК ДатаИсполнения, РабочийЖурнал.Объект.Ссылка КАК Заказ ИЗ РегистрСведений.РабочийЖурнал КАК РабочийЖурнал ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ МАКСИМУМ(РабочийЖурнал.Период) КАК Период, РабочийЖурнал.Объект КАК Объект ИЗ РегистрСведений.РабочийЖурнал КАК РабочийЖурнал ГДЕ РабочийЖурнал.ВидЗаписи = ЗНАЧЕНИЕ(Перечисление.ВидыЗаписиРабочегоЖурнала.ДатаИсполнения) СГРУППИРОВАТЬ ПО РабочийЖурнал.Объект) КАК МаксПериод ПО РабочийЖурнал.Объект = МаксПериод.Объект И РабочийЖурнал.Период = МаксПериод.Период |
|||
24
Axel2009
26.03.12
✎
15:12
|
(23) г$вно-код обязательно нужно добавлять да?
|
|||
25
WED
26.03.12
✎
18:56
|
(24) Да.
Напиши свой вариант - не г$внокод, добавлю его. |
|||
26
Axel2009
26.03.12
✎
19:16
|
РабочийЖурнал.Объект.Ссылка
|
|||
27
WED
26.03.12
✎
19:17
|
(26) и что?
|
|||
28
WED
26.03.12
✎
19:20
|
Это всё что тебя смутило? Сократи до РабочийЖурнал.Объект и спи спокойно :)
|
|||
29
catena
26.03.12
✎
19:45
|
А Запись в регистре - это кто?
|
|||
30
Axel2009
26.03.12
✎
19:55
|
(28) я то сокращу, потому что знаю чем это грозит
|
|||
31
WED
31.03.12
✎
12:38
|
(30) Чем же?
(29) Вопрос не понял. Запись это составное значение: Док,Спр,Дата,Строка |
|||
32
catena
31.03.12
✎
15:30
|
(31)Регистру она кто? Ресурс измерение?
|
|||
33
timurhv
31.03.12
✎
15:56
|
(31) ".Ссылка" грозит еще дополнительным соединением таблиц.
|
|||
34
WED
02.04.12
✎
14:09
|
(32) Ресурс
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |