|
Тупо арифметика пропорции | ☑ | ||
---|---|---|---|---|
0
арах
21.11.14
✎
10:09
|
Народ поможите плиз.. что мозг не соображает:)
задача: есть 3 группы в них значения 129, 1130, 700 как пропорционально значениям в этих группах распределить количество например 700. |
|||
1
Chum
21.11.14
✎
10:11
|
х = 129+1130+700
700*129/х 700*1130/х 700*700/х |
|||
2
Трик
21.11.14
✎
10:11
|
700*129/(129+1130+700)
700*1130/(129+1130+700) 700*700(129+1130+700) |
|||
3
pessok
21.11.14
✎
10:13
|
129+1130+700 = 100%
-> 1959 - 100 129 - x 1959x = 12900 x = 6% |
|||
4
Гёдза
21.11.14
✎
10:13
|
Вот это одноэсники пошли (((
|
|||
5
pessok
21.11.14
✎
10:13
|
слоупочу :)
|
|||
6
арах
21.11.14
✎
10:18
|
питница) спс всем)
|
|||
7
oyeah
21.11.14
✎
10:19
|
(0) шутник
|
|||
8
Лефмихалыч
21.11.14
✎
10:19
|
ёпт... и правда - сегодня ж пятница! от это новость
|
|||
9
Ненавижу 1С
гуру
21.11.14
✎
10:19
|
Думаю у тебя будет проблема с округлениями
|
|||
10
mehfk
21.11.14
✎
10:20
|
(0) Воспользуйся типовой функцией
// Функция выполняет пропорциональное распределение суммы в соответствии // с заданными коэффициентами распределения // // Параметры: // ИсхСумма - распределяемая сумма // МассивКоэф - массив коэффициентов распределения // Точность - точность округления при распределении. Необязателен. // // Возврат: // МассивСумм - массив размерностью равный массиву коэффициентов, содержит // суммы в соответствии с весом коэффициента (из массива коэффициентов) // В случае если распределить не удалось (сумма = 0, кол-во коэф. = 0, // или суммарный вес коэф. = 0), тогда возвращается значение Неопределено // Функция РаспределитьПропорционально(Знач ИсхСумма, МассивКоэф, Знач Точность = 2, ПроверкаНулевыхЗначений=Истина) Экспорт Если МассивКоэф.Количество() = 0 Или (ПроверкаНулевыхЗначений И ИсхСумма = 0) Или ИсхСумма = Null Тогда Возврат Неопределено; КонецЕсли; // Массив коэффициентов необходимо упорядочить, поэтому создадим таблицу для распределения УпорядоченнаяТаблица = Новый ТаблицаЗначений; УпорядоченнаяТаблица.Колонки.Добавить("Коэф", Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(17,4))); УпорядоченнаяТаблица.Колонки.Добавить("ИсходныйИндекс", Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(15,0))); СуммаКоэф = 0; Для К = 0 По МассивКоэф.Количество() - 1 Цикл СуммаКоэф = СуммаКоэф + МассивКоэф[К]; СтрокаТаблицы = УпорядоченнаяТаблица.Добавить(); СтрокаТаблицы.Коэф = МассивКоэф[К]; СтрокаТаблицы.ИсходныйИндекс = К; КонецЦикла; Если СуммаКоэф = 0 Тогда Возврат Неопределено; КонецЕсли; УпорядоченнаяТаблица.Сортировать("Коэф Убыв"); МассивСумм = Новый Массив(УпорядоченнаяТаблица.Количество()); Для каждого СтрокаТаблицы Из УпорядоченнаяТаблица Цикл // Возвращаемый результат должен быть в том же порядке МассивСумм[СтрокаТаблицы.ИсходныйИндекс] = ?(СуммаКоэф <> 0, Окр(ИсхСумма * МассивКоэф[СтрокаТаблицы.ИсходныйИндекс] / СуммаКоэф, Точность, 1), 0); ИсхСумма = ИсхСумма - МассивСумм[СтрокаТаблицы.ИсходныйИндекс]; СуммаКоэф = СуммаКоэф - МассивКоэф[СтрокаТаблицы.ИсходныйИндекс]; КонецЦикла; Возврат МассивСумм; КонецФункции // РаспределитьПропорционально() |
|||
11
арах
21.11.14
✎
10:26
|
тода сразу тут еще вопрос как в запросе выразить число кратно 10 ?
|
|||
12
Ненавижу 1С
гуру
21.11.14
✎
10:28
|
(11) чего?
|
|||
13
арах
21.11.14
✎
10:31
|
число 46 должно получится 40
число 8 получиться 0 есть каканить типовая функция? или высчитывать? |
|||
14
Chum
21.11.14
✎
10:33
|
Цел(ТвоеЧисло/10)*10
|
|||
15
арах
21.11.14
✎
10:34
|
(14) в запросе
|
|||
16
pessok
21.11.14
✎
10:34
|
(11) ВЫРАЗИТЬ(Поле КАК ЧИСЛО(15,0)
|
|||
17
Ненавижу 1С
гуру
21.11.14
✎
10:35
|
ВЫРАЗИТЬ(ТвоеЗначение/10-0.5 КАК ЧИСЛО(15,0))*10
|
|||
18
pessok
21.11.14
✎
10:36
|
(17) а, ну да, не 4,6 как 5, а 46 как 40
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |