|
Подскажите с запросом | ☑ | ||
---|---|---|---|---|
0
Juliette_
Juliette 08.07.23
✎
11:01
|
На входе есть таблица параметров начисления пени
от 0 до 30 дней 5 % от 31 до 99999 дней 7% Есть сумма долга и дней просрочки. Пусть 1000 руб и 58 дней Хочется сделать расчет суммы пени запросом , а не простым перебором. Строкой получается 1000 * 30 * 5% + 1000 * 28 * 7% Можно ли реализовать это запросом или трудоемко? ) |
|||
1
Greeen
08.07.23
✎
11:06
|
Можно =)
|
|||
2
Juliette_
Juliette 08.07.23
✎
11:10
|
(1) не знаю как, можно примером?
|
|||
3
Greeen
08.07.23
✎
11:14
|
Как вариант
1)Делаете первую временную таблицу, где дней просрочки меньше 30. В ней делаете итог по формуле 1000 * 30 * 5%, соотв. получаем Пени до 30 дней 2)Делаете вторую - там уже дней проcрочки больше 30, получаем Пени больше 30 дней 3)В итоговой таблице делаете сумму Пени |
|||
4
Juliette_
Juliette 08.07.23
✎
12:37
|
(3) спасибо, попробую собрать ВТ запросом в цикле
|
|||
5
ДедМорроз
08.07.23
✎
17:23
|
А почему сразу нельзя собрать таблицу,где сумма и число дней просрочки,а уже потом на эту таблицу наложить условия по дням ?
|
|||
6
Смотрящий
09.07.23
✎
09:50
|
Запрос.Текст = "
|//////////////////////////////////////////////////////////////////////////////// |// Запрос 0 |ВЫБРАТЬ | ПорогиТаблица.ПорогДниНачало КАК ПорогДниНачало, | ПорогиТаблица.ПорогДниКонец КАК ПорогДниКонец, | ПорогиТаблица.ПорогПеняПроцент КАК ПорогПеняПроцент |ПОМЕСТИТЬ втПорогиТаблица |ИЗ | &ПорогиТаблица КАК ПорогиТаблица |; | |//////////////////////////////////////////////////////////////////////////////// |// Запрос 1 |ВЫБРАТЬ 0 КАК Цифра |ПОМЕСТИТЬ втЦифры |ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 1 |ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 2 |ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 3 |ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 4 |ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 5 |ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 6 |ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 7 |ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 8 |ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 9 |; | |//////////////////////////////////////////////////////////////////////////////// |// Запрос 2 |ВЫБРАТЬ ПЕРВЫЕ " + ПросрочкаДни + " | втЦифры1.Цифра + 10 * втЦифры2.Цифра + 100 * втЦифры3.Цифра КАК ДниНомер |ПОМЕСТИТЬ втМатрица |ИЗ | втЦифры КАК втЦифры1, | втЦифры КАК втЦифры2, | втЦифры КАК втЦифры3 |ГДЕ | НЕ (втЦифры1.Цифра + 10 * втЦифры2.Цифра + 100 * втЦифры3.Цифра = 0) |УПОРЯДОЧИТЬ ПО | ДниНомер |; | |//////////////////////////////////////////////////////////////////////////////// |// Запрос 3 |ВЫБРАТЬ | втМатрица.ДниНомер КАК ДниНомер, | &ПросрочкаСумма КАК Сумма, | втПорогиТаблица.ПорогПеняПроцент КАК ПеняПроцент, | &ПросрочкаСумма / 100 * втПорогиТаблица.ПорогПеняПроцент КАК ПеняСумма |ИЗ | втМатрица КАК втМатрица | | ЛЕВОЕ СОЕДИНЕНИЕ втПорогиТаблица КАК втПорогиТаблица | ПО втМатрица.ДниНомер >= втПорогиТаблица.ПорогДниНачало | И втМатрица.ДниНомер <= втПорогиТаблица.ПорогДниКонец |УПОРЯДОЧИТЬ ПО | втМатрица.ДниНомер |"; Запрос.УстановитьПараметр("ПросрочкаСумма ", 1000); Запрос.УстановитьПараметр("ПорогиТаблица", ПорогиТаблица); ПорогиТаблица: ПорогДниНачало - число, количество дней начала периода просрочки ПорогДниКонец- число, количество дней окончание периода просрочки ПорогПеняПроцент - число, процент пени за период |
|||
7
егаис
10.07.23
✎
08:19
|
(6) это очень красиво, спасибо
с небольшими вставками (ставка рефинансирования) все работает |
|||
8
егаис
10.07.23
✎
08:20
|
от коллеги привет )
|
|||
9
Конструктор1С
10.07.23
✎
19:18
|
>>Хочется сделать расчет суммы пени запросом , а не простым перебором
Ради чего? Чтобы вместо простого алгоритма в коде получить уродливый запрос? Фигнёй не надо страдать |
|||
10
Конструктор1С
10.07.23
✎
19:19
|
(7) чем красиво?
|
|||
11
mistеr
11.07.23
✎
08:23
|
(9) Чтобы когда придется менять алгоритм, снова его позвали, а не студента.
|
|||
12
Андрей_Андреич
naïve
11.07.23
✎
08:28
|
(9) А никто фигней и не страдает - ей наслаждаются
|
|||
13
ASU_Diamond
11.07.23
✎
08:29
|
(0) Если таблица статична для всех, то всё делается математикой
|
|||
14
Конструктор1С
11.07.23
✎
10:05
|
(11) ну разве что
|
|||
15
Simod
11.07.23
✎
10:11
|
(0) Использование запроса оправдано в случае, если осуществляется выборка данных и одновременно расчет пени. Иначе, лишний переход с сервера приложения на сервер СУБД с сопутствующими накладными расходами.
|
|||
16
lodger
11.07.23
✎
10:14
|
(0) будто запрос в субд не перебор делает.
если вводные данные находятся в таблице БД и надо их прочитать перед расчётами, то да. часть математики можно сгрузить на СУБД. если вводная в табзнач или в ТЧ текущего объекта, и если вам не нужны подробности из таблиц БД, то самый рациональный ход = обойти всё перебором и быстренько посчитать. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |