|
Простейший запрос, который показывает сумму последних n документов | ☑ | ||
---|---|---|---|---|
0
Dev
21.08.18
✎
11:00
|
Добрый день, в общем есть два документа, списание денежных средств и поступление с реквизитами касса и сумма, и регистр накопления в котором ведется учет этих документов. Необходимо построить запрос, который бы показывал сумму последних n документов списания и поступления в разрезе кассы. Количество документов и касса должны быть параметрами запроса и запрос должен работать в консоле запросов, есть идеи как можно это реализовать ? Не могу понять каким образом можно определенное количество документов вытащить, передавая параметром количество
|
|||
1
Fedor-1971
21.08.18
✎
11:03
|
(0)
Выбрать Первые &СкокоНужноДокументов
так уже пробовал? |
|||
2
Dev
21.08.18
✎
11:04
|
Да не работает
|
|||
3
dezss
21.08.18
✎
11:05
|
а зачем параметром?
как насчет СтрЗаменить? |
|||
4
dezss
21.08.18
✎
11:06
|
(3) + или консоль запросов - это обязательное условие?
|
|||
5
Dev
21.08.18
✎
11:06
|
Да именно в консоле надо
|
|||
6
dezss
21.08.18
✎
11:08
|
ИМЕЮЩИЕ Количество (Различные) > &N
|
|||
7
dezss
21.08.18
✎
11:09
|
(6) + с группировкой, ессно
|
|||
8
VS-1976
21.08.18
✎
11:47
|
Лучше использовать совет из (3) иначе перемножение и тебе это точно не понравится, так как может всё "умереть"
|
|||
9
Dev
21.08.18
✎
11:49
|
А под (различные) Что подразумевается ? Нужно посчитать тогда количество вхождения регистратора
|
|||
10
Dev
21.08.18
✎
11:50
|
(8) Нужно именно в консоле сделать с параметрами
|
|||
11
Fedor-1971
21.08.18
✎
12:05
|
(10) Полностью: ИМЕЮЩИЕ Количество (Различные Ссылка) > &N - это подсчёт количества различных ссылок в результирующей выборке
|
|||
12
elCust
21.08.18
✎
12:29
|
(1) >> так уже пробовал?
(2) >> Да не работает А как реализовывали, что не работает? |
|||
13
Sayan_mi
21.08.18
✎
12:34
|
Выбери из регистра во временные таблицы по 6 документов прихода и списания, а дальше уже ими оперируй.
|
|||
14
Dev
21.08.18
✎
15:33
|
(11) Таким способом он отображает только если в запросе соответствует количество полей, указанных в параметре, если не соответствует то он вообще ничего не выводит, а мне же нужно посчитать сумму скажем последних 3 документов из пяти, если я задам в параметре 3 он мне выведет ту же сумму что и если там задать 4, потому что просто это попадает под условие, если задам 5 то просто будет пусто
|
|||
15
Dev
21.08.18
✎
15:39
|
(13) Это что то вообще не понял, а зачем по 6 именно ? Ну выбрал я и что дальше ? Как мне манипулировать процессом с помощью параметров, мне надо два последних дока скажем из шести или три, как мне это реализовать используя параметры ?
|
|||
16
Salimbek
21.08.18
✎
15:42
|
(14) Почему "если задам 5 то просто будет пусто"?
|
|||
17
Dev
21.08.18
✎
15:44
|
Потому что если в запросе всего пять полей скажем а в параметре получается >5 то будет пусто в сумме, потому что не попадает под условие
|
|||
18
Dev
21.08.18
✎
15:45
|
Ну вот например так если запрос построить
Выбрать Сумма (Сумма) КАК Сумма ИЗ РегистрНакопления.ДвиженияДенСредств ГДЕ ВидДвижения = &Расход ИМЕЮЩИЕ Количество(Различные Регистратор) = &N |
|||
19
Dev
21.08.18
✎
15:47
|
Или больше там ставить знак или меньше, значения не имеет он либо выводит сумму, либо нет
|
|||
20
Dev
21.08.18
✎
15:51
|
А мне нужна сумма скажем 3 доков или 2, а не вся сумма которая получается в общем по расходникам
|
|||
21
Ботаник Гарден Меран
21.08.18
✎
15:55
|
Ну, декартово произведение во временную таблицу, затем условие по рассчитанному нарастающему полю количества.
Но тормозить будет... |
|||
22
mistеr
21.08.18
✎
15:57
|
(0) Поиск "нумерация строк в запросе".
Собеседование что ли? Непрактичная задача какая-то. |
|||
23
Salimbek
21.08.18
✎
15:59
|
(19)
Выбрать что, тебе, нужно из (Выбрать первые &N * из РегистрНакопления.ДвиженияДенСредств упорядочить по Дата убыв) как Выборка |
|||
24
Dev
21.08.18
✎
16:00
|
Выбрать первые &N такое не работает, я тоже так хотел бы
|
|||
25
Dev
21.08.18
✎
16:02
|
(22) Да, тестовое, нестандартная задача и я думаю как ее можно оптимально решить
|
|||
26
Бухгалтер76
21.08.18
✎
16:40
|
нумеруешь по порядку внутри кассы, потом отбираешь по пор.номеру < &Заданный, н-р так:
выбрать Т.Касса, Т.Ссылка, Т.СуммаДокумента, Количество(Т1.Ссылка) КАК Нпп из Документ.РасходныйКассовыйОрдер КАК Т левое соединение Документ.РасходныйКассовыйОрдер КАК Т1 по Т.Касса= Т1.Касса И (Т.Дата < Т1.Дата ИЛИ (Т.Дата = Т1.Дата И Т.Ссылка < Т1.Ссылка)) сгруппировать по Т.Касса, Т.Ссылка, Т.СуммаДокумента имеющие Количество(Т1.Ссылка) < 3 упорядочить по Т.Касса, Т.Дата, Т.Ссылка |
|||
27
Бухгалтер76
21.08.18
✎
16:41
|
насчет оптимально не знаю, но хоть как-то сначала реши!
|
|||
28
Dev
21.08.18
✎
17:00
|
И что тут получится ? А зачем мы два расходника соединяем и еще сравниваем в них поля дата и ссылка ?
|
|||
29
Бухгалтер76
21.08.18
✎
17:05
|
Нумеруешь документы по порядку внутри кассы, см. поле НПП.
|
|||
30
mistеr
21.08.18
✎
17:36
|
(28) Это математика, брат, хоть и элементарная. Требуется немного напрячь мозг.
|
|||
31
Buster007
21.08.18
✎
17:38
|
задача уг. Скорее всего какое-нибудь собеседование
|
|||
32
Малыш Джон
21.08.18
✎
17:43
|
(31) задачи не бывают уг или не уг, задачи бывают, которые ты можешь решить и с которыми ты справиться не можешь))
(25) если совсем оптимально, то как в (3), если чисто запросом, то, никуда не денешься - придется таблицу саму на себя умножать |
|||
33
Бухгалтер76
21.08.18
✎
17:44
|
(31) в такой постановке уг, но в жизни поставщики могут просить выгружать например последние 10 зарегистрированных поступлений
|
|||
34
Бухгалтер76
21.08.18
✎
17:45
|
(32) чем поможет стрЗаменить?
|
|||
35
leonidk
21.08.18
✎
17:50
|
(34) Программно сформировать текст запроса с нужным количеством N в "ВЫБРАТЬ ПЕРВЫЕ"
|
|||
36
Dev
21.08.18
✎
17:55
|
(29) Ну посчитал я сколько документов у меня, прилепил это поле и что дальше то, как теперь параметром передать количество доков, ИМЕЮЩИЕ не подходит, ИМЕЮЩИЕ это значит либо имеется у тебя в запросе такое количество либо не имеется, либо выводит он результат, либо нет, а результат там не меняется, сумма остается той же, не то это. Да тут как то отдельно надо рассчитать таблицы.Программно конечно проще можно было бы там СтрЗаменить и все
|
|||
37
Бухгалтер76
21.08.18
✎
17:58
|
(35) че-то не соображу, для каждой кассы отдельно?
|
|||
38
Бухгалтер76
21.08.18
✎
17:59
|
(36) ты бы запрос скопировал в консоль и посмотрел что будет
см. имеющие Количество(Т1.Ссылка) < 3 |
|||
39
Dev
21.08.18
✎
18:00
|
Ну вообще да, отбор там по кассе должен быть но суть не в этом, я уже скопировал переделал и посмотрел, ничего хорошего
|
|||
40
Бухгалтер76
21.08.18
✎
18:02
|
)) ну покажи что напеределывал
|
|||
41
Dev
21.08.18
✎
18:02
|
Получилось тоже самое что я и выше в запросе писал, только еще поле появилось с количеством доков, ну и группировки с сортировкой, нужно как то получить последние доки, передав параметр количествоДок
|
|||
42
Dev
21.08.18
✎
18:03
|
выбрать
Т.Касса, Т.Регистратор, Т.Сумма, Т.Период, Количество(Т1.Регистратор) КАК Нпп из РегистрНакопления.ДвиженияДенСредств КАК Т левое соединение РегистрНакопления.ДвиженияДенСредств КАК Т1 по Т.Касса= Т1.Касса сгруппировать по Т.Касса, Т.Регистратор, Т.Период, Т.Сумма имеющие Количество(Т1.Регистратор) = 3 упорядочить по Т.Касса, Т.Период, Т.Регистратор |
|||
43
Бухгалтер76
21.08.18
✎
18:05
|
Понятно. Разница в условии соединения, для начала. "Имеющие" пока закомментируй, чтоб видеть что получается
|
|||
44
Бухгалтер76
21.08.18
✎
18:06
|
А так ты на правильном пути
|
|||
45
Dev
21.08.18
✎
18:06
|
Вот это для чего вообще было И (Т.Дата < Т1.Дата
ИЛИ (Т.Дата = Т1.Дата И Т.Ссылка < Т1.Ссылка)) |
|||
46
Dev
21.08.18
✎
18:08
|
Да что там получится, ну выводятся у меня все поля, которые я запрашиваю с полем количество документов дублирующемся для каждого регистратора
|
|||
47
Малыш Джон
21.08.18
✎
18:11
|
(45) это такой способ нумерации строк в запросе, погугли
|
|||
48
Бухгалтер76
21.08.18
✎
18:11
|
Ну мне-то не рассказывай ))
|
|||
49
Малыш Джон
21.08.18
✎
18:11
|
(45) да и в принципе в книге знаний есть
|
|||
50
Dev
21.08.18
✎
18:12
|
Это я знаю и без гугла
|
|||
51
Бухгалтер76
21.08.18
✎
18:12
|
Это к (46)
|
|||
52
Dev
21.08.18
✎
18:13
|
А понял (51)
|
|||
53
Малыш Джон
21.08.18
✎
18:13
|
(50) тогда к чему было (45) ?
|
|||
54
Dev
21.08.18
✎
18:14
|
(53) Не про то подумал
|
|||
55
Dev
21.08.18
✎
18:15
|
Ну мы там вроде соединяли две таблицы такие же, дата там одинаковая или я ошибаюсь ?
|
|||
56
DrShad
21.08.18
✎
18:15
|
правильный ответ в (23)
|
|||
57
dka80
21.08.18
✎
18:15
|
||||
58
Dev
21.08.18
✎
18:16
|
(56) Не правильный это не работает
|
|||
59
Dev
21.08.18
✎
18:18
|
*Неправельный
|
|||
60
Бухгалтер76
21.08.18
✎
18:19
|
(56) есть по 5 документов в каждой из 5ти касс, надо выбрать по 3 последних документа в каждой кассе. Какой будет запрос с "выбрать первые"?
|
|||
61
dka80
21.08.18
✎
18:19
|
(59) все равно с ошибкой написал ))
|
|||
62
Dev
21.08.18
✎
18:22
|
))) Да Неправильный ))
|
|||
63
Dev
21.08.18
✎
18:25
|
(60) Там нужно вначале отсортировать и сгруппировать все, а потом выбирать, давайте мою задачу лучше решим
|
|||
64
Бухгалтер76
21.08.18
✎
18:27
|
(56) "выбрать первые" должно быть во вложенном запросе, а соединение идти с полями запроса верхнего уровня. 1с так не умеет, или есть какой-то хитрый ход
|
|||
65
Бухгалтер76
21.08.18
✎
18:28
|
(63) Так уже решили!
|
|||
66
dka80
21.08.18
✎
18:28
|
Ты (57) смотрел? Пронумеруй и отбери с номером <N
|
|||
67
Dev
21.08.18
✎
18:30
|
Если тебе нужно конкретное количество доков получить то можно упорядочить по дате убыв и выбрать первые N
|
|||
68
Dev
21.08.18
✎
18:30
|
(66) Сейчас попробую
|
|||
69
Dev
21.08.18
✎
18:32
|
А про нумерацию я и раньше смотрел
|
|||
70
dka80
21.08.18
✎
18:33
|
Нельзя выбрать первые N. Сами пробывали прежде чем советовать?
|
|||
71
Dev
21.08.18
✎
18:33
|
Ну в смысле первые сколько то
|
|||
72
Dev
21.08.18
✎
18:34
|
Конкретное число я имел ввиду
|
|||
73
Бухгалтер76
21.08.18
✎
18:36
|
(70) Вот и мне кажется - внутри группы нельзя
|
|||
74
DrShad
21.08.18
✎
18:49
|
(70) неоднакратно пробовали, в чем проблема?
|
|||
75
dka80
21.08.18
✎
19:02
|
(74) я про &N - в качестве параметра, а не числа
|
|||
76
Dev
21.08.18
✎
19:07
|
(66) Да все правильно, получилось, не думал что так будет работать, но работает, добавил в условие сравнение даты и все
|
|||
77
DrShad
21.08.18
✎
19:07
|
текст запроса можно и собрать
|
|||
78
Dev
21.08.18
✎
19:09
|
выбрать
Т.Касса, Т.Регистратор, Т.Сумма, Т.Период, Количество(Т1.Регистратор) КАК Нпп из РегистрНакопления.ДвиженияДенСредств КАК Т левое соединение РегистрНакопления.ДвиженияДенСредств КАК Т1 по Т.Касса= Т1.Касса И Т.Период <= Т1.Период сгруппировать по Т.Касса, Т.Регистратор, Т.Период, Т.Сумма имеющие Количество(Т1.Регистратор) <= 3 упорядочить по Т.Касса, Т.Период, Т.Регистратор |
|||
79
Dev
21.08.18
✎
19:10
|
Бухгалтер тоже был прав )
|
|||
80
bootini
21.08.18
✎
19:16
|
(78) Тебе надо собрать n списаний и n поступлений и их просуммировать?
Или тупо n записей регистра? |
|||
81
Dev
21.08.18
✎
19:19
|
(80) Там же вначале написано что параметрами передать количество и кассу и чтобы в консоле работало
|
|||
82
Бухгалтер76
21.08.18
✎
19:20
|
(74) есть по 5 документов в каждой из 5ти касс, надо выбрать по 3 последних документа в каждой кассе. Какой будет запрос с "выбрать первые"?
|
|||
83
Dev
21.08.18
✎
19:25
|
(80) Записей регистра и получить сумму в итоге поступлений и списаний в разрезе кассы
|
|||
84
bootini
21.08.18
✎
19:26
|
(83) понял
|
|||
85
ILM
гуру
21.08.18
✎
19:27
|
В любой кассе документы должны быть пронумерованы для идентификации. Может стоит использовать поле номер документа?
|
|||
86
Dev
21.08.18
✎
19:30
|
А смысл ? Если документ будет проведен задним числом скажем
|
|||
87
DrShad
21.08.18
✎
21:15
|
Сколько даешь за текст запроса?
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |