Расчет ЧИСТВНДОХ в 1С 8

08.07.14

Разработка - Универсальные функции

Обработка расчета, аналогичная ЧИСТВНДОХ в excel
Очень поможет всем МФО (микрофинансовым организациям)
ЧИСТВНДОХ  - функция excel, которая возвращает внутреннюю ставку доходности для графика денежных потоков, которые не обязательно носят периодический характер.

Скачать исходный код

Наименование Файл Версия Размер
ver10
.epf 8,27Kb
68
.epf 1.0 8,27Kb 68 Скачать
Этот алгоритм - результат переработки алгоритма на VBA.
Этот сайт мне показала справка моего excel.
http://www.programmersforum.ru/showthread.php?t=97344
Подобные расчеты пригодятся всем, чья деятельность связана с МФО, т.к. с 01.07.14 вступает в полную силу закон о потребительских кредитах, предоставляемых физическим лицам (Федеральный закон от 21.12.2013 N 353-ФЗ «О потребительском кредите (займе)»)


ЧИСТВНДОХ

См. также

Вставляем картинку из буфера обмена (платформа 1С 8.3.24)

Универсальные функции Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Задача: вставить картинку из буфера обмена на форму средствами платформы 1С.

1 стартмани

18.03.2024    2882    2    John_d    11    

56

GUID в 1С 8.3 - как с ними быть

Универсальные функции Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Пришлось помучиться с GUID-ами немного, решил поделиться опытом, мало ли кому пригодится.

12.02.2024    5032    atdonya    22    

51

Переоткрытие внешних обработок

Универсальные функции Платформа 1С v8.3 Бесплатно (free)

На заключительных этапах, когда идет отладка или доработка интерфейса, необходимо много раз переоткрыть внешний объект. Вот один из способов автоматизации этого.

30.11.2023    4100    ke.92@mail.ru    16    

62

Валидация JSON через XDTO (включая массивы)

WEB-интеграция Универсальные функции Механизмы платформы 1С Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

При работе с интеграциями рано или поздно придется столкнуться с получением JSON файлов. И, конечно же, жизнь заставит проверять файлы перед тем, как записывать данные в БД.

28.08.2023    9366    YA_418728146    6    

143

Печать непроведенных документов для УТ, КА, ERP. Настройка печати по пользователям, документам и печатным формам

Пакетная печать Печатные формы Адаптация типовых решений Универсальные функции Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Абонемент ($m)

Расширение для программ 1С:Управление торговлей, 1С:Комплексная автоматизация, 1С:ERP, которое позволяет распечатывать печатные формы для непроведенных документов. Можно настроить, каким пользователям, какие конкретные формы документов разрешено печатать без проведения документа.

2 стартмани

22.08.2023    2218    24    progmaster    7    

3

Расширение: Быстрые отборы через буфер [Alt+C] Копировать список, [Alt+V] Вставить список, [Ctrl+C] Копировать из файлов

Инструментарий разработчика Универсальные функции Платформа 1С v8.3 Конфигурации 1cv8 1С:Розница 2 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Зарплата и Управление Персоналом 3.x Абонемент ($m)

Копирует в буфер значения из списков, из ячеек отчетов, таблиц, настроек списков, других отборов и вставляет в выбранную настройку отбора. Работает с Объект не найден. Работает как в одной так и между разными базами 1С. Использует комбинации [Alt+C] Копировать список, [Alt+V] Вставить список. Также для копирования данных используется стандартная [Ctrl+C] (например из открытого xls, mxl, doc и т.п. файла скопировать список наименований)

1 стартмани

13.10.2022    16343    142    sapervodichka    112    

130

Система контроля ведения учета [БСП]

Универсальные функции Механизмы типовых конфигураций БСП (Библиотека стандартных подсистем) Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

В данном материале рассмотрим типовой алгоритм подсистемы контроля учета БСП в конфигурациях на примерах.

18.07.2022    7350    quazare    8    

110
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. gull22 95 09.07.14 10:22 Сейчас в теме
2. Enya_06 07.08.14 19:04 Сейчас в теме
Отлично! Полезный и важный труд!
+
3. ag.baranov 21.08.14 15:51 Сейчас в теме
Оптимизированный код для 7.7

Функция Экспонента(Х)
    Р=1;
    Дельта=1;      
    К=1;
    Пока ?(Дельта>0,Дельта,-Дельта)>0.000001 Цикл
        Дельта=Дельта*Х/К;
        К=К+1;
        Р=Р+Дельта;
    КонецЦикла;
    Возврат окр(Р,5);    
КонецФункции   

Функция степень(а,в) 
    возврат Экспонента(Лог(а)*в);
КонецФункции   

Функция Отклонение(Предп)
	Р = -СуммаЗайма;
	ВыбратьСтроки();
	Пока ПолучитьСтроку() = 1 Цикл		
	    Р = Р + Всего / Степень(1 + Предп,(ДатаПлатежа - ДатаДок)/365);
	КонецЦикла;
	Возврат Р
КонецФункции

Функция ЧИСТВНДОХ()
	Если СуммаЗайма = 0  Тогда
	    Возврат 0;
	КонецЕсли;
	Если КоличествоСтрок() = 0 Тогда
	    Возврат 0
	КонецЕсли;
	Переплата = (Итог("Всего") / СуммаЗайма); 
	ПолучитьСтрокуПоНомеру(КоличествоСтрок());
	Лет = (ДатаОкончания - ДатаДок) / 365;
	Предп = Степень(Переплата,2/Лет) - 1;	//начальная оценка ставки
	
	Р = Отклонение(Предп);
	Если Р > 0 Тогда
		Шаг = 0.382 * Предп;
	Иначе
		Шаг = -0.382 * Предп;
	КонецЕсли;
	Точность = 0.00001;
	Пока (Шаг < -Точность) ИЛИ (Шаг > Точность) Цикл
		Предп = Предп + Шаг;
		Р = Отклонение(Предп);
		Если Р * Шаг < 0 Тогда
			Шаг = -Шаг * 0.382;//из метода золотого сечения
		КонецЕсли;
	КонецЦикла;
	Возврат Предп;
КонецФункции	
Показать
newtraveller; ak_nikolay; unichkin; +3
4. unichkin 1563 10.11.17 18:18 Сейчас в теме
(3) Спасибо! Перегнал ваш код в v8, работает быстрее чем алгоритм публикации

// Реализация функции Excell "ЧИСТВНДОХ"
//
//Параметры:
// ТаблицаИсточник - ТаблицаЗначений
// ИмяКолонкиПериод - Число
// ИмяКолонкиСумма - Строка
// Точность - Число
//
//Возвращаемое значение: 
//	Число
//
Функция ЧИСТВНДОХ(ТаблицаИсточник, ИмяКолонкиПериод = "Период", ИмяКолонкиСумма = "Сумма", Точность = 0.0001)

	Если ТаблицаИсточник.Итог(ИмяКолонкиСумма) = 0 Тогда
		Возврат 0;		
	КонецЕсли; 
	
	ТаблицаРасчета = Новый ТаблицаЗначений;
	ТаблицаРасчета.Колонки.Добавить("Дата");
	ТаблицаРасчета.Колонки.Добавить("РазностьДат");
	ТаблицаРасчета.Колонки.Добавить("Сумма");
	
	ПерваяДата = НачалоДня(ТаблицаИсточник[0][ИмяКолонкиПериод]);
	
	Для каждого СтрокаИсточник Из ТаблицаИсточник Цикл		
		ТекДата = СтрокаИсточник[ИмяКолонкиПериод];
		
		СтрокаРасчета = ТаблицаРасчета.Добавить();
		СтрокаРасчета.Дата = ТекДата;
		СтрокаРасчета.РазностьДат = (НачалоДня(ТекДата) - ПерваяДата) / (24 * 60 * 60) / 365;
		СтрокаРасчета.Сумма = СтрокаИсточник[ИмяКолонкиСумма];		
	КонецЦикла; 
	
    ПСК = 0.1;
	Сумма = 0;
	Для каждого СтрокаРасчета Из ТаблицаРасчета Цикл
		Сумма = Сумма + СтрокаРасчета.Сумма / Pow(1 + ПСК, СтрокаРасчета.РазностьДат)
		
	КонецЦикла; 
	 
	Если Сумма > 0 Тогда
	    Шаг = 0.382 * ПСК;
	Иначе
	    Шаг = -0.382 * ПСК;
	КонецЕсли;

    Пока (Шаг < -Точность) ИЛИ (Шаг > Точность) Цикл
        ПСК = ПСК + Шаг;
		Сумма = 0;
		Для каждого СтрокаРасчета Из ТаблицаРасчета Цикл
			Сумма = Сумма + СтрокаРасчета.Сумма / Pow(1 + ПСК, СтрокаРасчета.РазностьДат)
			
		КонецЦикла;
		Если Сумма * Шаг < 0 Тогда
            Шаг = -Шаг * 0.382;//из метода золотого сечения
        КонецЕсли;
    КонецЦикла;
    Возврат ПСК;
КонецФункции
Показать
Evilleo; newtraveller; user651504_anah0ret; vetaldober; randomus; ak_nikolay; KenigDW; FilatovRA; +8
6. user832283 06.12.21 08:51 Сейчас в теме
(4)
В начале тела последнего цикла нужно добавить, чтобы контролировать ошибку возведения отрицательного числа в дробную степень:

Если ПСК + Шаг <= -1 Тогда
	Шаг = Шаг * 0.382;
	Продолжить;
КонецЕсли;
+
5. anatol.goncearenco 12.05.21 11:25 Сейчас в теме
(4) По-моему, что-то не так.
Если проанализировать последний цикл, то видно, что цикл "вечный", т.к. Сумма * Шаг >0 всегда.
А значит, шаг не меняется и будем крутиться в цикле до "посинения".
Поэтому нужно подкорректировать проверку Если:
Если Сумма * Шаг < 0 Тогда
Шаг = -Шаг * 0.382;
Иначе
Шаг = Шаг * 0.382;
КонецЕсли;

Результат получается, но он всегда один и тот же.
ser6702; newtraveller; +2
7. ser6702 166 14.02.22 11:43 Сейчас в теме
Результат всегда = 12345678 если нет первого взноса с минусом или бесконечный цикл в итоге с делением на ноль
+
8. ser6702 166 14.02.22 12:44 Сейчас в теме
(7) о похоже это я ошибся. Должна работать.
+
Оставьте свое сообщение