|
Зачем это нужно | ☑ | ||
---|---|---|---|---|
0
Homer
14.10.11
✎
14:08
|
Зачем округлять один(если разница в 1 между округленной суммой и исходной) элемент из базы, если все остальные будут не округлены?
////////// Процедура ОкруглитьСлагаемыеПоСумме(Данные, ИмяКолонки, Сумма, Точность = 0, ИмяКлюча = "ФизЛицо") ВременнаяТаблица = Данные.Скопировать(, ИмяКлюча + "," + ИмяКолонки); ВременнаяТаблица.Колонки.Добавить(ИмяКолонки + "Окр"); Для каждого СтрокаТЗ Из ВременнаяТаблица Цикл СтрокаТЗ[ИмяКолонки + "Окр"] = Окр(СтрокаТЗ[ИмяКолонки],Точность) КонецЦикла; СуммаСлагаемых = ВременнаяТаблица.Итог(ИмяКолонки + "Окр"); Если СуммаСлагаемых = Сумма Тогда Данные.ЗагрузитьКолонку(ВременнаяТаблица.ВыгрузитьКолонку(ИмяКолонки + "Окр"),ИмяКолонки); Иначе Шаг = Pow(10, -Точность); РасхождениеСуммы = Сумма - СуммаСлагаемых; Приращение = ?(РасхождениеСуммы > 0, Шаг, -Шаг); ВсегоПриращений = РасхождениеСуммы / Приращение; ВременнаяТаблица.Колонки.Добавить(ИмяКолонки + "Расхождение"); ВременнаяТаблица.Колонки.Добавить(ИмяКолонки + "Изменение"); Для каждого СтрокаТЗ Из ВременнаяТаблица Цикл СтрокаТЗ[ИмяКолонки + "Расхождение"] = ?(СтрокаТЗ[ИмяКолонки + "Окр"] < СтрокаТЗ[ИмяКолонки], СтрокаТЗ[ИмяКолонки] - СтрокаТЗ[ИмяКолонки + "Окр"], СтрокаТЗ[ИмяКолонки + "Окр"] - СтрокаТЗ[ИмяКолонки]); СтрокаТЗ[ИмяКолонки + "Изменение"] = ?(СтрокаТЗ[ИмяКолонки + "Окр"] < СтрокаТЗ[ИмяКолонки], - Шаг, Шаг); КонецЦикла; ВременнаяТаблица.Сортировать(ИмяКолонки + "Расхождение Убыв"); Для Сч = 1 По ВсегоПриращений Цикл Если ВременнаяТаблица[Сч-1][ИмяКолонки + "Изменение"] <> Приращение Тогда СтрокаДанных = Данные.Найти(ВременнаяТаблица[Сч-1][ИмяКлюча],ИмяКлюча); СтрокаДанных[ИмяКолонки] = ВременнаяТаблица[Сч-1][ИмяКолонки + "Окр"] + Приращение; КонецЕсли; КонецЦикла; КонецЕсли; КонецПроцедуры ///////////////// |
|||
1
Amiralnar
14.10.11
✎
14:13
|
Округляется величина, равная сумме слагаемых.
|
|||
2
Homer
14.10.11
✎
14:27
|
попробуй посчитай и удивишься логике 1с
вот Данные 101 381,13 56 302,17 17 675,5 3 871,39 6 165,09 15 907,95 23 550,61 12 633,76 13 003,68 171 954,94 25 370,6 20 297,98 19 190,55 6 685,96 15 655,44 25 370,6 18 180,51 19 271,49 20 899,28 вот сумма 593369 где ОкруглитьСлагаемыеПоСумме(ВременнаяТаблица,"П000310001005", Окр(СтрокаДоходов._П000030005003,0)); |
|||
3
Amiralnar
14.10.11
✎
14:30
|
Сумма твоих значений - 593368,63
Округленная сумма - 593369 Что не так? |
|||
4
Homer
14.10.11
✎
14:32
|
не так, что в отчет встает сумма 593368,13
|
|||
5
Homer
14.10.11
✎
14:32
|
и если идти по коду то так и получается
|
|||
6
Gesperid10
14.10.11
✎
14:33
|
ошибка в этой процедуре
|
|||
7
Amiralnar
14.10.11
✎
14:33
|
Ошибка стало быть
|
|||
8
Homer
14.10.11
✎
14:35
|
обнаружилость что в "СтрокаДоходов._П000030005003" уже стоит округленная сумма 593369
|
|||
9
Homer
14.10.11
✎
14:36
|
это 4ФСС таб 3.1 ну и соответсвенно Таб 3
|
|||
10
Homer
14.10.11
✎
14:36
|
УПП 14 рел
|
|||
11
Gesperid10
14.10.11
✎
14:37
|
уже 17-ый есть =)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |