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

08.07.14

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

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

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

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


ЧИСТВНДОХ

См. также

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

Благодаря этим пяти строчкам можно больше не заморачиваться с загрузкой из внешних файлов. Пользуюсь везде, всегда и постоянно.

21.05.2024    29976    dimanich70    83    

152

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

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

1 стартмани

18.03.2024    4902    6    John_d    11    

57

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

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

12.02.2024    33327    atdonya    26    

59

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

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

30.11.2023    6504    ke.92@mail.ru    17    

66

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

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

28.08.2023    17960    YA_418728146    8    

172

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

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

2 стартмани

22.08.2023    4777    78    progmaster    11    

4

Инструментарий разработчика Универсальные функции Платформа 1С v8.3 1C:Бухгалтерия 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    19727    188    sapervodichka    112    

137
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. gull22 105 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 1603 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 176 14.02.22 11:43 Сейчас в теме
Результат всегда = 12345678 если нет первого взноса с минусом или бесконечный цикл в итоге с делением на ноль
8. ser6702 176 14.02.22 12:44 Сейчас в теме
(7) о похоже это я ошибся. Должна работать.
Оставьте свое сообщение