Погрешность округления и есть ли средство борьбы с ней возможностями 1С?

Публикация № 902874

Печать - Печатные формы документов

Обработка ТОРГ-12 Бухгалтерия 2.0

3
Политика 1С по использованию возможностей баз данных доросла до использования объектно-ориентированного программирования в 1С Предприятие 8.Х Но от погрешностей округления увы 1С-ники так и не избавились. Предлагаю вариант печати ТОРГ-12 в валюте документа "Реализация товаров и услуг" для Бухгалтерии 2.0 и 3.0 платформа 8.3

Погрешность округления и есть ли

средство борьбы с ней возможностями 1С?

 

 

Работая с прикладными решениями 1С начиная с времен  «1С ДОСТУПНО и ВСЕРЬЁЗ», обратил  внимание на сложности с округлением сумм при пересчете валюты в рубли.

Проблема точности возникала и остается по настоящее время, практически во всех типовых решениях 1С.

Про конфигурации Бухгалтерия 2.0 для операционной системы DOS и Бухгалтерия 6.0 для операционной системы Windows говорить не буду, поскольку проблемы там решались продвинутыми пользователями, не говоря уже о системщиках и программистах.

Начиная с платформы 1С Предприятие 7.0 сопровождение ее пользователями ограничилось лишь установкой регламентной отчетности и обновлений. Все доработки под себя перешли в руки специалистов по поддержке и доработке продуктов 1С.

Политика 1С по использованию возможностей баз данных доросла до использования объектно-ориентированного программирования в 1С Предприятие 8.Х.

Но от погрешностей округления увы 1С-ники так и не избавились.

Фирма работает в 1С Бухгалтерия 2.0 версия 2.0.66.38 файловый вариант 5 пользователей, Платформа 1С Предприятие 8.3 релиз 8.3.11.2867.

В октябре 17 года мне пришлось по возится с сложной отгрузкой на 245 позиций.

Договор с клиентом в у.е. с оплатой в рублях по курсу на дату оплаты, при этом запуск в производство только после предоплаты 50% и окончательная предоплата при подтверждении готовности товара к отгрузке. Цены в у.е. НДС сверху. Отсюда и вся свистопляска с округлением рублевых сумм, и расхождения в ТОРГ-12 и счете-фактуре.

Отгрузка как всегда проходила в режиме «ВСЕ УЖЕ ОТПРАВИЛИ ВЧЕРА». Естественно сверять досконально все позиции в ТОРГ-12 и счете-фактуре менеджер не стал. Как результат пришлось переделывать документы не один раз. При этом при печати в очередной раз по строкам товаров получались разные суммы хотя итоговые были одинаковые.

Эта ситуация очень заинтересовала меня, тем более работая в Комплексной 7.7 я установил запрет повторного пересчета рублевых движений по документам в у.е. То есть пересчет производился в документе, а глобальные процедуры пересчета не запускались.

Прошел почти год и снова те же грабли. Хотя уже и 1С ушла далеко в перед.

Не однократные потуги перевести работу на Бухгалтерию 3.0 даже после удачных с моей точки зрения обновления базы с Бухгалтерии 2.0 на Бухгалтерию 3.0 Главный бухгалтер не спешит и продолжаем работать в Бухгалтерии 2.0

Поскольку применение унифицированной формы ТОРГ-12 не является обязательным

(«С 1 января 2013 года формы первичных учетных документов, содержащиеся в альбомах унифицированных форм первичной учетной документации, не являются обязательными к применению.»- Информация Минфина России N ПЗ-10/2012.), я решил найти форму печати ТОРГ-12 для Бухгалтерии 2.0 в валюте документа.    

 

Облазив все доступные ресурсы, нашел на сайте ИНФОСТАРТ обработку, но брать не стал жаба задушила платить 1000 руб. (//infostart.ru/public/329124/).

Поэтому решил разобраться, а можно ли решить проблему самому. Почему если Счет-фактура выписывается на основании Расходной и в нем только ссылка на Расходную, то в чем причина расхождения сумм в рублях для документов в валюте.

Вот корректировки суммы ТОРГ-12 при наличии авансов в модуле с сокращениями :

//***********
   Если СсылкаНаОбъект.Проведен И (Шапка.РасчетыВУсловныхЕдиницах
             ИЛИ (Шапка.ВалютаДокумента <> мВалютаРегламентированногоУчета И СсылкаНаОбъект.Дата >= '20090101000000')) Тогда
             Запрос = Новый Запрос;
             Запрос.УстановитьПараметр("Ссылка", СсылкаНаОбъект);
             Запрос.УстановитьПараметр("СчетУчетаРасчетовСКонтрагентом", СсылкаНаОбъект.СчетУчетаРасчетовСКонтрагентом);
             Текст =
             "ВЫБРАТЬ
             |         СУММА(Хозрасчетный.Сумма) КАК Сумма
             |ИЗ
             |         РегистрБухгалтерии.Хозрасчетный КАК Хозрасчетный
             |ГДЕ
             |         Хозрасчетный.Регистратор = &Ссылка
             |         И Хозрасчетный.СчетДт = &СчетУчетаРасчетовСКонтрагентом
             |         И Хозрасчетный.СчетКт В
             |                             (ВЫБРАТЬ РАЗЛИЧНЫЕ
             |                                       РеализацияТоваровУслугТовары.СчетДоходов
             |                             ИЗ
             |                                       Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары
             |                             ГДЕ
             |                                       РеализацияТоваровУслугТовары.Ссылка = &Ссылка";
            Запрос.Текст = Текст;
             СуммаВзаиморасчетов = Запрос.Выполнить().Выгрузить()[0].Сумма;
             РасчетСуммыНДСПоСтавке =  УчетНДС.РасчетНДСвРубляхПоСтавкеДокумента(Шапка.ДатаДокумента);

   // далее текст не внесен         
                      МассивРаспределения = Новый Массив;
  //*****************                   
                                СуммаСНДС = СтрокаТовар.Сумма + ?(Шапка.СуммаВключаетНДС, 0, СтрокаТовар.СуммаНДС);
                                СуммаБезНДС = СуммаСНДС - СтрокаТовар.СуммаНДС;
                               МассивРаспределения.Добавить(СуммаСНДС);
                      ЗапросТовары.Колонки.Добавить("СуммаРублевая");
                       УчетНДС.РаспределитьСуммуПоСтолбцу(МассивРаспределения, СуммаВзаиморасчетов, ЗапросТовары, "СуммаРублевая");
         МассивРаспределенныхСумм = ОбщегоНазначения.РаспределитьПропорционально(СтрокаТовар.СуммаРублевая, МассивРаспределения);
// Далее не интересно
//**********

   При формировании данных для печати счета-фактуры распределение сумм авансов происходит повторно командой -

МассивРаспределенныхСумм = ОбщегоНазначения.РаспределитьПропорционально(СтрокаТовар.СуммаРублевая, МассивРаспределения);

и в результате ошибки округления распределяются по строкам не так как в ТОРГ-12. 

     Однако прежде чем я это нашел пришлось помучится. Так на своем ноутбуке пришлось переустанавливать платформу 1С.

 

В платформе 8.2.19.130 с поиском все нормально, но

 

В платформе 8.3.10.2667 поиска не оказалось хотя переходы на Бухгалтерию 3.0 ЗУП 3.0 на ней проводил без проблем с зависанием в процессе конвертации баз, что характерно для релизов 8.3.9.ХХХХ и 8.3.11.ХХХХ.

 

Пришлось установить платформу 8.3.12.1529 и работать в ней

 

 

      Но с поиском «ищи то не знаю что» я честно запарился. Разобраться с огромным количеством процедур и функций, которые имеют статус глобальных и найти их (т.е. отследить где и какой процесс ее использует) мне с моими познаниями архитектуры и встроенного языка, используя глобальный поиск не удалось.

То есть я так не смог найти в Бухгалтерии 2.0 способ или метод распределения рублевых сумм по строкам в ТОРГ-12 и в Счет-фактуре, так чтобы они были равны.

В результате сравнения всех данных выявилось следующее:

Основная причина это, округление особенно если в валютной сумме НДС сверху.

Вот пример из той злополучной отгрузки в $:

Кол-во 6 Цена без НДС 5677,70 Сумма без НДС 34066,20 

НДС 6131,92 Сумма с НДС 40198,12

После учета авансов итог в рублях:

Кол-во 6 Цена без НДС 325902,57 Сумма без НДС 1955415,39

НДС 351974,77 Сумма с НДС 2307390,16

 

Если исходить из требований налоговых органов и законодательства, то распределение сумм по позициям товаров в отгрузке их мало волнует, если ставка НДС для всех одинаковая. Их интересует итоговая сумма отгрузки и сумма НДС (эту сумму надо перечислить в бюджет.

Поэтому расхождения при пересчете валюты в рубли особенно не напрягают 1С-ников. Они пересчитывают в соответствии с требованиями законодательства, а то что не все цифры идентичны в накладной и счет-фактуре так это погрешности округления.

В нашем случае, если высчитать курс, то получим 57,40044957326363 по сумме или 57,40045617063247 по цене. Можете пересчитать в обратную сторону после округления и получите совершенно другие суммы и цены.

Вот СкринШоты по разбору полетов

 

ТОРГ-12 печать в Бухгалтерии 2.0 (встроенная печать) начало накладной

 

Обратите внимание на курс по строкам очень не одинаковый!

 

Счет-фактура печать в Бухгалтерии 2.0 (встроенная печать) начало накладной

 

Обратите внимание на курс по строкам очень одинаковый! И с ТОРГ-12 не пляшет, суммы тоже не все одинаковые.

А вот суммы проводок