Имя: Пароль:
1C
1С v8
УПП 1.3.25 Расчет страховых взносов
0 echo77
 
11.05.12
15:37
Что за загадочная функция в модуле документа РасчетСтраховых взносов?

ЗаполнениеРегламентированнойОтчетности.ОкруглитьСлагаемыеПоСумме(ВременнаяТаблица,"ФССНесчастныеСлучаи", Выборка.ВзносовСводно, 2, "ФизЛицо");

в ЗУПе, по-моему, такого нет.
Так же смущает запрос, предшествующий ей. Мне кажется из-за этого "округления" у меня страховые взносы ФСС НС округляются не туда
1 Gesperid
 
11.05.12
15:58
Да, кажись она кривовастая
2 Gesperid
 
11.05.12
16:00
Подправлял так, но уже не помню что к чему =)

Процедура ОкруглитьСлагаемыеПоСумме(Данные, ИмяКолонки, Сумма, Точность = 0, ИмяКлюча =
"ФизЛицо") Экспорт
   
   ВременнаяТаблица = Данные.Скопировать(, ИмяКлюча + "," + ИмяКолонки);
   ВременнаяТаблица.Колонки.Добавить(ИмяКолонки + "Окр");
   Для каждого СтрокаТЗ Из ВременнаяТаблица Цикл
       СтрокаТЗ[ИмяКолонки + "Окр"] = Окр(СтрокаТЗ[ИмяКолонки],Точность)
   КонецЦикла;
   Данные.ЗагрузитьКолонку(ВременнаяТаблица.ВыгрузитьКолонку(ИмяКолонки + "Окр"),ИмяКолонки);
   
   СуммаСлагаемых = ВременнаяТаблица.Итог(ИмяКолонки + "Окр");
   Если СуммаСлагаемых <> Сумма Тогда
       Шаг = Pow(10, -Точность);
       РасхождениеСуммы = Сумма - СуммаСлагаемых;
       Приращение = ?(РасхождениеСуммы > 0, Шаг, -Шаг);
       ВсегоПриращений = Мин(РасхождениеСуммы / Приращение, ВременнаяТаблица.Количество());
       ВременнаяТаблица.Колонки.Добавить(ИмяКолонки + "Расхождение");
       ВременнаяТаблица.Колонки.Добавить(ИмяКолонки + "Изменение");
       Для каждого СтрокаТЗ Из ВременнаяТаблица Цикл
           СтрокаТЗ[ИмяКолонки + "Расхождение"] = ?(СтрокаТЗ[ИмяКолонки + "Окр"] < СтрокаТЗ[ИмяКолонки], СтрокаТЗ[ИмяКолонки] - СтрокаТЗ[ИмяКолонки + "Окр"], СтрокаТЗ[ИмяКолонки + "Окр"] - СтрокаТЗ[ИмяКолонки]);
           СтрокаТЗ[ИмяКолонки + "Изменение"] = ?(СтрокаТЗ[ИмяКолонки + "Окр"] < СтрокаТЗ[ИмяКолонки], - Шаг, Шаг);
           //+андрей 20/07/11
           // Непосредственно округление данных
           СтруктураПоиска = Новый Структура(ИмяКлюча);
           ЗаполнитьЗначенияСвойств(СтруктураПоиска, СтрокаТЗ);
           СтрокаДанных = Данные.НайтиСтроки(СтруктураПоиска)[0];
           СтрокаДанных[ИмяКолонки] = СтрокаТЗ[ИмяКолонки + "Окр"];
           //-андрей 20/07/11            
       КонецЦикла;
       ВременнаяТаблица.Сортировать(ИмяКолонки + "Изменение" + ?(Приращение > 0,""," Убыв") + ", " + ИмяКолонки + "Расхождение Убыв");
       СтруктураПоиска = Новый Структура(ИмяКлюча);
       Для Сч = 1 По ВсегоПриращений Цикл
           Если ВременнаяТаблица[Сч-1][ИмяКолонки + "Изменение"] <> Приращение Тогда
               ЗаполнитьЗначенияСвойств(СтруктураПоиска, ВременнаяТаблица[Сч-1]);
               Данные.НайтиСтроки(СтруктураПоиска)[0][ИмяКолонки] = ВременнаяТаблица[Сч-1][ИмяКолонки + "Окр"] + Приращение;
           КонецЕсли;
       КонецЦикла;
   КонецЕсли;

КонецПроцедуры
3 echo77
 
11.05.12
16:52
(2) Спасибо! Будем курить что откуда, куда и почему