Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
14 дек 2024, 05:51

Округление в документе реализации

Автор Конст_007, 19 июн 2015, 13:23

0 Пользователей и 1 гость просматривают эту тему.

Конст_007

Добрый день!

Помогите пожалуйста с округлением в документе "РеализацияТоваровУслуг".
УТ 11.1
Необходимо иногда округлять сумму по каждой позиции и Итоговую по документу до рубля. Пробую такую процедуру навешать на кнопку:

&НаКлиенте
//округление суммы по каждой позиции, внесение ручной скидки по позициям и итоговой суммы по округленным суммам
Процедура ОкруглениеСуммПоПозициям(Элемент, ДанныеВыбора, СтандартнаяОбработка)
ТекСтрокаНоменклатура = Элементы.Товары.ТекущиеДанные;
СуммаСОкр = 0;
Для Каждого ТекСтрокаНоменклатура Из Объект.Товары Цикл
ТекСтрокаНоменклатура.Сумма = Окр(ТекСтрокаНоменклатура.Сумма , 0);
ТекСтрокаНоменклатура.СуммаРучнойСкидки =  ТекСтрокаНоменклатура.КоличествоУпаковок * ТекСтрокаНоменклатура.Цена - ТекСтрокаНоменклатура.Сумма ;
СуммаСОкр =  ТекСтрокаНоменклатура.Сумма + СуммаСОкр;
КонецЦикла;
Объект.СуммаДокумента = СуммаСОкр;
КонецПроцедуры


в табличной части суммы по позициям округляет и копеечные расхождения по позициям ставит правильно, при закрытии все сохраняется.
А вот итоговая сумма по документу не меняется, хотя считается в цикле правильно, проверил.
Если добавляю в конец процедуры:
ЭтаФорма.СуммаВсего = СуммаСОкр;
Сумма по документу конечно округляется как надо, но не сохраняется :D
Куда все же эту сумму присвоить, помогите плиз.

Rasty

так может не этаформа, а объект?
Помогли - Скажи спасибо! Решил сам - поделись решением!
:)

Конст_007

Цитата: Rasty от 19 июн 2015, 14:32
так может не этаформа, а объект?

В том то и дело что в объекте документа нету СуммаВсего,
там есть только СуммаДокумента...
Подскажите куда дальше копать плиз

ilyay

Нужно проверить, как называется поле, на которое ссылается элемент формы "СуммаВсего". Скорее всего, он ссылается на "Объект.СуммаДокумента".

Вообще говоря, сумма документа должна всегда присваиваться в ПередЗаписью в модуле объекта.

Конст_007

Спасибо за ответы! подтолкнули на правильную мысль.

В общем проблема была как я понял в том, что сумма пересчитывалась еще и с учетом НДС.
Т.к. по факту товар продается без НДС сделал так:

&НаСервере
//Получение значение "ПродажаНеОблагаетсяНДС" для процедуры округления
Функция ФункцНДС()
Возврат Перечисления.ТипыНалогообложенияНДС.ПродажаНеОблагаетсяНДС;
КонецФункции

&НаКлиенте
//округление суммы по каждой позиции, внесение ручной скидки по позициям и итоговой суммы по округленным суммам
Процедура ОкруглениеСуммПоПозициям(Элемент, ДанныеВыбора, СтандартнаяОбработка)
ТекСтрокаНоменклатура = Элементы.Товары.ТекущиеДанные;
СуммаСОкр = 0;
Для Каждого ТекСтрокаНоменклатура Из Объект.Товары Цикл
ТекСтрокаНоменклатура.Сумма = Окр(ТекСтрокаНоменклатура.Сумма , 0);
ТекСтрокаНоменклатура.СуммаРучнойСкидки =  ТекСтрокаНоменклатура.КоличествоУпаковок * ТекСтрокаНоменклатура.Цена - ТекСтрокаНоменклатура.Сумма ;
СуммаСОкр =  ТекСтрокаНоменклатура.Сумма + СуммаСОкр;
КонецЦикла;
ЭтаФорма.СуммаВсего = СуммаСОкр;
Объект.НалогообложениеНДС = ФункцНДС();
СуммаВсего = СуммаСОкр;
Объект.СуммаДокумента = СуммаСОкр;
НалогообложениеНДСПриИзменении(Элемент);
КонецПроцедуры


Т.е. при запуске процедуры в документе меняется признак учета НДС, после чего проставляется сумма по документу,
после чего прогоняется стандартная процедура НалогообложениеНДСПриИзменении.
Как то так, в общем работает.

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск