8.х Округление суммы в чеке ККМ

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем gotovtsev, 13 мар 2009.

  1. TopicStarter Overlay
    gotovtsev
    Offline

    gotovtsev

    Регистрация:
    13 дек 2008
    Сообщения:
    14
    Симпатии:
    0
    Баллы:
    1
    Здравствуйте! Мне необходимо в чеке ккм чтоб после ввода ручной скидки, округлялась сумма до 10. Изменил Процедуру "РассчитатьСуммуТабЧасти" но ничего не получилось, подскажите в чем может быть проблема.

    Код:
    Процедура РассчитатьСуммуТабЧасти(СтрокаТабличнойЧасти, ДокументОбъект, СпособРасчета = Неопределено) Экспорт
    
    ИмяТабличнойЧасти = ОбщегоНазначения.ПолучитьИмяТабличнойЧастиПоСсылкеНаСтроку(СтрокаТабличнойЧасти);
    
    МетаданныеДокумента = ДокументОбъект.Метаданные();
    
    Сумма = СтрокаТабличнойЧасти.Цена * СтрокаТабличнойЧасти.Количество;
    СуммаСкидки = 0;         
    
    Если (СпособРасчета = Неопределено)
    Или (СпособРасчета = Перечисления.СпособРасчетаСуммыДокумента.СУчетомВсехСкидок)
    Или (СпособРасчета = Перечисления.СпособРасчетаСуммыДокумента.БезУчетаРучнойСкидки) Тогда
    Если ОбщегоНазначения.ЕстьРеквизитТабЧастиДокумента("ПроцентАвтоматическихСкидок", МетаданныеДокумента,
    ИмяТабличнойЧасти) Тогда
    СуммаСкидки = Сумма * СтрокаТабличнойЧасти.ПроцентАвтоматическихСкидок / 100;
    КонецЕсли;
    
    Если (СпособРасчета <> Перечисления.СпособРасчетаСуммыДокумента.БезУчетаРучнойСкидки)Тогда
    Если ОбщегоНазначения.ЕстьРеквизитТабЧастиДокумента("ПроцентСкидкиНаценки", МетаданныеДокумента, ИмяТабличнойЧасти) Тогда
    СуммаСкидки = СуммаСкидки + (Сумма * СтрокаТабличнойЧасти.ПроцентСкидкиНаценки / 100);
    КонецЕсли;
    КонецЕсли;
    КонецЕсли;
    
    СтрокаТабличнойЧасти.Сумма = Сумма - СуммаСкидки;
    
    Если МетаданныеДокумента.Имя = "ЧекККМ" тогда
    ВремСумма = СтрокаТабличнойЧасти.Сумма;
    Если НЕ СуммаСкидки = 0 тогда
    Если ВремСумма - СтрокаТабличнойЧасти.Сумма < 5 тогда
    СтрокаТабличнойЧасти.Сумма = Окр(СтрокаТабличнойЧасти.Сумма, -1, РежимОкругления.Окр15как10) + 10;
    Иначе
    СтрокаТабличнойЧасти.Сумма = Окр(СтрокаТабличнойЧасти.Сумма, -1, РежимОкругления.Окр15как10);
    КонецЕсли;
    КонецЕсли; 
    КонецЕсли; 
    
    КонецПроцедуры // РассчитатьСуммуТабЧасти()
    
  2. TopicStarter Overlay
    gotovtsev
    Offline

    gotovtsev

    Регистрация:
    13 дек 2008
    Сообщения:
    14
    Симпатии:
    0
    Баллы:
    1
    Неужели не кто не знает((
  3. x_under
    Offline

    x_under Модераторы Команда форума Модератор

    Регистрация:
    25 апр 2007
    Сообщения:
    2.576
    Симпатии:
    13
    Баллы:
    29
    Скорее всего где-то еще есть пересчет. Посмотри события обновление отображения, по окончании редактирования и т.д. Скорее всего что-то еще прорабатывает
  4. BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    Ох, проверка будет рада вашему алгоритму :)

    Посмотрите, как в супермаркета округляют -> только в меньшую сторогу, скрывая это скидкой. Округляю в большею -> привет налоговая и будут совершенно правы.
  5. TopicStarter Overlay
    gotovtsev
    Offline

    gotovtsev

    Регистрация:
    13 дек 2008
    Сообщения:
    14
    Симпатии:
    0
    Баллы:
    1
    А в меньшую сторону, как это сделать?
  6. tunec
    Offline

    tunec Опытный в 1С

    Регистрация:
    2 июн 2008
    Сообщения:
    469
    Симпатии:
    0
    Баллы:
    26
    тебе же вроде подсказали куда копать. поищи "Сумма", могет найдешь. При этом учти,что есть процедуры общего модуля, в т.ч.которые расчитывают НДС, они тоже меняют сумму... И отладчиком побегайте. Посмотрите что после выполнения кода на выходе...
  7. marduk25
    Offline

    marduk25

    Регистрация:
    12 июн 2012
    Сообщения:
    2
    Симпатии:
    0
    Баллы:
    1
    Была аналогичная задача, только округлить нужно было до рублей.
    В общем модуле "ОбработкаТабличныхЧастей" есть процедура "ПроверкаМинимальнойЦены". В этой процедуре и надо округлять.
    Вот мой пример -
    СтрокаТовара.Сумма = ОКР(СтрокаТовара.СуммаБезСкидки * (1 - (СтрокаТовара.ПроцентАвтоматическихСкидок + СтрокаТовара.ПроцентСкидкиНаценки) / 100),0,1);

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