|
Убывающие итоги в запросе | ☑ | ||
---|---|---|---|---|
0
Tornadius
01.12.16
✎
12:52
|
Всем доброго дня. Прошу помощи.
нужен запрос для расчета убывающих итогов: А 10000 B C 1 100 9 900 2 200 9 700 3 300 9 400 4 400 9 000 5 500 8 500 6 600 7 900 7 700 7 200 8 800 6 400 9 900 5 500 10 1 000 4 500 Где A просто число (любое), С1 = А - B1, С2 = С1- B2, С3 = C2 - B3 и т.д. Другими словами всегда нужно брать значение из предыдущей строки. Очень нужно. Пожалуйста. |
|||
1
NcSteel
01.12.16
✎
12:53
|
СКД
|
|||
2
torgm
01.12.16
✎
12:57
|
(0) Номер строки в обрабатываемой таблице есть?
Если есть, то через соединение по меньшим строкам. |
|||
3
torgm
01.12.16
✎
12:59
|
(0) во второй колонке всегда увеличение на 100? или там могут быть произвольные числа? В произвольном порядке?
|
|||
4
Tornadius
02.12.16
✎
06:54
|
числа могут быть произвольными, кратные 100 взяты для примера.
вообще задача разложить сумму А на составляющие из колонки В. Как получить нарастающие итоги понятно - левое соединение. а вот с убывающими итогами проблема. вместо номера строки обычно стоит период либо регистратор. Что такое соединение по меньшим строкам? Метод "Батерфляй"? он не подходит. Строки в таблице не имеют четкого индекса. |
|||
5
Tornadius
02.12.16
✎
06:55
|
(1) Для СКД и задумывается. отсюда и задача получить расчет только запросом
|
|||
6
echo77
02.12.16
✎
07:12
|
||||
7
Tornadius
02.12.16
✎
07:35
|
(6)
1)Как реализовать функцию языка выражений СКД ВычислитьВыражение() в тексте запроса? Это нужно чтобы отобрать только те строки которые составляют начальную сумму: Например есть долг - 1300 руб Есть реализации 1) на 250 руб 2) на 800 руб 3) на 350 руб 4) на 500 руб 5) на 170 руб в результат должны попасть только строки: 1) 250 2) 800 3) 350 строки 4 и 5 уже лишние |
|||
8
Мимохожий Однако
02.12.16
✎
08:03
|
(7) Ты лишние строки уже получил или просто теоретизируешь?
|
|||
9
Tornadius
02.12.16
✎
12:45
|
(8) да какая уж тут теория. есть долги по контрагентам, есть движения, есть число дней отсрочки платежа, надо разложить сумму долга по документам реализации с учетом числа дней отсрочки платежа. Другими словами - найти все документы реализаций суммы из которых попали в просроченную задолженность. Даже если просто брать регистр "Взаиморасчеты с контрагентами" получается очень долгий расчет. необходимо отбирать только те документы которые составляют сумму долга.
|
|||
10
aleks_default
02.12.16
✎
12:49
|
(5)Только ты понимаешь о чем речь, больше никто.
|
|||
11
vicof
02.12.16
✎
12:51
|
Взять остатки, отнять обороты
|
|||
12
f_vadim
02.12.16
✎
12:59
|
ВЫБРАТЬ ДАТАВРЕМЯ(2016, 1, 1) КАК Дата, 100 КАК Сумма ПОМЕСТИТЬ ВТ ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ ДАТАВРЕМЯ(2016, 2, 1), 200 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ ДАТАВРЕМЯ(2016, 3, 1), 300 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ ДАТАВРЕМЯ(2016, 4, 1), 400 ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ВТ.Дата, ВТ.Сумма, 10000 - Сумма(ВТ1.Сумма) ИЗ ВТ КАК ВТ ЛЕВОЕ СОЕДИНЕНИЕ ВТ КАК ВТ1 ПО ВТ.Дата >= ВТ1.Дата СГРУППИРОВАТЬ ПО ВТ.Дата, ВТ.Сумма |
|||
13
Ildarovich
02.12.16
✎
13:45
|
Посмотрите вот эту статью http://catalog.mista.ru/public/262300/ . Возможно, метод слишком сложный, но зато быстрый. В конце статьи есть ссылки на более простые методы.
Чтобы отразить отсрочку к дате регистратора нужно прибавить нужное число дней в соответствующем запросе к оборотам регистра взаиморасчетов. |
|||
14
Tornadius
03.12.16
✎
08:19
|
(13)
1) как быть если число дней отсрочки у каждого контрагента свое - т.е. разное? 2) Как учитываются этим методом возвраты и корректировки долга? а метод интересный, вот только разбивка долга не всегда совпадает с суммой по регистратору. И очень много отрицательных долгов после распределения, а это уже не правильно. |
|||
15
APXi
03.12.16
✎
09:48
|
А потом пройдет 6 месяцев и ты (твой приемник) будешь сидеть над портянкой запроса в 10к., строк и думать, для чего я это делал, где же косяк, почему что то не так работает.
|
|||
16
Ildarovich
03.12.16
✎
13:04
|
(14)
1) по регистратору можно найти контрагента и взять острочку оттуда - это не проблема; 2) этим методом возвраты и корректировки учитываются как и любым другим. Все, что нужно методу - это таблица из колонок: "время отгрузки"(возможно, сдвинутое на число дней отсрочки) , "сумма отгрузки". Возвраты товара не учитываются вообще и не должны учитываться, поскольку это не отгрузки. Возвраты денег учитываются как отгрузки, а корректировки - в зависимости от знака. Если у вас есть другие соображения - расскажите о них. А вот это "разбивка долга не всегда совпадает с суммой по регистратору. И очень много отрицательных долгов после распределения" вообще не понял. Думаю, к математике метода это не относится, а относится к подготовке исходных данных для его работы, поэтому применению метода это помешать не должно. |
|||
17
iceman2112
03.12.16
✎
13:36
|
(5) В СКД это и делается все. ВычислитьВыражение
|
|||
18
Tornadius
08.12.16
✎
09:18
|
(16) "разбивка долга не всегда совпадает с суммой по регистратору. это когда сумма по регистратору не равна той доли долга, что получается расчетным путем. Бывает такое когда в последнюю секунду суток пихают очень много документов
|
|||
19
Tornadius
08.12.16
✎
09:23
|
(16) а математика действительно хорошая, особенно реализация одним запросом. Автору большой плюс.
|
|||
20
Tornadius
08.12.16
✎
09:26
|
(17) реализация запроса от Ildarovich работает быстрее чем реализация в СКД через ВычислитьВыражение. У меня чуть больше 18000 контрагентов примерно за 8 лет. Время работы запроса 32 секунды. (по версии консоли конструктора запросов :) )
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |