|   |   | 
| 
 | Зачем это нужно | ☑ | ||
|---|---|---|---|---|
| 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-ый есть =)     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |