|
как в запросе выбрать самый последний документ | ☑ | ||
---|---|---|---|---|
0
AugustBlack
23.11.12
✎
08:38
|
привет, подскажите в запросе есть ссылка на документ и дата, как выбрать самый последний док из кучи строк регистра бухгалтерии, функция МАКСИМУМ?
|
|||
1
Нуф-Нуф
23.11.12
✎
08:43
|
В поиск епта. Через день такое спрашивают
|
|||
2
AugustBlack
23.11.12
✎
10:00
|
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ Промежуточная_ТЗ.Контрагент, Промежуточная_ТЗ.Счет, МАКСИМУМ(ХозрасчетныйОбороты.Регистратор) КАК Документ, СУММА(Промежуточная_ТЗ.Дебет) КАК Дебет, СУММА(Промежуточная_ТЗ.Кредит) КАК Кредит ИЗ Промежуточная_ТЗ КАК Промежуточная_ТЗ, РегистрБухгалтерии.Хозрасчетный.Обороты(, &ДатаКон, Регистратор, Счет В ИЕРАРХИИ (&СписокСчетов), , Организация = &Организация, КорСчет В ИЕРАРХИИ (&СписокСчетов), ) КАК ХозрасчетныйОбороты ГДЕ (Промежуточная_ТЗ.Документ ЕСТЬ NULL ИЛИ Промежуточная_ТЗ.Документ = НЕОПРЕДЕЛЕНО) И Промежуточная_ТЗ.Счет = ХозрасчетныйОбороты.Счет И Промежуточная_ТЗ.Контрагент = ХозрасчетныйОбороты.Субконто1 СГРУППИРОВАТЬ ПО Промежуточная_ТЗ.Контрагент, Промежуточная_ТЗ.Счет УПОРЯДОЧИТЬ ПО Документ УБЫВ |
|||
3
AugustBlack
23.11.12
✎
10:01
|
(2) в этом запросе,не понимаю почему на выходе получаю не последний документ а последний документ января, хотя последний в октябре должен быть
|
|||
4
mikecool
23.11.12
✎
10:02
|
(3) ну ты по дате попробуй упорядочить чтоле
|
|||
5
Cube
23.11.12
✎
10:06
|
(0) Нажми большую красную букву "Я" справа от заголовка темы...
|
|||
6
AugustBlack
23.11.12
✎
10:07
|
(4) упорядочил:
//////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ Промежуточная_ТЗ.Контрагент, Промежуточная_ТЗ.Счет, МАКСИМУМ(ХозрасчетныйОбороты.Регистратор.Дата) КАК ДокументДата, МАКСИМУМ(ХозрасчетныйОбороты.Регистратор) КАК Документ, СУММА(Промежуточная_ТЗ.Дебет) КАК Дебет, СУММА(Промежуточная_ТЗ.Кредит) КАК Кредит ИЗ Промежуточная_ТЗ КАК Промежуточная_ТЗ, РегистрБухгалтерии.Хозрасчетный.Обороты(, &ДатаКон, Регистратор, Счет В ИЕРАРХИИ (&СписокСчетов), , Организация = &Организация, КорСчет В ИЕРАРХИИ (&СписокСчетов), ) КАК ХозрасчетныйОбороты ГДЕ (Промежуточная_ТЗ.Документ ЕСТЬ NULL ИЛИ Промежуточная_ТЗ.Документ = НЕОПРЕДЕЛЕНО) И Промежуточная_ТЗ.Счет = ХозрасчетныйОбороты.Счет И Промежуточная_ТЗ.Контрагент = ХозрасчетныйОбороты.Субконто1 СГРУППИРОВАТЬ ПО Промежуточная_ТЗ.Контрагент, Промежуточная_ТЗ.Счет УПОРЯДОЧИТЬ ПО ДокументДата УБЫВ поля: датадокумента документ 31.10.2012 23:59:59 операция 00001 от 31.01.2012:23 59 59 |
|||
7
Reset
23.11.12
✎
10:09
|
(6) Регистратор в Сгруппировать
|
|||
8
Cube
23.11.12
✎
10:09
|
(6) И что тебя удивляет? Смотри (5)
|
|||
9
Reset
23.11.12
✎
10:09
|
(7) Не читать, не проснулся еще
|
|||
10
dk
23.11.12
✎
10:10
|
МАКСИМУМ(ХозрасчетныйОбороты.Регистратор.Дата)
и МАКСИМУМ(ХозрасчетныйОбороты.Регистратор) вообще-то не связаны др/др |
|||
11
salvator
23.11.12
✎
10:10
|
(6) ДатаКон чему равно?
|
|||
12
Irbis
23.11.12
✎
10:10
|
Выбрать первый с конца
|
|||
13
Serg_1960
23.11.12
✎
10:15
|
ТС хотел получить последний документ? Он его и получил - последний по дате создания(!)
|
|||
14
AugustBlack
23.11.12
✎
10:16
|
(11) 01.11.2012
|
|||
15
Нуф-Нуф
23.11.12
✎
10:17
|
Максимум по ссылке - это не последний документ.
|
|||
16
zippygrill
23.11.12
✎
10:21
|
(15) а если сначала выбрать макс(дата) и потом макс(Ссылка)?
|
|||
17
Irbis
23.11.12
✎
10:23
|
(16) Фигня получится, МАКС(ПоСсылке)<> МАКС(ПоДате)
|
|||
18
Serg_1960
23.11.12
✎
10:27
|
Имхо, ссылка сама по себе - рандомно созданная абракадабра. Использование её для сортировки - "Абсурд"(с)
|
|||
19
Нуф-Нуф
23.11.12
✎
10:27
|
сначала получаются максимальные даты и уже для этих дат находятся документы
|
|||
20
Diose
23.11.12
✎
10:28
|
может так
ВЫБРАТЬ ПЕРВЫЕ 1 ИЗ ГДЕ УПОРЯДОЧИТЬ ПО Дата УБЫВ |
|||
21
zippygrill
23.11.12
✎
10:29
|
(17) я ж говорю сначала получает документы по максимальной даты и потом из этой даты выбирает макс(Ссылка). почему фигня?
|
|||
22
Serg_1960
23.11.12
✎
10:30
|
Вот интересно: до ста постов тема будет? Тогда я на "сотке" подброшу вариант - сортировать по дате и номеру документы :))
|
|||
23
Нуф-Нуф
23.11.12
✎
10:31
|
(22) а номер то причем?
|
|||
24
zippygrill
23.11.12
✎
10:31
|
(22) моя ветка дошла до 100 постов точно по этому вопросу :)
|
|||
25
Serg_1960
23.11.12
✎
10:32
|
(23) Да ни при чём в приципе. Я потом, на "две" уточню про момент времени :)
|
|||
26
Нуф-Нуф
23.11.12
✎
10:34
|
(25) помент времени? в запросе?
|
|||
27
Serg_1960
23.11.12
✎
10:37
|
Думаешь до двести не дотянет тогда?
|
|||
28
Serg_1960
23.11.12
✎
10:42
|
Ладно уж, сорри тс, - потрите мои посты - это тяпница виновата :)
Если "без шуток", то в запросе "скрытая" ошибка. Желая получить дату и ссылку на последний документ - нельзя использовать максимум по дате и максимум по ссылке. Вы можете получить дату из одного документа и ссылку на другой документ. |
|||
29
Нуф-Нуф
23.11.12
✎
10:52
|
ВЫБРАТЬ
ТоварыНаСкладах.Номенклатура КАК Номенклатура, ТоварыНаСкладах.Регистратор КАК Регистратор, ТоварыНаСкладах.Регистратор.Дата КАК Дата ПОМЕСТИТЬ ТаблицаДвижений ИЗ РегистрНакопления.ТоварыНаСкладах КАК ТоварыНаСкладах ГДЕ ТоварыНаСкладах.Номенклатура = &Номенклатура ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ТаблицаДвижений.Номенклатура, МАКСИМУМ(ТаблицаДвижений.Дата) КАК Дата ПОМЕСТИТЬ ТаблицаДат ИЗ ТаблицаДвижений КАК ТаблицаДвижений СГРУППИРОВАТЬ ПО ТаблицаДвижений.Номенклатура ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ТаблицаДат.Номенклатура, МАКСИМУМ(ТаблицаДвижений.Регистратор) КАК Регистратор ИЗ ТаблицаДат КАК ТаблицаДат ЛЕВОЕ СОЕДИНЕНИЕ ТаблицаДвижений КАК ТаблицаДвижений ПО ТаблицаДат.Дата = ТаблицаДвижений.Дата СГРУППИРОВАТЬ ПО ТаблицаДат.Номенклатура |
|||
30
zippygrill
23.11.12
✎
11:06
|
(29) это ответ на (28) что так можно? :)
|
|||
31
Serg_1960
23.11.12
✎
11:13
|
(29) Грац - у меня мозг взорвался от просветления при чтении поста.
PS: я говорил про конкретный запрос, а не "в общем виде". |
|||
32
AugustBlack
23.11.12
✎
11:51
|
(19)(29) вы гений,спасибо!:) переделал под свой запрос все получилось!!
|
|||
33
Нуф-Нуф
23.11.12
✎
12:12
|
хотя на самом деле в (29) все равно используется максимум по ссылке. что не дает гарантию, что из двух документов с одинаковой датой выберется самый последний.
имхо самый правильный вариант: получить в запросе отсортированную по Номенклатуре и МоментуВремени (убыв) таблицу ТАБЛ1 Номенклатура Регистратор МоментВремени Пронумеровать строки в запросе. Полученную ТАБЛ1 сгруппировать по Номенклатуре и Максимум по НомеруСтроки и сунуть в ТАБЛ2 Соединить ТАБЛ2 и ТАБЛ1 по номеру строки и получить регистратор (напримере соединения в (29)) |
|||
34
Нуф-Нуф
23.11.12
✎
12:18
|
хотя гоню. вариант в (33) ничем не отличается от (29) :)
|
|||
35
Serg_1960
23.11.12
✎
12:39
|
Нуф-Нуф, не парься. Регистратором в регистре накопления могут быть документы различного вида и тогда сортировка или максимум по ссылке - информация "не об чём" в контексте поиска последнего документа.
|
|||
36
AugustBlack
23.11.12
✎
13:05
|
(33) да нашлась строка результата запроса в которой некорректно вывелся последний документ, в осв это документ не последний а предпоследний т.е даты у 2х документов совпадают 31.10.2012 23 59 59
|
|||
37
Serg_1960
23.11.12
✎
13:14
|
(между прочим)
Момент времени - это дата документа + номер таблицы вида документа + уникальный идентификатор документа. Ссылка - это номер таблицы + идентификатор. Так? Имхо: сортировки по дате и ссылке с отбором первых/последних (от сортировки зависит) - достаточно. Я не прав? |
|||
38
AugustBlack
13.12.12
✎
10:05
|
(37) получилось так
ВЫБРАТЬ МАКСИМУМ(ХозрасчетныйОбороты.Регистратор.Дата) КАК РегистраторДата, ХозрасчетныйОбороты.Счет, ХозрасчетныйОбороты.Субконто1 ПОМЕСТИТЬ ПоследниеДокументыНаДату ИЗ РегистрБухгалтерии.Хозрасчетный.Обороты(, &КонДата, Регистратор, Счет = &Счет, , , , ) КАК ХозрасчетныйОбороты СГРУППИРОВАТЬ ПО ХозрасчетныйОбороты.Счет, ХозрасчетныйОбороты.Субконто1 ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ МАКСИМУМ(ХозрасчетныйОбороты.Регистратор) КАК Регистратор, ХозрасчетныйОбороты.Счет, ХозрасчетныйОбороты.Субконто1 КАК Субконто1 ИЗ РегистрБухгалтерии.Хозрасчетный.Обороты(, , Регистратор, , , , , ) КАК ХозрасчетныйОбороты ВНУТРЕННЕЕ СОЕДИНЕНИЕ ПоследниеДокументыНаДату КАК ПоследниеДокументыНаДату ПО ХозрасчетныйОбороты.Счет = ПоследниеДокументыНаДату.Счет И ХозрасчетныйОбороты.Субконто1 = ПоследниеДокументыНаДату.Субконто1 И ХозрасчетныйОбороты.Регистратор.Дата = ПоследниеДокументыНаДату.РегистраторДата СГРУППИРОВАТЬ ПО ХозрасчетныйОбороты.Счет, ХозрасчетныйОбороты.Субконто1 УПОРЯДОЧИТЬ ПО Субконто1, Регистратор но почему-то этот запрос медленее отрабатывает по сравнению с тем если получить все документы по оборотам 60.01(в случае с программной обработкой результата запроса) ВЫБРАТЬ ХозрасчетныйОбороты.Регистратор КАК Регистратор, ХозрасчетныйОбороты.Счет, ХозрасчетныйОбороты.Субконто1 КАК Субконто1 ИЗ РегистрБухгалтерии.Хозрасчетный.Обороты(, &КонДата, Регистратор, , , , , ) КАК ХозрасчетныйОбороты ГДЕ ХозрасчетныйОбороты.Счет = &Счет СГРУППИРОВАТЬ ПО ХозрасчетныйОбороты.Счет, ХозрасчетныйОбороты.Субконто1, ХозрасчетныйОбороты.Регистратор УПОРЯДОЧИТЬ ПО Субконто1, Регистратор на моих тестовых базах разница в 3-5 сек. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |