Имя: Пароль:
1C
1С v8
УТ 10.3 Не пойму, почему не работает округление
,
0 DrunkWolf
 
23.12.11
07:10
УТ 10.3
Для того, чтобы при расчете суммы со скидкой не было копеек добавил функцию округления (ОКР) в процедуру общего модуля:


Процедура РассчитатьСуммуТабЧасти(СтрокаТабличнойЧасти, ДокументОбъект, СпособРасчета = Неопределено) Экспорт

   ИмяТабличнойЧасти = ОбщегоНазначения.ПолучитьИмяТабличнойЧастиПоСсылкеНаСтроку(СтрокаТабличнойЧасти);

   МетаданныеДокумента = ДокументОбъект.Метаданные();

   Сумма = СтрокаТабличнойЧасти.Цена * СтрокаТабличнойЧасти.Количество;
   СуммаСкидки = 0;

   Если (СпособРасчета = Неопределено)
    Или (СпособРасчета = Перечисления.СпособРасчетаСуммыДокумента.СУчетомВсехСкидок)
    Или (СпособРасчета = Перечисления.СпособРасчетаСуммыДокумента.БезУчетаРучнойСкидки) Тогда
       Если ОбщегоНазначения.ЕстьРеквизитТабЧастиДокумента("ПроцентАвтоматическихСкидок", МетаданныеДокумента,
                                            ИмяТабличнойЧасти) Тогда
           СуммаСкидки = окр ((Сумма * СтрокаТабличнойЧасти.ПроцентАвтоматическихСкидок / 100));
       КонецЕсли;

       Если (СпособРасчета <> Перечисления.СпособРасчетаСуммыДокумента.БезУчетаРучнойСкидки)Тогда
           Если ОбщегоНазначения.ЕстьРеквизитТабЧастиДокумента("ПроцентСкидкиНаценки", МетаданныеДокумента, ИмяТабличнойЧасти) Тогда
               СуммаСкидки = окр((СуммаСкидки + (Сумма * СтрокаТабличнойЧасти.ПроцентСкидкиНаценки / 100)));
           КонецЕсли;
       КонецЕсли;
   КонецЕсли;

   СтрокаТабличнойЧасти.Сумма = окр((Сумма - СуммаСкидки));

КонецПроцедуры // РассчитатьСуммуТабЧасти()

Когда смотрю в отладчике значение у СтрокаТабличнойЧасти.Сумма идет без копеек. Например 712. Однако в таб. часть документа почему-то выводит 712,50! 0_о
1 Godofsin
 
23.12.11
07:44
отладчик в руки
2 Godofsin
 
23.12.11
07:44
и вперед
3 Godofsin
 
23.12.11
07:45
сорри, не внимательно прочитал
4 Seducer
 
23.12.11
07:49
(0) Ну посмотри дальше по отладчику. Может после этой процедуры еще что-то делается.
5 DrunkWolf
 
23.12.11
09:14
(4) В том то и дело, что ничего нет, округление вызывается из ПриИзмененииКоличестваТовары, т.е. на полседней строчке выполенения переменная имеет правильное значение, а на выходе в программу дает неправильное!
6 Seducer
 
23.12.11
09:26
Т.е. при возвращении в процедуру ПриИзмененииКоличестваТовары() сумма как будто и не округлялась?
7 DrunkWolf
 
23.12.11
09:26
Может в 8.2 есть какая-то приколюха, о которой я не знаю, связанная со вступлениями изменений в силу после обновления БД?
8 Seducer
 
23.12.11
09:29
чего?????  О_о
Т.е. ты внес изменения, связанные с округлением, а конфигурацию БД не обновил?  О_о
9 DrunkWolf
 
23.12.11
09:30
Обновлял!! Но они как будто бы не приняты во внимание
10 БибиГон
 
23.12.11
09:30
(0)SQL ?
11 DrunkWolf
 
23.12.11
09:31
(6)при возвращении в процедуру ПриИзмененииКоличестваТовары()   объект СтрокаТабличнойЧасти.Сумма показывает нужно число. Это послденяя строка, дальше идет переход в программу, в которой в колонке сумма число вылазит снова неокругленным..
12 DrunkWolf
 
23.12.11
09:31
(10)файловая
13 DrunkWolf
 
23.12.11
09:32
Процедура ПриИзмененииКоличестваТовары(Элемент)

   СтрокаТабличнойЧасти = ЭлементыФормы.Товары.ТекущиеДанные;

   ОбработкаТабличныхЧастей.РассчитатьСуммуТабЧасти(СтрокаТабличнойЧасти, ЭтотОбъект);

КонецПроцедуры // ПриИзмененииКоличестваТовары()


Код РассчитатьСуммуТабЧасти выше приводил. Больше ничего нет.
14 Hawk_1c
 
23.12.11
09:34
Где смотришь, что без копеек? Формат колонки посмотри...
15 DrunkWolf
 
23.12.11
09:39
(14) Посмотрел: ЧДЦ=0
16 Hawk_1c
 
23.12.11
10:13
Сорри, не верно прочитал задачу.
17 DrunkWolf
 
23.12.11
10:50
Что больше ни у кого нет догадок? Нечто подобное как-то давно у меня было с Бух. 2.0 Вроде бы все закодил правильно, обновил, а изменения не действуют. Может есть что-то в 8.2 платформе, чего я не знаю??
18 НЕА123
 
23.12.11
10:57
(17)
>Вроде бы все закодил правильно, обновил, а изменения не действуют.
если Демоническое обновление сделал, то в поиск.
19 DrunkWolf
 
23.12.11
10:58
Делал, а че искать-то? :-)
20 НЕА123
 
23.12.11
11:01
>а че искать-то?
искать мантру по выведению Демона.
21 Рыцарь
 
23.12.11
11:04
(0) не работает только на одном компе или на всех?
22 DrunkWolf
 
23.12.11
11:24
Да на всех
23 DrunkWolf
 
23.12.11
11:24
(20) ссылку можешь кинуть?
24 BuHu
 
23.12.11
11:25
а после обновления в программу то перезашли?
25 DrunkWolf
 
23.12.11
11:27
(24) да, даже выкидывал всех, чтоб уж наверняка
26 НЕА123
 
23.12.11
11:28
27 DrunkWolf
 
23.12.11
11:37
Так у всех же не работает, не только у меня.. На всякий случай удалил базу из списка, добавил заново - тоже самое.
28 Феерия
 
23.12.11
11:40
Может быть у вас где-то еще потом сумма пересчитывается уже без округления? Какой-нибудь стандартной процедурой...
29 DrunkWolf
 
23.12.11
11:45
Может и пересчитыватся, но насколько я понимаю если срабатывает ПриИзмененииКоличестваТовары(Элемент), то отрабатывается только то, что в ней и ничего кроме.
30 Феерия
 
23.12.11
11:46
А какое-нибудь обновление отображения или в этом духе?
31 Mans
 
23.12.11
11:52
бубен:
   ОбработкаТабличныхЧастей.РассчитатьСуммуТабЧасти(СтрокаТабличнойЧасти, ЭтотОбъект);
   СтрокаТабличнойЧасти.Сумма=???
КонецПроцедуры // ПриИзмененииКоличестваТовары()
32 DrunkWolf
 
23.12.11
11:57
(31) СтрокаТабличнойЧасти.Сумма = округленное значение, которое перестают быть округленным при выходе из отладки.
33 DrunkWolf
 
23.12.11
12:02
(30) Блин, вы гений, а я идиот) Как же все просто оказалось..
34 hhhh
 
23.12.11
12:02
(32) а где смотришь? В той колонке, в которой нужно? Или просто где в заголовке слово "Сумма"?
35 НЕА123
 
23.12.11
12:07
(13)
>    СтрокаТабличнойЧасти = ЭлементыФормы.Товары.ТекущиеДанные;

может ТекушаяСтрока лучше?
36 НЕА123
 
23.12.11
12:08
+(35)
неа. я не прав.
37 DrunkWolf
 
23.12.11
12:21
(33) ХОтя рано... там только отоброжение суммы в подвале... (34) что то я потерял нить...
38 Феерия
 
23.12.11
12:35
А в документе отображается точно именно те значения, которые вы меняете? У меня все время с этим проблемы)
Если именно те, то скорее всего где-то пересчитывается после вашей процедуры...
39 Mans
 
23.12.11
12:48
перепроверить все события на ТЧ
40 Феерия
 
23.12.11
12:55
Ну да, точек останова понаставить везде. Предположение из ряда безумных - может подписка на события есть для скидок, например?
41 НЕА123
 
23.12.11
13:24
я бы замер производительности сделал.
42 Феерия
 
23.12.11
16:13
Ну получилось найти причину?
43 DrunkWolf
 
27.12.11
10:16
Нет по-прежнму(
44 banco
 
27.12.11
10:31
автоматические скидки
45 banco
 
27.12.11
10:42
обработчик события "ПриОкончанииРедактирования" тч
Основная теорема систематики: Новые системы плодят новые проблемы.