Имя: Пароль:
1C
1С v8
Элемент управления textBox ActiveX
0 BrainDamage
 
28.03.16
11:08
Проблема следующая.
Добавил элемент ActiveX TextBox на форму документа, сам ЭУ привязал к  реквизиту комментарий.
При открытии документа в какой-то момент устанавливается свойство объекта модифицированность, хотя программного заполнения этого поля при открытии нет.
Если ЭУ убрать с формы, то все нормально. Пробовал убрать все обработчики формы, не помогает, в процедуре перед открытием формы документа, модифицированность объекта уже установлена.
УТ 10.3, платформа 8.2.19.130, в режиме совместимости.
Куда копать не пойму.
1 BrainDamage
 
28.03.16
11:46
Апну.
Еще заметил, что если комментарий заполнен, то тогда при открытии объект модифицируется, если комментарий пустой, то открытие проходит штатно.
Может быть есть какой-то свойство, которое можно включить/отключить?
2 mikecool
 
28.03.16
11:49
ИзменяетДанные?
3 BrainDamage
 
28.03.16
11:54
(1) Пробовал и с флажком и без, не влияет никак.
В теле модуля формы при открытии отладчик показывает ЭтотОбъект.Модифицированность() = Ложь;
Как только входит в процедуру при открытии уже Истина.
4 BrainDamage
 
28.03.16
11:55
Вернее даже в ПередОткрытием() уже истина!
5 BrainDamage
 
28.03.16
12:22
Еще кое-что выяснил:
В теле модуля формы
ЭлементыФормы.ЭлементУправленияКоментарий.text = ""
ЭлементыФормы.ЭлементУправленияКоментарий.Value = ""

Как только переходим в ПередОткрытием
ЭлементыФормы.ЭлементУправленияКоментарий.text = выаываыв
ЭлементыФормы.ЭлементУправленияКоментарий.Value = выаываыв

То есть элемент управления заполняется в какой-то не очевидный момент, и при этом модифицирует сам объект.

И главное, сбросить эту модифицированность никак не получится, не  записывать же документ при открытии..

Может есть какие мысли, как это обойти? Иначе придется убирать этот ЭУ.
6 Asmody
 
28.03.16
12:42
А какая цель использования TextBox?
7 BrainDamage
 
28.03.16
12:54
(6) Хочется динамически считать количество символов в водимое поле. Есть определенные ограничения на длину комментария, и пользователю необходимо показывать сколько ему осталось символов ввести, типа как при вводе СМС-сообщений на сайтах операторов.

У TextBox есть событие onChange, которое позволяет это делать. А штатными средствами 1С вроде бы, это реализовать нельзя.
Решили попробовать ActiveX, но вот натолкнулись на такие грабли.
Сам принцип не понятен, почему при заполнении ЭУ из реквизита, модифицируется объект?!
8 BrainDamage
 
28.03.16
13:35
Апну
9 zdas
 
28.03.16
13:37
ПодключитьОбработчикОжидания - раз в секунду к примеру не катит?
10 BrainDamage
 
28.03.16
14:08
(9)ОбработчикОжидания рассматривлся как один из вариантов.
Придумали следующее, отвязали ЭУ TextBox от реквизита объекта.
В форму добавили реквизит КомментарийФормы, его привязали к
TextBox-у, ПередОткрытием заполняем КомментарийФормы из Комментария, а перед записью соответственно пишем в Комментарий из КомментарийФормы. Ну а визуально отображение при редактировании остается в том же TextBox-е.