|
как УТ 10.3 Программно обновить табличное поле | ☑ | ||
---|---|---|---|---|
0
Eeelena
30.12.14
✎
09:38
|
мне необходимо в документе ЧекККМ при установке скидки округлять сумму, само значение изменяется, но в табличном поле значение не обновляется. В чем может быть причина? Пробовала писать
ЭтаФорма.ЭлементыФормы.Товары.ОбновитьСтроки(); ЭтаФорма.Обновить(); |
|||
1
Dmitriy_76
30.12.14
✎
09:39
|
может вызвать метод привыводестроки
|
|||
2
Eeelena
30.12.14
✎
09:40
|
(1) это как?
|
|||
3
vicof
30.12.14
✎
09:41
|
"само значение изменяется, но в табличном поле значение не обновляется"
что бы это значило? |
|||
4
Dmitriy_76
30.12.14
✎
09:41
|
ну.. твоя колонка вычисляемая не ?
|
|||
5
Eeelena
30.12.14
✎
09:43
|
(3) когда откладчиком по коду смотришь значение присваевается строке этой табличной части, но на самой форме не меняется
|
|||
6
vicof
30.12.14
✎
09:44
|
(5) А дальше оно обратно не меняется?
|
|||
7
Eeelena
30.12.14
✎
09:47
|
(6) возможно меняется, но я не знаю где
|
|||
8
vicof
30.12.14
✎
09:49
|
F11 спасет мать русской демократии
|
|||
9
Eeelena
30.12.14
✎
09:50
|
(8) я смотрела, но не нашла
|
|||
10
vicof
30.12.14
✎
10:09
|
(9) Копай, и когда-нибудь ты станешь настоящей одинэсницей
|
|||
11
palladyi
30.12.14
✎
10:22
|
(9) Посмотри, может у тебя есть еще один обработчик событий, срабатывающий в этот момент. А вообще, ставь точку останова в момент округления, выводи значение суммы в табло и жми F11 до тех пор, пока сумма не изменится.
|
|||
12
Eeelena
30.12.14
✎
11:09
|
(11) спасибо, попробую
|
|||
13
Eeelena
30.12.14
✎
11:22
|
(11) все время значение суммы равно округленному значению при отладке, но при открытии формы все равно не округленное значение выходит(
|
|||
14
Eeelena
30.12.14
✎
11:23
|
то есть не при открытии, а после установки скидки
|
|||
15
palladyi
30.12.14
✎
11:25
|
(13) не округленное, но с учетом скидки?
|
|||
16
Eeelena
30.12.14
✎
11:27
|
(15) да
|
|||
17
palladyi
30.12.14
✎
11:28
|
(16) выложи код установки скидки и округления, плиз
|
|||
18
Eeelena
30.12.14
✎
11:31
|
(17)
// Процедура - обработчик события "ПриИзменении" поля процента скидки-наценки // в строке табличной части "Товары". // Процедура ТоварыПроцентСкидкиНаценкиПриИзменении(Элемент) СтрокаТабличнойЧасти = ЭлементыФормы.Товары.ТекущиеДанные; ОбработкаТабличныхЧастей.РассчитатьСуммуТабЧасти(СтрокаТабличнойЧасти, ЭтотОбъект); СтрокаТабличнойЧасти.Сумма=Окр(СтрокаТабличнойЧасти.Сумма,0); ЭтаФорма.ЭлементыФормы.Товары.ОбновитьСтроки(); ЭтаФорма.Обновить(); КонецПроцедуры |
|||
19
Eeelena
30.12.14
✎
11:31
|
(17)
ИмяТабличнойЧасти = ОбщегоНазначения.ПолучитьИмяТабличнойЧастиПоСсылкеНаСтроку(СтрокаТабличнойЧасти); МетаданныеДокумента = ДокументОбъект.Метаданные(); Сумма = СтрокаТабличнойЧасти.Цена * СтрокаТабличнойЧасти.Количество; СуммаСкидки = 0; Если (СпособРасчета = Неопределено) Или (СпособРасчета = Перечисления.СпособРасчетаСуммыДокумента.СУчетомВсехСкидок) Или (СпособРасчета = Перечисления.СпособРасчетаСуммыДокумента.БезУчетаРучнойСкидки) Тогда Если ОбщегоНазначения.ЕстьРеквизитТабЧастиДокумента("ПроцентАвтоматическихСкидок", МетаданныеДокумента, ИмяТабличнойЧасти) Тогда СуммаСкидки = Сумма * СтрокаТабличнойЧасти.ПроцентАвтоматическихСкидок / 100; КонецЕсли; Если (СпособРасчета <> Перечисления.СпособРасчетаСуммыДокумента.БезУчетаРучнойСкидки)Тогда Если ОбщегоНазначения.ЕстьРеквизитТабЧастиДокумента("ПроцентСкидкиНаценки", МетаданныеДокумента, ИмяТабличнойЧасти) Тогда СуммаСкидки = СуммаСкидки + (Сумма * СтрокаТабличнойЧасти.ПроцентСкидкиНаценки / 100); КонецЕсли; КонецЕсли; КонецЕсли; СтрокаТабличнойЧасти.Сумма = Сумма - СуммаСкидки; |
|||
20
Eeelena
30.12.14
✎
11:32
|
(17) второй кусок кода это процедура РассчитатьСуммуТабЧасти, я и в ней делала округление, но тоже не сработало
|
|||
21
palladyi
30.12.14
✎
11:35
|
(18) УФ или обычные формы?
|
|||
22
Eeelena
30.12.14
✎
11:37
|
(21) обычные УТ 10.3
|
|||
23
palladyi
30.12.14
✎
11:45
|
хм... обновлять там ничего не надо, само должно встать...
|
|||
24
palladyi
30.12.14
✎
11:45
|
попробуй убрать обновление строк и формы, может у тебя при выводе строки пересчитывается
|
|||
25
Eeelena
30.12.14
✎
11:46
|
(23) (24) убрала, ни чего не изменилось
|
|||
26
Eeelena
30.12.14
✎
11:47
|
(23) не устанавливается, я уже всю голову сломала от чего так(
|
|||
27
Рэйв
30.12.14
✎
11:47
|
.СоздатьКолонки()?
Не? |
|||
28
Eeelena
30.12.14
✎
11:48
|
(24) при выводе строки смотрела ничего такого
// Процедура - обработчик события "ПриВыводеСтроки" табличной части "Товары". // Процедура ТоварыПриВыводеСтроки(Элемент, ОформлениеСтроки, ДанныеСтроки) РаботаСДиалогами.ПоказатьКодАртикул(мКолонкиТовары, ОформлениеСтроки.Ячейки, ДанныеСтроки.Номенклатура); РаботаСДиалогами.ПоказатьСуммуБезСкидок(мКолонкиТовары, ОформлениеСтроки.Ячейки, ДанныеСтроки.Цена, ДанныеСтроки.Количество); Если ДанныеСтроки.Номенклатура.Услуга Тогда ОформлениеСтроки.Ячейки.ЕдиницаИзмерения.ОтметкаНезаполненного = Ложь; КонецЕсли; КонецПроцедуры |
|||
29
palladyi
30.12.14
✎
11:48
|
(26) причем не только себе)
|
|||
30
palladyi
30.12.14
✎
11:48
|
(27) зачем?
|
|||
31
Eeelena
30.12.14
✎
11:48
|
(27) это как?
|
|||
32
Рэйв
30.12.14
✎
11:50
|
(30)Ну вдруг!:-)
Вообщето при создании данные обновлятся должны по идее |
|||
33
palladyi
30.12.14
✎
11:51
|
(32) у меня СП такого метода не знает)
|
|||
34
Eeelena
30.12.14
✎
11:52
|
(32) вот и мне кажется, что должны, но не обновляются((((((
|
|||
35
palladyi
30.12.14
✎
11:53
|
(28) поставь тут точку останова на условии и после обновления смотри на суммы, если они округлены - магия и нужно чистить кеш, а если нет - значит что-то еще отрабатывает
|
|||
36
Рэйв
30.12.14
✎
11:53
|
(33)Какойто неполноценный у тебя СП:-))
https://yadi.sk/i/JWdPSbq0dhnx7 |
|||
37
palladyi
30.12.14
✎
11:55
|
(36) да, чет подозрительно)))
|
|||
38
yavasya
30.12.14
✎
11:58
|
сделай запрос к реквизитам ТЧ , думаю ты не присваиваешь им значение при назначение скидки
|
|||
39
Eeelena
30.12.14
✎
11:59
|
(35) чистка кеша не помогла
что ж еще там может быть( |
|||
40
Рэйв
30.12.14
✎
12:00
|
(39)Чудес не бывает.
Скорее всего ты и правда не записываешь ничего в таб часть. |
|||
41
Eeelena
30.12.14
✎
12:01
|
(40) СтрокаТабличнойЧасти.Сумма=Окр(СтрокаТабличнойЧасти.Сумма,0);
|
|||
42
yavasya
30.12.14
✎
12:01
|
а как он может назначать неокругленные значения, когда у тебя тип суммы число с точностью 2 ?
|
|||
43
Рэйв
30.12.14
✎
12:05
|
(41)А копейки точно есть?
|
|||
44
Eeelena
30.12.14
✎
12:06
|
(42) не поняла? он округленное должен назначить
|
|||
45
Eeelena
30.12.14
✎
12:06
|
(43) получается если было например 152,09 при округлении получается просто 159
|
|||
46
palladyi
30.12.14
✎
12:07
|
(42) она округляет до целых
|
|||
47
Eeelena
30.12.14
✎
12:07
|
(43) может я как то неправильно округляю?
|
|||
48
Eeelena
30.12.14
✎
12:08
|
(46) я прошлась отладчиком по процедуре привыводестроки, он обратно ставит сумму неокругленную, но в какой момент не понятно
|
|||
49
yavasya
30.12.14
✎
12:09
|
да ты после обработки своей сохрани, закрой и открой документ, у тебя реквизиты не записываются ТЧ после обработки
|
|||
50
Eeelena
30.12.14
✎
12:13
|
(49) так мне нужно чтоб сразу сохранялось
|
|||
51
yavasya
30.12.14
✎
12:15
|
а обычным циклом обойти нельзя
типа: для каждого строка из объект.товары цикл строка.сумма = конецЦикла; |
|||
52
Eeelena
30.12.14
✎
12:15
|
(46) сделала следующим образом, добавила в процедуру при выводе строки, процедуру ОбработкаТабличныхЧастей.РассчитатьСуммуТабЧасти(СтрокаТабличнойЧасти, ЭтотОбъект);
и все заработало |
|||
53
palladyi
30.12.14
✎
12:27
|
(52) поздравляю)
|
|||
54
mehfk
30.12.14
✎
12:45
|
(52) Садись, два.
Весь цимес здесь // Функция выполняет пересчет автоматических скидок в документе. // // Возвращаемое значение: // Булево - Истина, если автоматические скидки были рассчитаны. // Функция ПересчитатьАвтоматическиеСкидки() Экспорт Если РассчитыватьАвтоматическиеСкидки() Тогда Если Оплата.Количество() = 1 Тогда ВидОплатыДляСкидок = Оплата[0].ВидОплаты; Иначе ВидОплатыДляСкидок = Справочники.ВидыОплатЧекаККМ.ПустаяСсылка(); КонецЕсли; СтруктураПараметров = Новый Структура; СтруктураПараметров.Вставить("ВидРеализации" , Перечисления.ВидыСкидок.Розничная); СтруктураПараметров.Вставить("СуммаДокумента" , Ценообразование.ПолучитьСуммуДокументаБезСкидки(Товары)); СтруктураПараметров.Вставить("Карта" , ДисконтнаяКарта); СтруктураПараметров.Вставить("ВидОплаты" , ВидОплатыДляСкидок); СтруктураПараметров.Вставить("ВалютаРегламентированногоУчета", мВалютаРегламентированногоУчета); СтруктураПараметров.Вставить("УчетнаяПолитика" , ПолучитьЗначениеУчетнойПолитики()); ОбработкаТабличныхЧастей.РассчитатьСкидкиПриПродаже(ЭтотОбъект, Товары, СтруктураПараметров, мМинимальныеЦены, мСписокФильтров); Возврат Истина; Иначе Возврат Ложь; КонецЕсли; КонецФункции // ПересчитатьАвтоматическиеСкидки() |
|||
55
Eeelena
30.12.14
✎
13:12
|
(54) где это?
|
|||
56
mehfk
30.12.14
✎
13:21
|
Глобальный поиск по конфигурации рулит.
|
|||
57
Eeelena
31.12.14
✎
09:23
|
(56) Спасибо большое)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |