Форум программистов, компьютерный форум, киберфорум
Maks
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  

Кредитный калькулятор

Запись от Maks размещена 05.08.2026 в 07:22. Обновил(-а) Maks 05.08.2026 в 15:49 (Дополнение)
Показов 2984 Комментарии 0

Решение задачи по прикладной информатике средствами 1С.

Задача:
Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов платежей: ежемесячный платёж, общую сумму выплат и переплату по процентам.

Решение:
Создано расширение конфигурации, в данном расширении создано перечисление "ВидыПлатежей" со значениями "Аннуитетный" и "Дифференцированный".
Создана обработка со следующими реквизитами:
- ВидПлатежа (ПеречислениеСсылка.КК_ВидыПлатежей);
- СуммаЗайма (Число 10, 2);
- ПроцентнаяСтавка (Число 10, 2);
- ПервоначальныйВзнос (Число 10, 2);
- СрокКредита (Число 10, 2);
- ЕжемесячныйПлатеж (Строка, 20);
- СуммаВсехПлатежей (Число 10, 2);
- НачисленныеПроценты (Число 10, 2);

Создана форма обработки, на форме созданы команды "Рассчитать" и "Очистить".

Листинг:
1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
&НаКлиенте
Процедура Рассчитать(Команда) 
    ОчиститьСообщения();
    РассчитатьНаСервере(); 
КонецПроцедуры 
 
&НаСервере
Процедура РассчитатьНаСервере()     
    Если Объект.СуммаЗайма = 0 ИЛИ Объект.СрокКредита = 0
        ИЛИ Объект.ПроцентнаяСтавка = 0 Тогда 
        Сообщить("Заполнены не все обязательные поля."); 
        Возврат;
    КонецЕсли;
    
    Если ЗначениеЗаполнено(Объект.ВидПлатежа) Тогда   
        Если Объект.ВидПлатежа = Перечисления.КК_ВидыПлатежей.Аннуитетный Тогда
            РассчитатьАннуитетный();
        Иначе
            РассчитатьДифференцированный();
        КонецЕсли;  
    Иначе
        Сообщить("Необходимо выбрать тип платежа");
        Возврат;
    КонецЕсли;
КонецПроцедуры
 
&НаСервере
Процедура РассчитатьАннуитетный()         
    ЕП = 0;
    
    Ставка = Объект.ПроцентнаяСтавка;  
    СрокМесяцев = Объект.СрокКредита;    
    Взнос = Объект.ПервоначальныйВзнос;  
    СуммаКредита = Объект.СуммаЗайма - Взнос;
    
    Если СрокМесяцев = 0 ИЛИ СуммаКредита = 0 Тогда
        Возврат;
    КонецЕсли;
    
    МесячнаяСтавка = Ставка / 12 / 100; 
    
    Если Объект.ПроцентнаяСтавка = 0 Тогда
        ЕП = СуммаКредита / СрокМесяцев; 
    Иначе
        Степень = Pow(1 + МесячнаяСтавка, СрокМесяцев);
        Множитель = (МесячнаяСтавка * Степень) / (Степень - 1);
        ЕП = СуммаКредита * Множитель;
    КонецЕсли;
    
    Объект.ЕжемесячныйПлатеж = Окр(ЕП, 2);
    Объект.СуммаВсехПлатежей = ЕП * СрокМесяцев;
    Объект.НачисленныеПроценты = Объект.СуммаВсехПлатежей - СуммаКредита;   
КонецПроцедуры 
 
&НаСервере
Процедура РассчитатьДифференцированный()   
    Ставка = Объект.ПроцентнаяСтавка;
    СрокМесяцев = Объект.СрокКредита;
    СуммаКредита =  Объект.СуммаЗайма - Объект.ПервоначальныйВзнос;
    
    Если СрокМесяцев = 0 Или СуммаКредита = 0 Тогда
        Возврат;
    КонецЕсли;
    
    МесячнаяСтавка = Ставка / 12 / 100;
    
    ДТ = СуммаКредита / СрокМесяцев;   
    ЕП = ДТ + СуммаКредита * МесячнаяСтавка;
    ЕП = Окр(ЕП, 2);
    
    ПроцентыПоследний = ДТ * МесячнаяСтавка; 
    ПоследнийПлатеж = ДТ + ПроцентыПоследний; 
    СуммаВсехПлатежей = (ЕП + ПоследнийПлатеж) * СрокМесяцев / 2;
    СуммаВсехПлатежей = Окр(СуммаВсехПлатежей, 2); 
    НачисленныеПроценты = СуммаВсехПлатежей - СуммаКредита;
    НачисленныеПроценты = Окр(НачисленныеПроценты, 2);
    
    Если ЕП = ПоследнийПлатеж Тогда
        Объект.ЕжемесячныйПлатеж = ЕП;  
    Иначе
        Объект.ЕжемесячныйПлатеж = "от " + Формат(ЕП, "ЧЦ=15; ЧДЦ=2; ЧГ= ") + 
                                     " до " + Формат(ПоследнийПлатеж, "ЧЦ=15; ЧДЦ=2; ЧГ= ");
    КонецЕсли;
 
    Объект.СуммаВсехПлатежей = СуммаВсехПлатежей;
    Объект.НачисленныеПроценты = НачисленныеПроценты;   
КонецПроцедуры
 
&НаСервере
Процедура ОчиститьНаСервере() 
    Объект.ЕжемесячныйПлатеж = "";
    Объект.СуммаВсехПлатежей = 0;
    Объект.НачисленныеПроценты = 0;
    Объект.ПервоначальныйВзнос = 0;
    Объект.ПроцентнаяСтавка = 0;
    Объект.СуммаЗайма = 0;
    Объект.СрокКредита = 0; 
    Объект.ВидПлатежа = Перечисления.КК_ВидыПлатежей.ПустаяСсылка();  
КонецПроцедуры
 
&НаКлиенте
Процедура Очистить(Команда)
    ОчиститьНаСервере();
КонецПроцедуры
 
&НаСервере
Процедура ВидПлатежаПриИзмененииНаСервере()     
    Объект.ЕжемесячныйПлатеж = "";
    Объект.СуммаВсехПлатежей = 0;
    Объект.НачисленныеПроценты = 0;
КонецПроцедуры
 
&НаКлиенте
Процедура ВидПлатежаПриИзменении(Элемент)
    ВидПлатежаПриИзмененииНаСервере();
КонецПроцедуры
Результат:
Нажмите на изображение для увеличения
Название: Аннуитетный.jpg
Просмотров: 88
Размер:	34.1 Кб
ID:	11961 Нажмите на изображение для увеличения
Название: Дифференцированный.jpg
Просмотров: 71
Размер:	32.4 Кб
ID:	11962

Расширение: КредитныйКалькулятор.zip

Контрольная сумма: 6EZoOWzK7v9iWQ+rElrsdS+D+O4=
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Всего комментариев 0
Комментарии
 
Новые блоги и статьи
GitHub Copilot в JetBrains: модель по умолчанию, Fix и контроль MCP
and_y87 12.10.2026
10 октября 2026 года GitHub обновил Copilot для JetBrains: добавил настройки стартовой модели, исправления из диагностики и управление автозапуском MCP. Поддержка IDE 2025. 1 прекращена — требуется. . .
GitHub Copilot в JetBrains: модель по умолчанию, Fix и контроль MCP
and_y87 12.10.2026
10 октября 2026 года GitHub обновил Copilot для JetBrains: добавил настройки стартовой модели, исправления из диагностики и управление автозапуском MCP. Поддержка IDE 2025. 1 прекращена — требуется. . .
День 5 из 28: Codex подсказывает следующий запрос
and_y87 12.10.2026
9 октября 2026 года OpenAI запустила бету Composer predictions — подсказок следующего сообщения в текущем диалоге Codex. Это помощь с формулировкой запроса, а не автоматическое продолжение задачи. . . .
Запустил конкурс "тем и промптов для текстовых квестов созданных почти чисто ИИ"
Adler 06.10.2026
Всем привет! За последние три-четыре дня я создал более 16 текстовых квестовых игр используя преимущественно по одному запросу к ИИ на игру. Мне так понравилось смотреть все ветки/ сцены во всех. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru