PDA

Просмотр полной версии : Запросы



Eden Hazard
13.08.2012, 14:53
Добрый день. В регистре накопления имеется измерение Касса. Так вот, необходимо получить последнюю запись регистра для соответствующей кассы.. Надеюсь поняли меня.

AlexeyKh
14.08.2012, 09:53
да, вас поняли! в регистре накопления есть регистратор, это документ, в документе есть дата, по которой можно найти последню запись, пишите запрос по максимальной дате для заданной кассы и все готово!!! надеюсь я понятно объяснил?

Eden Hazard
14.08.2012, 15:22
каким образом это будет выглядеть, не подскажете?

---------- Post added at 15:22 ---------- Previous post was at 15:22 ----------

Вроде понятно, но все же

Balu203
15.08.2012, 16:42
Типа того:

ВЫБРАТЬ ПЕРВЫЕ 1
*
ИЗ
РегистрНакопления.Продажи КАК Продажи
упорядочить по Продажи.МоментВремени убыв

Причем упорядочивать по убыванию надо именно по моменту времени, а не по дате!

Eden Hazard
15.08.2012, 22:40
такой способ я уже делал... Он позволяет получить только одну последнюю запись. А мне нужно, что получал последние записи определенной кассы. Например, для основной кассы были записи 13, 14 и 15 числа, для кассы1, например, 14, 15. Вот для этих касс мне нужно получить две записи регистра 15 числа.

Balu203
16.08.2012, 11:20
такой способ я уже делал... Он позволяет получить только одну последнюю запись. А мне нужно, что получал последние записи определенной кассы. Например, для основной кассы были записи 13, 14 и 15 числа, для кассы1, например, 14, 15. Вот для этих касс мне нужно получить две записи регистра 15 числа.

Понятно, для каждой кассы надо получить последнюю запись...

Приведу пример подобного запроса для регистра сведений "Курсы валют", который для каждой валюты выводит последнюю запись, Вам надо сделать по аналогии, если есть не период, а момент времени, то использовать надо именно момент времени

ВЫБРАТЬ РАЗЛИЧНЫЕ
Валюты.Ссылка
ПОМЕСТИТЬ ВТ
ИЗ
Справочник.Валюты КАК Валюты
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
КурсыВалют.Период КАК Период,
КурсыВалют.Валюта КАК Валюта,
КурсыВалют.Курс,
КурсыВалют.Кратность
ПОМЕСТИТЬ ВТ1
ИЗ
РегистрСведений.КурсыВалю� � КАК КурсыВалют

ИНДЕКСИРОВАТЬ ПО
Период,
Валюта
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ВТ.Ссылка,
ВТ1.Период,
ВТ1.Валюта,
ВТ1.Курс,
ВТ1.Кратность
ИЗ
ВТ КАК ВТ
ЛЕВОЕ СОЕДИНЕНИЕ ВТ1 КАК ВТ1
ПО ВТ.Ссылка = ВТ1.Валюта
И (ВТ1.Период В
(ВЫБРАТЬ первые 1
вт1.Период
ИЗ
вт1 КАК вт1
где
вт.ссылка = вт1.валюта
упорядочить по вт1.период убыв
))

AlexeyKh
17.08.2012, 09:15
вот другой вариант запроса, с использованием временной таблицы, хотя можно запрос и по другому построить.
...
Запрост.текст="
выбрать
максимум(рег.Период) как Период,
рег.Касса
поместить Таб
Из Регистр... рег
сгруппировать по
рег.Касса
;
Выбрать
рег.*
Из Регистр... рег
внутреннее соединение Таб
по Таб.Период = рег.Период
и Таб.Касса = рег.Касса
упорядочить по
рег.Период,
рег.Касса
"

Balu203
17.08.2012, 09:54
вот другой вариант запроса, с использованием временной таблицы, хотя можно запрос и по другому построить.
...
Запрост.текст="
выбрать
максимум(рег.Период) как Период,
рег.Касса
поместить Таб
Из Регистр... рег
сгруппировать по
рег.Касса
;
Выбрать
рег.*
Из Регистр... рег
внутреннее соединение Таб
по Таб.Период = рег.Период
и Таб.Касса = рег.Касса
упорядочить по
рег.Период,
рег.Касса
"

Можно и так, маленькое уточнение, так будет быстрее:
выбрать
максимум(рег.Период) как Период,
рег.Касса
поместить Таб
Из Регистр... рег
сгруппировать по
рег.Касса
индексировать по
период,
касса
;
Выбрать
рег.*
Из Регистр... рег
внутреннее соединение Таб
по Таб.Период = рег.Период
и Таб.Касса = рег.Касса
упорядочить по
рег.Период,
рег.Касса
"[/QUOTE]

---------- Post added at 09:54 ---------- Previous post was at 09:37 ----------

А можно вообще мозги не полоскать и сделать еще проще:

Выбрать
Рег.*
Из
РегистрНакопления.Касса как Рег
Где
(Рег.Период, Рег.Касса) В (Выбрать
МАКСИМУМ(Рег.Период),
Рег.Касса
ИЗ
РегистрНакопления.Касса как Рег
Сгруппировать ПО Рег.Касса)