Аналоги функций MS Excel «ВСД()» и «СТАВКА()».

12.11.13

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

Удобный для встраивания в свои программы пример реализации в 1С двух функций MS Excel, рассчитываемых методом итераций (расчёт внутренней ставки доходности и процентной ставки по аннуитету за период).

Файлы

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

Наименование Скачано Купить файл
Функции MS Excel
.epf 13,19Kb ver:1.0
32 2 500 руб. Купить

Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний

Оформите подписку на компанию для решения рабочих задач

Оформить подписку и скачать решение со скидкой

Вы можете заказать платную доработку или адаптацию этой разработки под вашу конфигурацию на «Бирже заказов».

  • 0% комиссии — оплата напрямую исполнителю;
  • Исполнители любого масштаба — от отдельных специалистов до команд под проект;
  • Прямой обмен контактами между заказчиком и исполнителем;
  • Безопасная сделка — при необходимости;
  • Рейтинги, кейсы и прозрачная система откликов.

Однажды возникла необходимость повторить в 1С расчёт, который пользователь раньше производил с помощью несложного документа MS Excel. И всё бы ничего — да в этом эксельном документе использовались функции «ВСД()» и «СТАВКА()»… То есть, нужно было реализовать в 1С итерационный метод поиска корней функции на отрезке. В этой обработке — пример реализации метода Брендта, сочетающий в себе высокую скорость и сходимость. 

К скачиванию предлагаю не то, что было сделано для клиента (там была очень узкоспециализированная обработка), а простенькую демонстрашку, из которой можно легко «выдернуть» кусок для своей программы.

Вступайте в нашу телеграмм-группу Инфостарт

Excel Брендт

См. также

Загрузка и выгрузка в Excel Универсальные функции Программист 1С:Предприятие 8 Россия Бесплатно (free)

Описанный ниже подход позволяет в три шага заполнять формулы в Excel файлы, вне зависимости от ОС сервера (MS Windows Server или Linux). Подход подразумевает отказ от работы с COM-объектом в пользу работы через "объектную модель документа" (DOM).

30.10.2025    5504    Abysswalker    11    

47

Универсальные функции Работа с интерфейсом Программист 1С:Предприятие 8 Бесплатно (free)

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

14.05.2025    10142    DeerCven    15    

64

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

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

21.05.2024    61460    dimanich70    86    

176

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

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

1 стартмани

18.03.2024    8427    7    John_d    13    

59

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

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

12.02.2024    77255    atdonya    31    

74

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

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

30.11.2023    10673    ke.92@mail.ru    18    

68
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. margo_m09 27.11.13 10:47 Сейчас в теме
интересная обработка)))))
2. Virgiliy 7 13.12.13 11:54 Сейчас в теме
Открыл обработку блокнотом...и вижу стандартный HTML-код. Вопрос: а где сама обработка?
3. o9105180559 23.11.22 18:05 Сейчас в теме
Тут такое дело - в Excel функция "СТАВКА()" считает собственно ставку в обе стороны, т.е. и положительную, и отрицательную. Ваша обработка только положительную. Не подскажите, как модернизировать, чтобы и отрицательную тоже считала?
4. o9105180559 24.11.22 18:19 Сейчас в теме
(3) Нашел решение сам (может кому-то пригодится):
1) делаем так, чтобы условие в одной из функций вызывало не исключение с текстом, что в интервале нет решений, а возвращало 0;
2) далее добавляем еще один вызов этой функции с условием, если предыдущий вызов вернул 0, только параметры "а" и "б" (границы интервала) задаем другие:
- в первом запуске интервал задавался от а = 0,00000001 до 1;
- мы же во втором запуске указываем отрицательный интервал от а = -0,99999999, до б = -0,00000001;
- остальные параметры функции при вызове не меняем.
И, вуаля, всё работает - при попытке посчитать отрицательную ставку, первый вызов вернет 0, а второй найдет и вернет нужное значение.
5. user1419213 07.12.22 08:48 Сейчас в теме
Привет, может кому пригодится - в БП 3.0 есть модуль ФинансовыеИнструменты

Там ставку считает в функции ФинансовыеИнструменты.XIRR

Ниже код

// Вычисляет приблизительную годовую ставку IRR для графика платежей с произвольной периодичностью. Соответствует функции Excel ЧИСТВНДОХ.
// Вычисление производится методом Ньютона.
// IRR - внутренняя норма доходности, при которой инвестиции равны приведенной стоимости будущих поступлений, т.е. NPV = 0.
//
// Параметры:
//    Платежи - Массив из Число - Суммы платежей по графику. По крайней мере один платеж в графике должен быть положительный и один отрицательный.
//    Даты - Массив из Дата - Даты платежей. Индексы дат в массиве должны совпадать с соответствующими индексами сумм в массиве платежей.
//    Предположение - Число - Предполагаемая ставка (задается в виде числа: например, 0.25 соответствует 25%).
//                            Необязательный параметр, по умолчанию исходная ставка = 0.1.
//
// Возвращаемое значение:
//    Число, Неопределено - Ставка IRR. Если рассчитать ставку не удалось или входные данные некорректны, вовращается Неопределено.
//
Функция XIRR(Платежи, Даты, Предположение = Неопределено) Экспорт 
	
	Если Предположение = Неопределено Тогда
		Х0 = 0.1;
	Иначе
		Х0 = Предположение;
	КонецЕсли;
	
	Сроки = Новый Массив;
	Для Инд = 0 По Даты.Количество() - 1 Цикл
		Сроки.Добавить((Даты[0] - Даты[Инд]) / 31536000); // В долях года
	КонецЦикла;
	
	Х1 = 0.0;
	Допуск = 0.00000001;
	
	МаксИтераций = 500;
	ЧислоИтераций = 0;
	
	Пока ЧислоИтераций < МаксИтераций Цикл
		
		Знаменатель = Всего_ДФ_XIRR(Платежи, Сроки, Х0);
		Если Знаменатель = 0 Тогда
			Возврат Неопределено;
		КонецЕсли;
		
		Х1 = Х0 - Всего_Ф_XIRR(Платежи, Сроки, Х0) / Знаменатель;
		Ошибка = МодульЧисла(Х1 - Х0);
		Х0 = Х1;
		
		Если Ошибка <= Допуск Тогда
			Возврат Х0;
		КонецЕсли;
		
		ЧислоИтераций = ЧислоИтераций + 1;
	КонецЦикла;
	
	Возврат Неопределено;
	
КонецФункции
Показать
user935247; +1 Ответить
7. _Andreyyy_ 17.02.26 05:15 Сейчас в теме
(5) Тоже вышел на эту функцию, когда при закрытии месяца стала возникать ошибка при расчете ставки в документе аренды. За 500 итераций ошибка не становилась меньше допустимого значения. Возвращалось в итоге неопределено и там далее ошибки выше по стэку, из-за того, что ставка не известна. Лично мне не понятен алгоритм этой функции. В частности переменная "знаменатель". Какой практический смысл? Всего_Ф_XIRR(Платежи, Сроки, Х0) - тут всё понятно - приведённый к текущему моменту времени поток будущих платежей по ставке X0. Функция "Всего_ДФ_XIRR(Платежи, Сроки, Х0)" более любопытная
8. _Andreyyy_ 17.02.26 07:10 Сейчас в теме
(7) Кому интересно вот объяснение как работает алгоритм вычисленяи ставки для данной функции:
https://infostart.ru/1c/articles/2496897/
Для отправки сообщения требуется регистрация/авторизация