|
Автоматический перерасчет суммы строки табличной части, при установке вручную | ☑ | ||
---|---|---|---|---|
0
slasher
18.06.15
✎
16:50
|
Добрый вечер!
Комплексная автоматизация. Документ "Заявка покупателя". Табличная часть "Услуги". Ввожу количество = 2, цена = 3, сумма автоматом рассчитывается = 6. Все хорошо. Когда сумму руками правлю и ставлю 6.01 программа пересчитывает цену = 3.01 и сумму ставит 6.02. Хочу чтобы программа сумму не меняла, а оставляла ту, которую поставит пользователь. Отладчиком пользоваться умею. Не смог найти где сумма пересчитывается. Подскажите, что делать в моей ситуации? |
|||
1
ДенисЧ
18.06.15
✎
16:50
|
Есть два варианта
1. Простой. Заплатить тому, кто умеет. 2. Сложный. Научиться самому. |
|||
2
vicof
18.06.15
✎
16:51
|
"Отладчиком пользоваться умею"
Таки, видимо не умеете |
|||
3
slasher
18.06.15
✎
16:53
|
(1) чему научиться самому?
|
|||
4
slasher
18.06.15
✎
16:53
|
(2) а можете меня носом ткнуть?
|
|||
5
VikingKosmo
18.06.15
✎
16:54
|
(4) в отладчик?
|
|||
6
vicof
18.06.15
✎
16:58
|
(4) Сколько? Мне вот откровенно лень комплексную ставить, чо-то там отлаживать, потом окажется, что нетиповая, и какие-нить криворукие погромисты написали кривую функцию изменения цены при изменении суммы.
|
|||
7
slasher
18.06.15
✎
16:59
|
(5) в строку кода, где сумма пересчитывается в моём случае
|
|||
8
ВРедная
18.06.15
✎
17:03
|
(6) Вероятнее всего про чьи-то руки как раз в точку. Врядли в типовой такой дурной код
|
|||
9
slasher
18.06.15
✎
17:03
|
(6) если лень, тогда зачем было вообще писать сообщение?
Или было непреодолимое желание поучить кого-то жизни? |
|||
10
разработчик 1с
18.06.15
✎
17:04
|
(7) УслугиСуммаПриИзменении(Элемент) - чтото типа такого
|
|||
11
ВРедная
18.06.15
✎
17:05
|
(9) А что мы тут сможем еще сделать? Удаленно к тебе подключиться и отлаживать твою переписанную комплексную?
|
|||
12
Poluk
18.06.15
✎
17:06
|
В событие "при изменении", в колонке "сумма" смотрели?
|
|||
13
vicof
18.06.15
✎
17:07
|
(9) Я спросил "сколько"?
|
|||
14
slasher
18.06.15
✎
17:09
|
(6)(8)(11) база типовая
|
|||
15
slasher
18.06.15
✎
17:10
|
(10)(12) конечно посмотрел, ничего не нашёл
|
|||
16
slasher
18.06.15
✎
17:11
|
(13) чего сколько?
|
|||
17
vicof
18.06.15
✎
17:12
|
(16) Дашь, чтобы я поковырялся в твоей базе
|
|||
18
bootini
18.06.15
✎
17:14
|
ОбновлениеОтображения()
|
|||
19
Poluk
18.06.15
✎
17:25
|
ТОгда цену нужно в табло поставить, и смотреть на изменение во времени отработки события при изменении.. если меняется то где то внутри этого события.... отладчиком в это событие попадает?
|
|||
20
slasher
18.06.15
✎
17:29
|
(17) такие вопросы нужно согласовывать с Волшебником
|
|||
21
slasher
18.06.15
✎
17:30
|
(18) уже теплее, но не то, ещё до обновления отображения сумма измененная
|
|||
22
ВРедная
18.06.15
✎
17:39
|
(15) Серьезно? Ничего?
Процедура УслугиСуммаПриИзменении(Элемент) ОбработкаТабличныхЧастей.ПриИзмененииСуммыТабЧасти(ЭлементыФормы.Услуги.ТекущиеДанные, ЭтотОбъект, глЗначениеПеременной("глТекущийПользователь"),,истина,мПересчитыватьСкидку,истина,"Услуги"); ОбработкаТабличныхЧастей.РассчитатьСуммуНДСТабЧасти(ЭлементыФормы.Услуги.ТекущиеДанные, ЭтотОбъект); КонецПроцедуры Процедура которая вызывается при изменении суммы. Внезнапно. Первая вызываемая процедура пересчитывает сумму или скидку. Ты до нее не дошел? |
|||
23
slasher
18.06.15
✎
17:58
|
(22) ну это первая процедура куда мы вываливаемся из формы документа и что? Я в упор не вижу пересчет суммы.
|
|||
24
bootini
18.06.15
✎
18:06
|
"Отладчиком пользоваться умею." :)
|
|||
25
hhhh
18.06.15
✎
18:07
|
(23) ну давай сюда эту процедуру
|
|||
26
bootini
18.06.15
✎
18:08
|
Остановись на строке:
ОбработкаТабличныхЧастей.ПриИзмененииСуммыТабЧасти(ЭлементыФормы.Услуги.ТекущиеДанные, ЭтотОбъект, глЗначениеПеременной("глТекущийПользователь"),,истина,мПересчитыватьСкидку,истина,"Услуги"); И нажми на клавиатуре кнопочку "F11" |
|||
27
slasher
18.06.15
✎
18:11
|
проваливаемся по F12
видим: Процедура ПриИзмененииСуммыТабЧасти(СтрокаТабличнойЧасти, ДокументОбъект, ТекПользователь, РасчетАвтоматическихСкидок = Ложь, ЕстьРеквизитДокументаПроцентСкидкиНаценки = Неопределено, ПересчитыватьСкидкуДокумента = Неопределено, ЕстьРеквизитДокументаПроцентАвтоматическихСкидок = Неопределено, ИмяТабЧастиДокумента = неопределено) Экспорт ИмяТабличнойЧасти = ?(ИмяТабЧастиДокумента=неопределено,ОбщегоНазначения.ПолучитьИмяТабличнойЧастиПоСсылкеНаСтроку(СтрокаТабличнойЧасти),ИмяТабЧастиДокумента); Если СтрокаТабличнойЧасти.Количество=0 Тогда СтрокаТабличнойЧасти.Цена = 0; Иначе МетаданныеДокумента = ДокументОбъект.Метаданные(); ЕстьРеквизитПроцентСкидкиНаценки = ?(ЕстьРеквизитДокументаПроцентСкидкиНаценки=неопределено,ОбщегоНазначения.ЕстьРеквизитТабЧастиДокумента("ПроцентСкидкиНаценки", МетаданныеДокумента, ИмяТабличнойЧасти),ЕстьРеквизитДокументаПроцентСкидкиНаценки); Если ЕстьРеквизитПроцентСкидкиНаценки Тогда ПересчитыватьСкидку = ?(ПересчитыватьСкидкуДокумента=неопределено,УправлениеПользователями.ПолучитьЗначениеПоУмолчанию(ТекПользователь, "ПриИзмененииСуммыПересчитыватьСкидку"),ПересчитыватьСкидкуДокумента); ЕстьРеквизитПроцентАвтоматическихСкидок = ?(ЕстьРеквизитДокументаПроцентАвтоматическихСкидок=неопределено,ОбщегоНазначения.ЕстьРеквизитТабЧастиДокумента("ПроцентАвтоматическихСкидок", МетаданныеДокумента, ИмяТабличнойЧасти),ЕстьРеквизитДокументаПроцентАвтоматическихСкидок); Если ПересчитыватьСкидку Тогда Если (СтрокаТабличнойЧасти.Цена = 0) Или (СтрокаТабличнойЧасти.Количество = 0) Тогда СтрокаТабличнойЧасти.ПроцентСкидкиНаценки = 0; Если СтрокаТабличнойЧасти.Цена = 0 Тогда ОбщегоНазначения.СообщитьОбОшибке("Цена равна 0, после изменения суммы установлена нулевая скидка!"); Иначе ОбщегоНазначения.СообщитьОбОшибке("Количество равно 0, после изменения суммы установлена нулевая скидка!"); КонецЕсли; Иначе СуммаСоСкидками = СтрокаТабличнойЧасти.Сумма; СуммаБезСкидок = СтрокаТабличнойЧасти.Цена * СтрокаТабличнойЧасти.Количество; ПроцентСкидки = 100 - (СуммаСоСкидками*100)/СуммаБезСкидок; ПроцентАвтоматическихСкидок = 0; Если ЕстьРеквизитПроцентАвтоматическихСкидок Тогда ПроцентАвтоматическихСкидок = СтрокаТабличнойЧасти.ПроцентАвтоматическихСкидок; КонецЕсли; СтрокаТабличнойЧасти.ПроцентСкидкиНаценки = ПроцентСкидки - ПроцентАвтоматическихСкидок; КонецЕсли; Иначе Если СтрокаТабличнойЧасти.ПроцентСкидкиНаценки >= 100 Тогда СтрокаТабличнойЧасти.Цена = 0; ОбщегоНазначения.СообщитьОбОшибке("Скидка равна 100%, после изменения суммы установлена нулевая цена!"); Иначе ПроцентАвтоматическихСкидок = 0; Если ЕстьРеквизитПроцентАвтоматическихСкидок Тогда ПроцентАвтоматическихСкидок = СтрокаТабличнойЧасти.ПроцентАвтоматическихСкидок; КонецЕсли; СуммаБезСкидок = СтрокаТабличнойЧасти.Сумма * 100/ (100 - СтрокаТабличнойЧасти.ПроцентСкидкиНаценки - ПроцентАвтоматическихСкидок); СтрокаТабличнойЧасти.Цена = СуммаБезСкидок / СтрокаТабличнойЧасти.Количество; КонецЕсли; КонецЕсли; Иначе СтрокаТабличнойЧасти.Цена = СтрокаТабличнойЧасти.Сумма / СтрокаТабличнойЧасти.Количество; КонецЕсли; КонецЕсли; КонецПроцедуры // ПриИзмененииСуммыТабЧасти() |
|||
28
slasher
18.06.15
✎
18:13
|
ПересчитыватьСкидку = Ложь, если что
|
|||
29
shuhard_серый
18.06.15
✎
18:13
|
(0) развод явный и очевидный
нет в КА Документ "Заявка покупателя" |
|||
30
bootini
18.06.15
✎
18:15
|
И что мы видим, а видим мы:
СтрокаТабличнойЧасти.Цена = СтрокаТабличнойЧасти.Сумма / СтрокаТабличнойЧасти.Количество; |
|||
31
bootini
18.06.15
✎
18:17
|
(29) да, понятно, охота тоже херней помаяться, на главной все рано интересных тем нет
|
|||
32
slasher
18.06.15
✎
18:17
|
(29) не надо придираться, ЗаказПокупателя
|
|||
33
slasher
18.06.15
✎
18:19
|
(30) вы меня простите, но это пересчет цены, а не суммы
|
|||
34
bootini
18.06.15
✎
18:20
|
(33) я уже и забыл с чего все начиналось
|
|||
35
ilkoder
18.06.15
✎
18:25
|
И чего? в упп таже фигня - пересчитывает по сумме подходящую цену, а потом по цене опять считает сумму. В бухалтерии не так - ставь какую хочешь сумму - цену подгонит, а сумму не меняет. только если типовой код менять
|
|||
36
bootini
18.06.15
✎
18:27
|
(33) после выхода из процедуры, какие цена и сумма выходят?
|
|||
37
slasher
18.06.15
✎
18:42
|
(35) где она "по цене опять считает сумму", я не могу этот момент поймать, чтобы исправить код.
|
|||
38
slasher
18.06.15
✎
18:43
|
(36) на выходе из процедуры выходят суммы, которые руками ставил, до обновления отображения уже измененные.
|
|||
39
bootini
18.06.15
✎
19:03
|
(38) цену пересчитывает 3,005, потом округляет до двух знаков до 3,01 и пересчитывает Сумму, может ТоварыПриОкончанииРедактирования что-то есть?
|
|||
40
slasher
18.06.15
✎
19:39
|
(39) красавец, спасибо, именно где-то внутри этой процедуры. я не нашел где конкретно, не где-то там. На входе в процедуры одна сумма, на выходе другая.
|
|||
41
slasher
18.06.15
✎
19:42
|
как нормальный человек (я не себя имею ввиду) должен был догадаться где находится этот пересчёт?
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |