Имя: Пароль:
1C
1С v8
Обращение к реквизиту формы. В чем разница?
0 chumansky
 
07.02.12
06:25
В форме обработки есть реквизит "КакойТоРеквизит" - тип Строка
В модуле к его значению можно обратиться так

Сообщить(ЭлементыФормы.КакойТоРеквизит.Значение);

а можно и так

Сообщить(КакойТоРеквизит);

Существует ли разница между этими двумя подходами?
Всегда ли оба сообщения, следуй они друг за другом вернут одно и то же значение?
Спасибо.
1 Wobland
 
07.02.12
06:29
реквизит формы обычно привязан к данным какого-то элемента управления. поэтому срабатывает второй вариант. реквизита может и не быть, тогда данные живут только в элементе управления.
2 skunk
 
07.02.12
06:30
разница существует, но большинству одинэсников на эту разницу фиолетово ... значение всегда будет одно и тоже
3 Ненавижу 1С
 
гуру
07.02.12
06:31
В общем случае может различаться
4 chumansky
 
07.02.12
06:48
То есть например во время ввода текста в элемент управления связанному с реквизитом формы может оказаться что в элементе текст один, а в данных (реквизите формы) еще немножко другой, и требуется какое-то событие, чтобы они стали одинаковы?
5 Godofsin
 
07.02.12
06:54
(4) Ни хера непонятно.
6 Азат
 
07.02.12
06:56
Легко может оказаться, что реквизит называется "КакойТоРеквизит", а элемент формы "НифигаНеКакойТоРеквизит"... Что тогда, автор?
7 Mikhail Volkov
 
07.02.12
06:57
(4) Запись
8 Рэйв
 
07.02.12
06:58
(0)ЭлементыФормы.КакойТоРеквизит.Значение - это элемент управления формы,то, что лежит на форме и что ты видишь глазами.

КакойТоРеквизит - это реквизит формы, связанный с элементом значения. Его не видно глазами.
9 Wobland
 
07.02.12
06:58
(4) ложь
10 Рэйв
 
07.02.12
07:00
(4)Да.При интерактивном редактировании.Пока ты не вышел из режима редактирования - значения еще различаются(есл ты их меняешь конечно)
11 Рэйв
 
07.02.12
07:00
+(10)Как только ты завер
шил редактирование- значения становятся одинаковые.
12 Wobland
 
07.02.12
07:03
(10) ты не сможешь посмотреть на то, что ты недоввёл. как только начинаешь смотреть, значения внезапно становятся одинаковыми. этакое поле ввода шрёдингера ;) не?
13 Wobland
 
07.02.12
07:04
(12) "смотреть" следует читать как "получить значение"
14 Рэйв
 
07.02.12
07:08
(12)Можно наверное извернуться и положить рядом текст , тоже связанный с реквизитом:-)  Тогда пока ты что-то делаешь в редактировании тебе видно что ничего еще не поменялось
15 Рэйв
 
07.02.12
07:09
+(14а в ОкончаниеВводаТекста() насколько я помню, можно поймать разлдичия програмно
16 mkanaev
 
07.02.12
07:10
Второй метод срабатывает потому что существует элемент значения, который может являтся ливо реквизитов объекта либо реквизитом формы. Контекст модуля формы содержит данные реквизиты... Бывают такие моменты когда у элемента формы не нужен элемент значения, например когда элемент значения формируется динамически... 1С-ники не замечают разници(незамечали поку не вышла 1С 8.2 на УФ)
17 Wobland
 
07.02.12
07:12
(15) не вижу..
18 mkanaev
 
07.02.12
07:15
как вариант: при прощлом изменении или при открытии формы запомнить значение в переменную глабальную(в форме!) потом при окончании ввода текста мы можем узнать старое значение...
19 Рэйв
 
07.02.12
07:16
(17)В процедуре:

Сообщить("Новое:"+Текст);
Сообщить("Старое:"+ИмяРеквизитаФормыиИлиОбъекта);
20 Рэйв
 
07.02.12
07:17
(19)это для строки
21 mkanaev
 
07.02.12
07:19
(4) Впринцепи так работает платформа, но она сама далает обновление данных на форме... а вот например когда ты присваеваешь элементу формы значение там уже надо выполнить какой либо метод(зависит от типа элемента) для отображения на форме... например для отображения ТЗ нужно вызвать метод СоздатьСтроки()
22 mkanaev
 
07.02.12
07:20
ой, СоздатьКолонки()
23 Рэйв
 
07.02.12
07:22
(21)>>Впринцепи так работает платформа
Вообщето OnPaint - это "так работает виндовс". При луюбом интерактивном изменении данных формы. Платформа стандартно наследовала это поведение