7.7 Проблемы с округлением в расходной накладной

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 7.7"", создана пользователем M a x i m, 13 ноя 2009.

  1. TopicStarter Overlay
    M a x i m
    Offline

    M a x i m Опытный в 1С

    Регистрация:
    6 окт 2008
    Сообщения:
    212
    Симпатии:
    0
    Баллы:
    26
    Добрый день
    есть такая проблема:
    мы продаем хлеб - цена с НДС за 1 шт. 10-50р.
    цена без НДС 9,5454 (точность 4)
    ставка НДС 10%

    Набираем накладную 144 штуки по 9,5454
    равно сумма без НДС 1 374.5376 (точность 4), НДС 137,45, Всего с НДС 1511,99.
    это неверно, т.к. 10,50 *144 = 1512р.

    Начинаем подгонять: руками ставим Всего без НДС 1374,545 - получается всего с НДС 1512, !но
    автоматом меняется цена вместо 9.5454 ставится 9.5455

    Короче, итоговая НДС в документе с такими раскладами отличается на копейку(ки).
    А книга продаж показывает неверный итоговый НДС на несколько рублей.

    Что делать?

    p.s. это происходит в основном там, где количество продукции большое. 144 - это большое количество.
  2. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Было подобное... Решалось дописанием дополнительной процедуры.
    Алгоритм:

    1) Добавляем ПриОкончанииРедактированияСтроки()
    2) Пересчитываем НДС ВО ВСЕХ строках
    2) Вычисляем ОБЩИЙ ндс расчетным путем (по всего от обратного)
    3) Берем итог НДС
    4) Если есть разница - добавляем его к последней строке (из-за этого п.2 делается каждый раз)
  3. TopicStarter Overlay
    M a x i m
    Offline

    M a x i m Опытный в 1С

    Регистрация:
    6 окт 2008
    Сообщения:
    212
    Симпатии:
    0
    Баллы:
    26
    т.е. сравнить итоговые НДС полученные разными методами и, если разница, то сделать НДС последней строки заведомо неверным?
  4. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    не неверным - разница будет в копейку-две.... Тем более что общий результат будет правильным, а это главное
  5. TopicStarter Overlay
    M a x i m
    Offline

    M a x i m Опытный в 1С

    Регистрация:
    6 окт 2008
    Сообщения:
    212
    Симпатии:
    0
    Баллы:
    26
    Спасибо
  6. TopicStarter Overlay
    M a x i m
    Offline

    M a x i m Опытный в 1С

    Регистрация:
    6 окт 2008
    Сообщения:
    212
    Симпатии:
    0
    Баллы:
    26
    а можно ли с тем же успехом сделать так?:
    1. не рассчитывая для каждой строки НДС просто взять итог табличной части по полю НДС
    2. взять таким же методом итог по Всего каждой строки
    2.1. рассчитать НДС от этого итога
    3. сравнить результаты
    3.1. если есть отличия, то корректировать последнюю строку
  7. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Можно... но весь вопрос где вы это будите делать.... При записи? А если бух зашел, добавил/изменил и ему приспичило распечатать? Добавлять еще и по кнопке печать? Хотя отвечая на вопрос я забыл уточнить - строчки еще могут удалять.... Так что НДС всяко придеся пересчитывать и при удалении строки. Ваш способ не подходит. Пересчитывать самим НДС НАДО, потому что строки могут быть скопированы.... И если скопировать ПОСЛЕДНЮЮ строку (НДС там уже не тот...) то и дальше будет неправильно)))))))))
  8. TopicStarter Overlay
    M a x i m
    Offline

    M a x i m Опытный в 1С

    Регистрация:
    6 окт 2008
    Сообщения:
    212
    Симпатии:
    0
    Баллы:
    26
    В модуле документа есть ПересчитатьЦены(), которая делает именно пересчет по каждой строке в выборке, плюс она сама смотрит тип документа, тип рассчета налога, ставку налога. Что, если я просто вызову её, а потом сделаю Итог("НДС")?

    таким образом я создаю напр. процедуру ПересчетНДСВСтроках(), в которой будет вызываться ПересчитатьЦены(), и добавляю ее вызов в ПриОкончанииРедактированияСтроки()
    и ПриИзмененииПорядкаСтрок()

    Проблема для ПриУдаленииСтроки() - содержимое будет исполнено ДО удаления, а не после. Как бы сделать, чтобы пересчет был после удаления?
  9. TopicStarter Overlay
    M a x i m
    Offline

    M a x i m Опытный в 1С

    Регистрация:
    6 окт 2008
    Сообщения:
    212
    Симпатии:
    0
    Баллы:
    26
    чтобы пересчет был после удаления, теоретически можно думаю так:
    -взять первую строку
    -считать значение поля "количество"
    -присвоить чему-то
    -присвоить значение чему-то тому же полю "количество"
    -вызвать ПересчетНДСВСтроках()
    умнее ничего не придумал
  10. TopicStarter Overlay
    M a x i m
    Offline

    M a x i m Опытный в 1С

    Регистрация:
    6 окт 2008
    Сообщения:
    212
    Симпатии:
    0
    Баллы:
    26
    Бухгалтерский угодник, я быстро ответил и не подумал насчет удаления. И сейчас не знаю, как это реализовать. Поэтому прошу помощи.

    p.s. Предыдущий метод действует не после удаления.
    Также я вставлял вызов на ПересчетНДСВСтроках
    в УдалитьСтроку() - не помогло.
    А событий в 1с не так и много...
  11. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Воспользуйся процедурой ОбработкаОжиданя - она работает не только в глобальном модуле))))))))

Поделиться этой страницей