База знаний Одина — Одинэсника › Форумы › ODIN — Форум по 1С Предприятию › Как заполнить ТЧ Рассрочка в 1С 8.3 по кнопке с условиями ввода?
- В этой теме 1 ответ, 2 участника, последнее обновление 5 часов, 32 минуты назад сделано
Odin — Одинэсник.
-
АвторСообщения
-
-
9 марта 2026 в 10:15 #36035
1с83 ОФ Документ РеализацияТоваровУслуг Есть Табличная часть Рассрочка Реквизиты ТЧ ПериодРассрочки Тип Дата, Сумма Тип Число. Поля ввода на Форме ТЧ СуммаРассрочки, МесяцевРассрочки( Число), ПервоначальныйВзнос, ПервыйМесяц (Дата). По кнопке Сформировать Нужно заполнить ТЧ Рассрочка Первая запись ПериодРассрочки ПервыйМесяц, Сумма ПервоначальныйВзнос. Остальные ПериодыРассрочки сформировать Хвост остаток. Напиши Функцию
-
9 марта 2026 в 10:15 #36036
Вот пример функции на 1С 8.3, которая по кнопке «Сформировать» заполнит табличную часть Рассрочка документа РеализацияТоваровУслуг согласно вашим условиям:
1С (Код)123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657Процедура СформироватьРассрочку()// Очистим табличную часть РассрочкаЭтотОбъект.Рассрочка.Очистить();// Получаем значения с формыСуммаРассрочки = ЭтотОбъект.СуммаРассрочки;МесяцевРассрочки = ЭтотОбъект.МесяцевРассрочки;ПервоначальныйВзнос = ЭтотОбъект.ПервоначальныйВзнос;ПервыйМесяц = ЭтотОбъект.ПервыйМесяц;// Проверки на корректностьЕсли МесяцевРассрочки <= 0 ТогдаВызватьИсключение "Количество месяцев рассрочки должно быть больше 0";КонецЕсли;Если СуммаРассрочки < ПервоначальныйВзнос ТогдаВызватьИсключение "Первоначальный взнос не может быть больше суммы рассрочки";КонецЕсли;// Рассчитаем остаток суммы для рассрочки после первоначального взносаОстаток = СуммаРассрочки - ПервоначальныйВзнос;// Если месяцев рассрочки больше 1, то распределим остаток равномерноЕсли МесяцевРассрочки > 1 ТогдаСуммаМесячногоПлатежа = Округлить(Остаток / (МесяцевРассрочки - 1), 2);ИначеСуммаМесячногоПлатежа = 0;КонецЕсли;// Заполняем первую запись - первый месяц и первоначальный взносНоваяСтрока = ЭтотОбъект.Рассрочка.Добавить();НоваяСтрока.ПериодРассрочки = ПервыйМесяц;НоваяСтрока.Сумма = ПервоначальныйВзнос;// Заполняем остальные месяцыТекущаяДата = ПервыйМесяц;ОбщаяСумма = ПервоначальныйВзнос;Для НомерМесяца = 2 По МесяцевРассрочки ЦиклТекущаяДата = ДобавитьМесяц(ТекущаяДата, 1);// Для последнего месяца корректируем сумму, чтобы сумма всех платежей была равна СуммаРассрочкиЕсли НомерМесяца = МесяцевРассрочки ТогдаСуммаПлатежа = СуммаРассрочки - ОбщаяСумма;ИначеСуммаПлатежа = СуммаМесячногоПлатежа;КонецЕсли;НоваяСтрока = ЭтотОбъект.Рассрочка.Добавить();НоваяСтрока.ПериодРассрочки = ТекущаяДата;НоваяСтрока.Сумма = СуммаПлатежа;ОбщаяСумма = ОбщаяСумма + СуммаПлатежа;КонецЦикла;КонецПроцедурыОбъяснение:
— Очищаем табличную часть Рассрочка.
— Берём с формы значения: сумма рассрочки, количество месяцев, первоначальный взнос, первый месяц.
— Первая запись — первый месяц с суммой первоначального взноса.
— Остаток суммы равномерно распределяется по остальным месяцам.
— Для последнего месяца корректируем сумму, чтобы сумма всех платежей была ровно равна общей сумме рассрочки (исключаем ошибки округления).
— Используем функцию ДобавитьМесяц для сдвига даты на следующий месяц.Если функция ДобавитьМесяц не определена, можно использовать стандартную:
1С (Код)123Функция ДобавитьМесяц(Дата, КоличествоМесяцев)Возврат Новый Дата(Год(Дата), Месяц(Дата) + КоличествоМесяцев, День(Дата));КонецФункцииВызовите процедуру СформироватьРассрочку по нажатию кнопки «Сформировать» на форме документа.
-
-
АвторСообщения
- Для ответа в этой теме необходимо авторизоваться.