Файлы к уроку: Файлы доступны только спонсорам канала. Оформите спонсорскую подписку всего за 49 — 149 рублей, если хотите получить максимум от обучения. Стать спонсором канала: https://www.youtube.com/channel/UCwAru3vDmH-IdYtwK7JWN4w/join
В этом уроке мы продолжим разбирать функцию List.Generate.
List.Generate позволяет генерировать целые таблицы. Здесь мы сгенерируем целую таблицу — график платежей по кредиту.
Исходные данные — это параметры кредита — процентная ставка, количество платежей и сумма кредита.
Сам алгоритм будет достаточно прост.
- В параметре initial мы создадим запись из нескольких полей: счетчик периода, начальный баланс, ежемесячный платеж
- В параметре condition укажем, что цикл будет продолжаться до тех пор, пока период меньше количества платежей
- В параметре next создадим новое значение периода и новое значение баланса, а значение платежа останется постоянным
- В параметре selector введем оставшиеся поля: процент, тело кредита, конечный баланс
Формула будет выглядеть так:
List.Generate(
// параметр initial: счетчик, начальный баланс и формула платежа
() => [
Counter = 0,
balance = loan_amt,
payment
= loan_amt
* ((interest / 12) * Number.Power(1 + (interest / 12), num_payments))
/ (Number.Power(1 + (interest / 12), num_payments) - 1)
],
// цикл продолжается пока счетчик меньше количества платежей
each [Counter] < num_payments,
// платеж остается постоянным, счетчик увеличивается на 1,
// со второго месяца и до конца действует формула баланса
each [
balance
= loan_amt
* (Number.Power(1 + (interest / 12), num_payments)
- Number.Power(1 + (interest / 12), [Counter] + 1)
)
/ (Number.Power(1 + (interest / 12), num_payments) - 1),
payment = [payment],
Counter = [Counter] + 1
],
// создаем недостающие столбцы
each [
Месяц = [Counter] + 1,
Начальный_баланс = [balance],
Платеж = [payment],
Процент = [balance] * interest / 12,
Тело_кредита = [payment] - [balance] * interest / 12,
Конечный_баланс = [balance] - ([payment] - [balance] * interest / 12)
]
)