Имя: Пароль:
1C
1С v8
Как в УФ обновить форму?
,
0 megabax
 
12.09.16
12:47
Добрый день.
Выполняю вот такой код:
&НаКлиенте
Процедура ПозицииПослеУдаления(Элемент)
    РассчитатьСкидку();
    ЭтаФорма.ОбновитьОтображениеДанных();    
КонецПроцедуры

Данные, отображаемые на форме меняются, но сама форма почему то не обновляется, оно обновляется только по кнопочке"Записать". Подскажите пожалуйста, как правильно принудительно обновить форму программно?
1 Nuobu
 
12.09.16
12:50
Прочитать()
ЭтаФорма.Обновить()
2 megabax
 
12.09.16
12:58
(1) Попробовал сделать так:
&НаКлиенте
Процедура ПозицииПослеУдаления(Элемент)
    РассчитатьСкидку();
    ЭтаФорма.Прочитать();    
КонецПроцедуры

И форма просто восстанавливает первоначальное состояние. То есть, при удалении строки у меня пересчитываться данные, а потом хлобысь, и удаленная строка восстанавливается.

А вот такой функции как Обновить() у ЭтаФорма почему то нету....
3 Fragster
 
гуру
12.09.16
13:01
а какие поля меняются в РассчитатьСкидку()?
4 ИС-2
 
naïve
12.09.16
13:06
расчет выполняется в модуле объекта?

Может надо ЗначениеВДанныеФормы сделать?
5 megabax
 
12.09.16
13:07
(3) Сначала запускается вот это:
&НаСервере
Процедура РассчитатьСкидку()
    ВнешнийОбъект = ЭтаФорма.РеквизитФормыВЗначение("Объект");  
    ВнешнийОбъект.РассчитатьСкидку();
КонецПроцедуры

где ВнешнийОбъект.РассчитатьСкидку()
реализовано так:

Процедура РассчитатьСкидку() экспорт
    СуммаСкидки=Позиции.Итог("Всего")*ПроцентСкидки/100;
    СуммаСкидкиЗамена=Позиции.Итог("ВсегоЗамена")*ПроцентСкидки/100;
    СуммаПослеСкидки=Позиции.Итог("Всего")-СуммаСкидки;
    СуммаПослеСкидкиЗамена=Позиции.Итог("ВсегоЗамена")-СуммаСкидкиЗамена;
КонецПроцедуры

где все эти поля реквизиты объекта
6 Cyberhawk
 
12.09.16
13:07
@Данные, отображаемые на форме меняются, но сама форма почему то не обновляется@ // А по-русски?
7 megabax
 
12.09.16
13:07
(4) Спасибо, попробую
8 Cyberhawk
 
12.09.16
13:07
Что для тебя есть обновление формы, если не обновление данных?
9 Cyberhawk
 
12.09.16
13:07
*отображаемых данных
10 megabax
 
12.09.16
13:08
(6) Реквизиты объекта выведены на форму в виде полей. Значение реквизитов меняется, а форма отображает старые данные
11 megabax
 
12.09.16
13:15
Спасибо всем, помогло вот это:
&НаСервере
Процедура РассчитатьСкидку()
    ВнешнийОбъект = ЭтаФорма.РеквизитФормыВЗначение("Объект");  
    ВнешнийОбъект.РассчитатьСкидку();
    ЭтаФорма.ЗначениеВРеквизитФормы(ВнешнийОбъект,"Объект");
КонецПроцедуры
12 Cyberhawk
 
12.09.16
13:17
(10) Ты наркоман?
13 megabax
 
12.09.16
13:19
(12) А что тут такого наркоманского?
14 DrZombi
 
гуру
12.09.16
13:20
(11) Пожалуйста...
(13) Лучше расчет скидки вынести в модуль. Или в общий модуль.
15 megabax
 
12.09.16
13:22
(14) Да, вот я сейчас об этом же подумал. Вынести в общий модуль, вместо того, чтобы любиться вызовом процедуры модуля документа из формы документа. Не подозревал, что в УФ для этого придется так извратиться...
16 ildary
 
12.09.16
13:25
(14) простите, что вмешиваюсь, а если УФ вынуждают выносить доп функции в отдельный общий модуль - зачем тогда модуль объекта?
17 DrZombi
 
гуру
12.09.16
13:34
(16) Что бы можно было рассчитать скидку и без обращения к объекту :)
18 Cyberhawk
 
12.09.16
14:00
(13) Ну Я реально не пойму, как это "Данные, отображаемые на форме меняются, но сама форма почему то не обновляется". Что еще можно подразумевать под обновлением формы, как не обновление отображаемых на ней данных?
19 megabax
 
12.09.16
14:05
(18) "Данные, отображаемые на форме" - возможно, не так выразился. Правильнее было сказать: "Данные, предназначенные для отображения на форме"
20 Cyberhawk
 
12.09.16
15:10
(19) Вот теперь Я спокоен, спс