Простая задачка: после применения скидки, например, по карте лояльности, округлить итоговую сумму по документу до целого рубля в пользу клиента, что бы сдача была без копеек.
Решение:
После расчёта скидки, отыскать строку с наибольшей суммой и подправить её на число копеек в итого.
Для этого в модуле формы документа Реализация товаров и услуг, находим процедуру РассчитатьСкидкиНаценкиНаСервере и вставляем кусок кода после расчёта скидок, но перед обновлением итоговых сумм, например, перед строкой
Объект.СкидкиРассчитаны = Истина;
Текст, на рисунке он не помещается, можно скопировать отсюда:
текИтог = Объект.Товары.Итог("СуммаСНДС");
Простить = текИтог % 1;
Если Простить > 0 Тогда
текСумма = 0;
максСтрока = -1;
Для Каждого Элемента из Объект.Товары Цикл
Если Элемента.СуммаСНДС > текСумма Тогда
текСумма = Элемента.СуммаСНДС;
максСтрока = Элемента.НомерСтроки - 1;
КонецЕсли;
КонецЦикла;
Если максСтрока -1 Тогда
Объект.Товары[максСтрока].СуммаСНДС = Объект.Товары[максСтрока].СуммаСНДС - Простить;
Объект.Товары[максСтрока].СуммаАвтоматическойСкидки =
Объект.Товары[максСтрока].СуммаАвтоматическойСкидки + Простить;
Объект.Товары[максСтрока].ПроцентАвтоматическойСкидки =
Окр(Объект.Товары[максСтрока].СуммаАвтоматическойСкидки /
(Объект.Товары[максСтрока].Количество * Объект.Товары[максСтрока].Цена) * 100, 2);
СтруктураПересчетаСуммы = ОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруПересчетаСуммыНДСВСтрокеТЧ(Объект);
ТекПроцентНДС = ЦенообразованиеКлиентСервер.ПолучитьСтавкуНДСЧислом(Объект.Товары[максСтрока].СтавкаНДС);
Объект.Товары[максСтрока].СуммаНДС = ЦенообразованиеКлиентСервер.РассчитатьСуммуНДС(Объект.Товары[максСтрока].Сумма,
ТекПроцентНДС, СтруктураПересчетаСуммы.ЦенаВключаетНДС);
Объект.Товары[максСтрока].Сумма = Объект.Товары[максСтрока].СуммаСНДС -
?(СтруктураПересчетаСуммы.ЦенаВключаетНДС, 0, Объект.Товары[максСтрока].СуммаНДС);
КонецЕсли;
КонецЕсли;
Теперь при записи или по команде пользователя «Рассчитать скидки» будет выполняться корректировка копеек.