Борьба с копеечными разницами (свод по зарплате, свод проводок, проводки)

1. Вован 24.04.06 02:25 Сейчас в теме
При сложном распределении по проводкам в конфе ЗиК образуются копеечные разницы в итоговых суммах отчетов "Свод по заработной плате" и "Свод проводок и данных налогового учета". Соответственно и разница между расчетками и сформированными проводками имеется.

При разборе полетов, оказалось, что это ошибка округления. В типовой конфе распределение идет с точностью 10 знаков после запятой, а проводки формируются с 2 знаками. И в журнале "Зарплата" результаты хранятся с 2 знаками.

После перебора возможных изменений (искал вариант с минимальными изменениями и так, чтобы легко восстанавливать после обновлений) нашел следующее решение (все изменения в глобальном модуле):

В функции "глКВыплатеЗаПериод" строку ТаблицаРаспределения.НоваяКолонка("Сумма","Число",15,10,,) исправить на ТаблицаРаспределения.НоваяКолонка("Сумма","Число",15,2,,)

В принципе, после этого все пошло нормально, но дополнительно подстраховался:
Сделал контроль

//КонтрольРаспределения
//
//Параметры
// Сумма - распределяемая сумма
// ТабЗн - таблица значений с распределением в поле "Сумма"
//
//Возвращаемое значение.
// Нет
//
//Описание
// Процедура проверяет, равна ли сумма распределенного исходной
// (может получиться в результате округления) и, в случае необходимости, изменяет распределение
// предварительно делается контроль, чтобы изменяемая сумма не стала отрицательной.
// При разнице больше 0,01 ничего не изменяется (причина отличия - другая)
//
Процедура КонтрольРаспределения(Сумма, ТабЗн)
Перем Разница, Итог;
Если ПустоеЗначение(ТабЗн)=1 Тогда
Возврат;
КонецЕсли;
Разница=Сумма-ТабЗн.Итог("Сумма");
Разница=Сумма-Итог;
Если (Разница<0.01) И (Разница>-0.01) Тогда
ТабЗн.ВыбратьСтроки();
Пока ТабЗн.ПолучитьСтроку()=1 Цикл
Если (ТабЗн.Сумма+Разница)<0 Тогда
Продолжить;
КонецЕсли;
ТабЗн.Сумма=ТабЗн.Сумма+Разница;
Прервать;
КонецЦикла;
Если Сумма<>ТабЗн.Итог("Сумма") Тогда
Сообщить("Ошибка округления.","!!!");
КонецЕсли;
КонецЕсли;
КонецПроцедуры

И в конце "глПолучитьРаспределениеРезультата" добавил строку
КонтрольРаспределения(Результат, ТаблицаРаспределения);

После этих изменений все точно до копейки.
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. 27.04.06 22:14 Сейчас в теме
Можно еще попробовать в обработке глПроводкиЗаПериод поискать все округления (функция Окр()) и где точность 2 заменить на 10.
Расхождения еще станут меньше, но в своде проводок могут вылезти колонки с нулевыми значениями.

Кстати, отчет свод проводок не идеальный, мне часто у больших клиентов попадается не учитываемые суммы НДФЛ, также он может ругаться на какую-то проводку, а у кого не правильно не говорит. Поэтому я советую сделать внутри отчета анализ с данными из журналов расчетов, а данные взять из
глПроводкиЗаПериод(ДатаАктуальности,СписокФизЛиц,ТаблицаКорреспонденций,ТаблицаУчетаННП,ТаблицаУчетаНалоговННП,Контекст,,,,0,2,СобитатьДанныеНУ);
ТаблицаКорреспонденций - и есть по людям проводки.
Мне это очень помогает.
3. 02.05.06 10:06 Сейчас в теме
А в 7.70.265 уже стоит "ТаблицаРаспределения.НоваяКолонка("Сумма","Число",15,2,,)", а не "15,10". Наверное одноцесники сами исправили. Или Вован ошибся и надо наоборот исправлять "15,2" на "15,10"?
4. SnorkL 03.05.06 11:59 Сейчас в теме
Нда, маладцы! теперича главное - чтобы эти разницы не вылезли в квартальной или готодой отчетности ;). Пример:
Сотр1: з/п=642руб.30коп, ТФОМС(2%)=12,846 (окр. 12,85)
Сотр2: з/п=642руб.30коп, ТФОМС(2%)=12,846 (окр. 12,85)
Итого: ТФОМС(Сотр1)+ТФОМС(Сотр2) = 12,85+12,85=26,70
Налоговая база по Сотр1+Сотр2 = 642,30+642,30=1284,60. ТФОМС(2%)=25,692 (окр. 26,69)
т.о. копеечная разница всё равно вылазит в зависимости от алгоритма расчета :)))
5. Вован 04.05.06 13:39 Сейчас в теме
ЕСН считается с точностью 4 знака - копеечные разницы обеспечены, для этого в стандартной конфе предусмотрен механизм "сброса" копеек (в хозрасчетной на 91-й).
То, что я предложил - более эффективная "ловля блох", как говорят бухгалтеры. Блохи в долях копеек.
Может 1С-ники и поправили уже. Кстати, этот алгоритм я писал на buh.ru.
6. 15.08.06 10:44 Сейчас в теме
Не помню, где, но сами 1С-цы при вопросе "А что за копейки падают на/с 91 счета по налогам" отвечали (дословно не помню): "Бухгалтер сам решает куда относит копейки округления" И кроме того ЕСН считается по сумме налогов с базы каждого сотрудника, а не по налогу с сумарной базы сотрудников.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот