7.7 Округление ЧекаККМ общую сумму до целых

Тема в разделе "Типовые решения "1С:Предприятие 7.7"", создана пользователем Alona, 11 сен 2007.

  1. TopicStarter Overlay
    Alona
    Offline

    Alona

    Регистрация:
    11 сен 2007
    Сообщения:
    22
    Симпатии:
    0
    Баллы:
    1
    Добрый День!

    Поставили задачу - в Товарных Чеках если есть скидка, округлять до рублей общую сумму Чека по правилам математике, т.е. все что больше 0,5 - +1рубль.

    :unsure: B)
  2. PaNo
    Offline

    PaNo

    Регистрация:
    11 сен 2007
    Сообщения:
    29
    Симпатии:
    0
    Баллы:
    1
    Это вопрос? )
  3. Steel Rain
    Offline

    Steel Rain Опытный в 1С

    Регистрация:
    29 сен 2006
    Сообщения:
    408
    Симпатии:
    2
    Баллы:
    29
    Окр(<?>,,)
    Синтаксис:
    Окр(<Число1>,<Число2>,<Способ>)
    Назначение:
    Возвращает значение результата округления.
    Параметры:
    <Число1> - числовое выражение, значение которого надо округлить;
    <Число2> - число значащих цифр дробной части или
    минус число не значащих младших цифр целой части (не обязателен, по умолчанию - 0);
    <Способ> - способ округления граничных значений: 0 - если 1.5 округляется до 1, 1 - если 1.5 округляется до 2 (не обязателен, по умолчанию принимается значение, установленное в окне свойств конфигурации: Конфигурация/Задача/Свойства страница Задача, поле Округление).
  4. TopicStarter Overlay
    Alona
    Offline

    Alona

    Регистрация:
    11 сен 2007
    Сообщения:
    22
    Симпатии:
    0
    Баллы:
    1
    :unsure:

    угу, про функцию я знала, а вот как это в формах сделать?

    Округлять нужно вообще то так:

    Сумма=Цел(Сумма+0.5);

    Мне потом нужно чтобы проведенный документ был на эту сумму.
  5. PaNo
    Offline

    PaNo

    Регистрация:
    11 сен 2007
    Сообщения:
    29
    Симпатии:
    0
    Баллы:
    1
    Конфигурация у Вас- Торговля+склад?
    Какой именно документ? ЧекККМ или Реализация?
    Вводите вручную этот документ или создаете на основании? В зависимости от этого посмотреть какая процедура заполняет суммы и вставить туда функцию округления. => и в документе будет нужная сумма и в печ.форме.
  6. TopicStarter Overlay
    Alona
    Offline

    Alona

    Регистрация:
    11 сен 2007
    Сообщения:
    22
    Симпатии:
    0
    Баллы:
    1
    Чек ККМ.
    а как это сделать?

    смотрю в книгу - вижу фигу!
  7. PaNo
    Offline

    PaNo

    Регистрация:
    11 сен 2007
    Сообщения:
    29
    Симпатии:
    0
    Баллы:
    1
    См. выше. Смотря как заполняется документ. Вручную или на основании? В той функции и ищи заполнение суммы.

    Перебор будет выглядеть примерно так:
    Код:
            ВыбратьСтроки();
    Пока ПолучитьСтроку()=1 Цикл 
    Если ПустоеЗначение(Скидка)=0 Тогда
    Сумма=Окр(Сумма,,1);
    КонецЕсли;
    КонецЦикла;
    
    
    Можно его хоть в отдельную кнопку вынести- типа ("Скинуть")
  8. TopicStarter Overlay
    Alona
    Offline

    Alona

    Регистрация:
    11 сен 2007
    Сообщения:
    22
    Симпатии:
    0
    Баллы:
    1
    вводиться в ручную.

    тут идея такая - товара может быть много, через подбор он выбирается, а при выборе скидка - нужно пересчитать и округлить.

    как в печатной форме сделать - я знаю, только это будет расхождение с проводкой.
    а вот как сделать в этом случае - я не еще не пробывала.
  9. TopicStarter Overlay
    Alona
    Offline

    Alona

    Регистрация:
    11 сен 2007
    Сообщения:
    22
    Симпатии:
    0
    Баллы:
    1
    о! нашла.
    глПересчитатьСкидки

    а как узнать общую итоговую сумму?
    по идее если знать общую итоговую сумму без скидки, расчитать сумму со скидкой, вычесть разницу, выделить копейки и в первой сторке с товаром вычесть эти копейки.

    осталось узнать как получить итоговую сумму...
    не делая два прохода
  10. TopicStarter Overlay
    Alona
    Offline

    Alona

    Регистрация:
    11 сен 2007
    Сообщения:
    22
    Симпатии:
    0
    Баллы:
    1
    сделала.

    спасение утопающих - дело рук самих утопающих:

    Процедура глПересчитатьСкидки(Конт) Экспорт

    Перем Скидка,
    //alona
    ОбщаяСумма;

    Скидка = Конт.Скидка;
    ВидДок = Конт.Вид();

    Конт.ВыбратьСтроки();
    Пока Конт.ПолучитьСтроку()=1 Цикл
    Цена = Конт.Цена;
    Количество = Конт.Количество;

    КоэффСкидки = 0;

    КоэффСкидки=Конт.Скидка.Процент/100;

    Конт.Сумма = Цена*Количество - Цена*Количество*КоэффСкидки;

    //alona
    ОбщаяСумма = ОбщаяСумма+Конт.Сумма;

    Если глЕстьРеквизитШапки("УчитыватьНП", ВидДок) =1 Тогда
    глРасчетНалога(Конт,"НП");
    КонецЕсли;
    Если глЕстьРеквизитШапки("УчитыватьНДС", ВидДок) =1 Тогда
    глРасчетНалога(Конт,"НДС");
    КонецЕсли;
    КонецЦикла;

    //alona вычислим копейки чтоб до рубля округлить первую сумму.
    ОбщаяСумма = ОбщаяСумма - Цел(ОбщаяСумма+0.5);
    Если Конт.ПолучитьСтрокуПоНомеру(1)=1 Тогда
    Конт.Сумма=Конт.Сумма-ОбщаяСумма;
    //надо бы проверять чтоб сумма отрицательной не получилась - в цикле.
    //надеюсь товара меньше 50 копеек не будет
    Иначе
    Предупреждение("Чото не так...");
    КонецЕсли;

    КонецПроцедуры // глПересчитатьСкидки()

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