helpf.pro
Регистрация
 +2 
Распечатать

1С 8.x : Функция выполняет пропорциональное распределение суммы в соответствии с заданными коэффициентами

Код 1C v 8.х
 
// Функция выполняет пропорциональное распределение суммы в соответствии с заданными коэффициентами распределения
//
// Параметры:
// ИсхСумма - распределяемая сумма
// МассивКоэф - массив коэффициентов распределения
// Точность - точность округления при распределении. Необязателен.
//
// Возврат:
// МассивСумм - массив размерностью равный массиву коэффициентов, содержит
// суммы в соответствии с весом коэффициента (из массива коэффициентов)
// В случае если распределить не удалось (сумма = 0, кол-во коэф. = 0,
// или суммарный вес коэф. = 0), тогда возвращается значение Неопределено
//
Функция РаспределитьПропорционально(Знач ИсхСумма, МассивКоэф, Знач Точность = 2) Экспорт

Если МассивКоэф.Количество() = 0 Или ИсхСумма = 0 Или ИсхСумма = Null Тогда
Возврат Неопределено;
КонецЕсли;

ИндексМакс = 0;
МаксЗнач = 0;
РаспрСумма = 0;
СуммаКоэф = 0;

Для К = 0 По МассивКоэф.Количество() - 1 Цикл

МодульЧисла = ?(МассивКоэф[К] > 0, МассивКоэф[К], - МассивКоэф[К]);

Если МаксЗнач < МодульЧисла Тогда
МаксЗнач = МодульЧисла;
ИндексМакс = К;
КонецЕсли;

СуммаКоэф = СуммаКоэф + МассивКоэф[К];

КонецЦикла;

Если СуммаКоэф = 0 Тогда
Возврат Неопределено;
КонецЕсли;

МассивСумм = Новый Массив(МассивКоэф.Количество());

Для К = 0 По МассивКоэф.Количество() - 1 Цикл
МассивСумм[К] = Окр(ИсхСумма * МассивКоэф[К] / СуммаКоэф, Точность, 1);
РаспрСумма = РаспрСумма + МассивСумм[К];
КонецЦикла;

// Погрешности округления отнесем на коэффиецент с максимальным весом
Если Не РаспрСумма = ИсхСумма Тогда
МассивСумм[ИндексМакс] = МассивСумм[ИндексМакс] + ИсхСумма - РаспрСумма;
КонецЕсли;

Возврат МассивСумм;

КонецФункции
Разместил:   Версии: | 8.x |  Дата:   Прочитано: 30419
 +2 
Распечатать
Возможно, вас также заинтересует
17 правил для составления оптимального ЗАПРОСа к данным базы 1С 52
Для формирования и выполнения запросов к таблицам базы данных в платформе 1С используется специальный объект языка программирования Запрос . Создается этот объект вызовом конструкции Новый Запрос . Запрос удобно использовать, когда требуется получ
Автоматическое резервное копирование 1С:Предприятия в облако с помощью ПО Effector Saver 4
Всем известно, для большей гарантии восстановления важных данных, необходимо копировать архивы в несколько мест хранения. Отдельный диск может помочь в случае порчи основного, но в случае если устройство будет потеряно или украдено, он будет так же
Автоматическое резервное копирование 1С:Предприятия в облако с помощью ПО Effector Saver 1
Всем известно, для большей гарантии восстановления важных данных, необходимо копировать архивы в несколько мест хранения. Отдельный диск может помочь в случае порчи основного, но в случае если устройство будет потеряно или украдено, он будет так же
Задать вопрос пользователю, ответ на вопрос 8
Режим = РежимДиалогаВопрос.ДаНетОтмена; Ответ = Вопрос(" Выполнить?" , Режим, 0); Если Ответ =КодВозвратаДиалога.Да Тогда Сообщить(" Выполнено" ); ИначеЕсли Ответ = КодВозвратаДиалога.Нет Тогда Сообщить(" Не выполнено" ); КонецЕсли; Режим =
Как вывести иерархический справочник 6
Для вывода иерархического справочника в отчет с сохранением иерархии необходимо пользоваться запросом аналогичным следующему: ВЫБРАТЬ Номенклатура.Код, Номенклатура.Наименование КАК Наименование, Номенклатура.ЗакупочнаяЦена ИЗ Справочник.Но
Посмотреть все результаты поиска похожих
Вы не можете отправить комментарий анонимно, пожалуйста войдите или зарегистрируйтесь.