|
Табличная часть | ☑ | ||
---|---|---|---|---|
0
ilyavorobyev
04.09.14
✎
14:14
|
Есть документ Счет на оплату покупателей, добавил колонку наценка, добавил событие при изменении на поле ввода этой колонки, только оно почему то отрабатывает, когда документ проведен, почему так?
|
|||
1
Maxus43
04.09.14
✎
14:15
|
код в студию
|
|||
2
ilyavorobyev
04.09.14
✎
14:16
|
СтрокаТабличнойЧасти = ЭлементыФормы.Товары.ТекущиеДанные;
Если НЕ ЗначениеЗаполнено(Элемент.Значение) Тогда ОбработкаТабличныхЧастей.РассчитатьСуммуТабЧасти(СтрокаТабличнойЧасти, ЭтотОбъект); ОбработкаТабличныхЧастей.РассчитатьСуммуНДСТабЧасти(СтрокаТабличнойЧасти, ЭтотОбъект); Иначе СтараяЦена = СтрокаТабличнойЧасти.Цена; СтрокаТабличнойЧасти.Цена = СтрокаТабличнойЧасти.Цена + СтрокаТабличнойЧасти.Цена / 100 * Элемент.Значение; ОбработкаТабличныхЧастей.РассчитатьСуммуТабЧасти(СтрокаТабличнойЧасти, ЭтотОбъект); ОбработкаТабличныхЧастей.РассчитатьСуммуНДСТабЧасти(СтрокаТабличнойЧасти, ЭтотОбъект); СтрокаТабличнойЧасти.Цена = СтараяЦена; КонецЕсли; |
|||
3
Wobland
04.09.14
✎
14:21
|
>оно почему то отрабатывает, когда документ проведен
это ты верно подметил,да |
|||
4
ilyavorobyev
04.09.14
✎
14:24
|
(3) да я про то, что отрабатывает только тогда когда документ проведен,если записан то вызывается но сумма остается та же, при еще не записанном документе тоже не отрабатывает
|
|||
5
Wobland
04.09.14
✎
14:26
|
(4) тебя поуговаривать заняться отладкой?
|
|||
6
ilyavorobyev
04.09.14
✎
14:28
|
(5) уже делал, в переменной СтрокаТабличнойЧасти в конце все нормально приходит и сумма рассчиталась с учетом наценки и НДС
|
|||
7
Wobland
04.09.14
✎
14:29
|
(6) только что сумма оставалась той же
|
|||
8
ilyavorobyev
04.09.14
✎
14:30
|
(7) все изменяется, но почему то на форме не меняется сумма, при отладке в реквизите все ок а когда завершается то на форме все так же остается
|
|||
9
Timon1405
04.09.14
✎
14:32
|
а уж не в(амперах ли считается сила тока) отдельном ли реквизите сидит СуммаДокумента?
|
|||
10
AlexToo
04.09.14
✎
14:36
|
форма.обновить()?
|
|||
11
ilyavorobyev
04.09.14
✎
14:36
|
(9) это общая сумма документа а не сумма строки табличной части
|
|||
12
ilyavorobyev
04.09.14
✎
14:38
|
(10) добавил, сейчас на секунду значения меняются на правильные а потом снова возвращаются к прежним
|
|||
13
AlexToo
04.09.14
✎
14:41
|
Вот этот момент не понял:
СтараяЦена = СтрокаТабличнойЧасти.Цена;//сохранил старую цену //посчитал СтрокаТабличнойЧасти.Цена = СтараяЦена;//вернул старую цену? |
|||
14
Ёпрст
04.09.14
✎
14:41
|
(12) ну и смотри другие процы, типа обновление отображения и т.д.. которые "взад" меняют твою сумму.
Открой наконец отладчик и посмотри стек вызовов |
|||
15
ilyavorobyev
04.09.14
✎
14:42
|
(13)да нужно чтобы цена старой осталась на форме
|
|||
16
FIXXXL
04.09.14
✎
14:43
|
ты колонку на форму добавил или в ТЧ?
|
|||
17
AlexToo
04.09.14
✎
14:44
|
(15) ну ты в ту же ячейку ее перезаписываешь
|
|||
18
ilyavorobyev
04.09.14
✎
14:44
|
(16) в ТЧ колонку и реквизит в ТЧ
|
|||
19
ilyavorobyev
04.09.14
✎
14:45
|
(15) ну да мне и надо чтобы цена была старой а сумма была рассчитана с ценой + наценка
|
|||
20
AlexToo
04.09.14
✎
14:46
|
(19) глянь процедуры при изменении суммы, есть такие?
|
|||
21
ilyavorobyev
04.09.14
✎
14:48
|
(20) есть закоментировал их, все равно не считается
|
|||
22
FIXXXL
04.09.14
✎
14:49
|
(18) пиши тогда свой кусок в модуле
ОбработкаТабличныхЧастей.РассчитатьСуммуТабЧасти() ибо эта процедура дергается из ста мест в документе при любом чихе |
|||
23
FIXXXL
04.09.14
✎
14:50
|
(22) там же и глянь как надо рассчитывать скидку по типовому
|
|||
24
ilyavorobyev
04.09.14
✎
15:10
|
(22)
ИмяТабличнойЧасти = ОбщегоНазначения.ПолучитьИмяТабличнойЧастиПоСсылкеНаСтроку(СтрокаТабличнойЧасти); МетаданныеДокумента = ДокументОбъект.Метаданные(); Если МетаданныеДокумента = Метаданные.Документы.СчетНаОплатуПокупателю И ЗначениеЗаполнено(СтрокаТабличнойЧасти.Доработка_Наценка) Тогда СтараяЦена = СтрокаТабличнойЧасти.Цена; СтрокаТабличнойЧасти.Цена = СтрокаТабличнойЧасти.Цена + СтрокаТабличнойЧасти.Цена / 100 * СтрокаТабличнойЧасти.Доработка_Наценка; КонецЕсли; Сумма = СтрокаТабличнойЧасти.Цена * СтрокаТабличнойЧасти.Количество; СуммаСкидки = 0; Если (СпособРасчета = Неопределено) Или (СпособРасчета = Перечисления.СпособРасчетаСуммыДокумента.СУчетомВсехСкидок) Или (СпособРасчета = Перечисления.СпособРасчетаСуммыДокумента.БезУчетаРучнойСкидки) Тогда Если ОбщегоНазначения.ЕстьРеквизитТабЧастиДокумента("ПроцентАвтоматическихСкидок", МетаданныеДокумента, ИмяТабличнойЧасти) Тогда СуммаСкидки = Сумма * СтрокаТабличнойЧасти.ПроцентАвтоматическихСкидок / 100; КонецЕсли; Если (СпособРасчета <> Перечисления.СпособРасчетаСуммыДокумента.БезУчетаРучнойСкидки)Тогда Если ОбщегоНазначения.ЕстьРеквизитТабЧастиДокумента("ПроцентСкидкиНаценки", МетаданныеДокумента, ИмяТабличнойЧасти) Тогда СуммаСкидки = СуммаСкидки + (Сумма * СтрокаТабличнойЧасти.ПроцентСкидкиНаценки / 100); КонецЕсли; КонецЕсли; КонецЕсли; СтрокаТабличнойЧасти.Сумма = Сумма - СуммаСкидки; Если МетаданныеДокумента = Метаданные.Документы.СчетНаОплатуПокупателю И ЗначениеЗаполнено(СтрокаТабличнойЧасти.Доработка_Наценка) Тогда СтрокаТабличнойЧасти.Цена = СтараяЦена; КонецЕсли; |
|||
25
ilyavorobyev
04.09.14
✎
15:10
|
(22) все равно не меняется
|
|||
26
FIXXXL
04.09.14
✎
15:40
|
(24) нахрена ты с ценой играешься? сумму меняй, как в типовом
проверку делай как в типовом короче - больше типового, жить будет легше :) |
|||
27
FIXXXL
04.09.14
✎
15:43
|
(26) тебе тупо надо проверить есть ли в ТЧ полученного дока твой реквизит и если есть рассчитать СуммаСкидки до строки
СтрокаТабличнойЧасти.Сумма = Сумма - СуммаСкидки; |
|||
28
ilyavorobyev
04.09.14
✎
17:22
|
(27) ИмяТабличнойЧасти = ОбщегоНазначения.ПолучитьИмяТабличнойЧастиПоСсылкеНаСтроку(СтрокаТабличнойЧасти);
МетаданныеДокумента = ДокументОбъект.Метаданные(); Сумма = СтрокаТабличнойЧасти.Цена * СтрокаТабличнойЧасти.Количество; СуммаСкидки = 0; Если (СпособРасчета = Неопределено) Или (СпособРасчета = Перечисления.СпособРасчетаСуммыДокумента.СУчетомВсехСкидок) Или (СпособРасчета = Перечисления.СпособРасчетаСуммыДокумента.БезУчетаРучнойСкидки) Тогда Если ОбщегоНазначения.ЕстьРеквизитТабЧастиДокумента("ПроцентАвтоматическихСкидок", МетаданныеДокумента, ИмяТабличнойЧасти) Тогда СуммаСкидки = Сумма * СтрокаТабличнойЧасти.ПроцентАвтоматическихСкидок / 100; КонецЕсли; Если (СпособРасчета <> Перечисления.СпособРасчетаСуммыДокумента.БезУчетаРучнойСкидки)Тогда Если ОбщегоНазначения.ЕстьРеквизитТабЧастиДокумента("ПроцентСкидкиНаценки", МетаданныеДокумента, ИмяТабличнойЧасти) Тогда СуммаСкидки = СуммаСкидки + (Сумма * СтрокаТабличнойЧасти.ПроцентСкидкиНаценки / 100); КонецЕсли; КонецЕсли; КонецЕсли; Если МетаданныеДокумента = Метаданные.Документы.СчетНаОплатуПокупателю И ЗначениеЗаполнено(СтрокаТабличнойЧасти.Доработка_Наценка) Тогда СтрокаТабличнойЧасти.Сумма = Сумма; Сообщить(Сумма); Иначе СтрокаТабличнойЧасти.Сумма = Сумма - СуммаСкидки; КонецЕсли; |
|||
29
ilyavorobyev
04.09.14
✎
17:22
|
(27) СтараяЦена = СтрокаТабличнойЧасти.Цена;
СтрокаТабличнойЧасти.Цена = СтрокаТабличнойЧасти.Цена + СтрокаТабличнойЧасти.Цена / 100 * СтрокаТабличнойЧасти.Доработка_Наценка; ОбработкаТабличныхЧастей.РассчитатьСуммуТабЧасти(СтрокаТабличнойЧасти, ЭтотОбъект); ОбработкаТабличныхЧастей.РассчитатьСуммуНДСТабЧасти(СтрокаТабличнойЧасти, ЭтотОбъект); СтрокаТабличнойЧасти.Цена = СтараяЦена; Сообщить("Изменение " + СтрокаТабличнойЧасти.Сумма); |
|||
30
ilyavorobyev
04.09.14
✎
17:23
|
(27) и в общем модуле и в форме сообщает в конце сумму нормальную но на форму она не попадает все равно
|
|||
31
palpetrovich
04.09.14
✎
17:31
|
(30) вангую, что код в (0) отрабатывает, но увидеть ты это не успеваешь, ибо, как было отмечено выше, процедура "ОбработкаТабличныхЧастей.РассчитатьСуммуТабЧасти" вызывается еще из кучи мест и все возвращается на "круги своя" :)
|
|||
32
ilyavorobyev
04.09.14
✎
17:53
|
(31) да он отрабатывает, но я же щас изменил расчет в процедуре ОбработкаТабличныхЧастей.РассчитатьСуммуТабЧасти, почему все так же осталось?
|
|||
33
palpetrovich
04.09.14
✎
17:59
|
(32) могу посоветовать только (5) ...гадания на кофейной гуще гораздо менее точны, чем показания отладчика :)
|
|||
34
FIXXXL
04.09.14
✎
18:05
|
(30) на типовой форме две суммы обычно "Сумма" и "Сумма без скидки"
менятся должна "Сумма" |
|||
35
FIXXXL
04.09.14
✎
18:06
|
в (28) ты ничего не поменял
|
|||
36
ilyavorobyev
04.09.14
✎
18:40
|
(35) СтрокаТабличнойЧасти.Цена = СтрокаТабличнойЧасти.Цена + СтрокаТабличнойЧасти.Цена / 100 * СтрокаТабличнойЧасти.Доработка_Наценка;
СтрокаТабличнойЧасти.Сумма = СтрокаТабличнойЧасти.Цена * СтрокаТабличнойЧасти.Количество; |
|||
37
ilyavorobyev
04.09.14
✎
18:40
|
(35) вот ведь, не?
|
|||
38
FIXXXL
04.09.14
✎
20:05
|
(35) ещё раз: отвяжись от цены, считай СуммаСкидки по своему алгоритму
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |