Имя: Пароль:
1C
1С v8
УФ: программное изменение реквизита
0 mvlad
 
29.05.14
18:37
Есть реквизит формы ФИО строкового типа.
На форме имеется поле ввода ФИО, которое связано с этим реквизитом.
У этого поля ввода описан обработчик события ПриИзменении()

Когда вручную я меняю на форме текст в этом поле, то обработчик ПриИзменении() отрабатывает нормально.
А вот когда я программно меняю сам реквизит и хочу, чтобы отработал обработчик ПриИзменении(), то он при обработке не видит моего нового текста.

Код такой:

&НаКлиенте
Процедура ФИОПриИзменении(Элемент)
НекийОбщийМодуль.ОбработатьФИО(Элемент);
КонецПроцедуры

&НаКлиенте
Процедура МеняемФИО()
ФИО = "новое значение"; // меняю реквизит формы
ФИОПриИзменении(Элементы.ФИО); // вызываю обработчик
КонецПроцедуры

Суть проблемы в том, что у элемента формы ФИО есть поле ТекстРедактирования, в котором хранится значение самого текста реквизита и которое НЕ меняется, когда я программно меняю реквизит формы, связанный с этим элементом. А при вызове:
НекийОбщийМодуль.ОбработатьФИО(Элемент);
передается именно элемент, а не реквизит и там внутри этой процедуры берется значение Элемент.ТекстРедактирования.

Как же всё-таки программно изменить это злополучное поле ТекстРедактирования?
1 SUA
 
29.05.14
18:49
проще тогда уж НекийОбщийМодуль подправить - на возможность получения строки
2 mvlad
 
29.05.14
18:58
Как раз не проще, т.к. это типовая конфа и во многих местах используется эта процедура общего модуля.
Компьютеры — прекрасное средство для решения проблем, которых до их появления не было.