Имя: Пароль:
1C
1С v8
Форма объекта БД. ПриЧтенииНаСервере+ПриСозданииНаСервере VS ПриИзмененииДанных
0 TormozIT
 
гуру
21.08.12
17:18
Никак не могу разобраться как предполагалось настраивать элементы формы в зависимости от данных объекта в управляемой форме.

В обычных формах для этого есть событие ПриИзмененииДанных. Оно вызывается при создании формы для любого объекта (нового или существующего) и при чтении данных объекта в существующей форме (правда только для модифицированного).

В управляемых же формах такого события нет. Самым близким является ПриЧтенииНаСервере, но оно не вызывается для нового объекта, что соотвествует названию. Событие же ПриСозданииНаСервере не вызывается при чтении объекта в уже созданной форме, что также соответствует названию. Если процедуру настройки элементов формы вызывать в обоих, то при открытии формы существующего объекта она будет вызвана 2 раза, чего хотелось бы избежать.

В случае форм ссылочных объектов можно проверять Объект.Ссылка.Пустая() в обработчике ПриСозданииНаСервере, чтобы не вызывать уже вызванную из ПриЧтенииНаСервере процедуру настройки элементов формы. Но для не ссылочных объектов получается придется в каждой форме добавлять флаг ОбъектСчитан, который нужно установить в ПриЧтенииНаСервере и проверять в ПриСозданииНаСервере. Или же есть какой то более красивый способ?
1 Mort
 
21.08.12
17:32
Настраивать элементы формы в зависимости от данных стоит в условном оформлении. Другое дело расчет косвенных данных (например, вычисляемая колонка в ТЧ), и тут уже одного "ПриЧтении" достаточно.
2 Mort
 
21.08.12
17:33
Впрочем иногда условного оформления недостаточно и тогда начинаются танцы с бубном как в (0).
3 TormozIT
 
гуру
21.08.12
17:36
Условное оформление формы ориентировано на колонки таблиц форм и обладает довольно скудными возможностями. Так что это очень слабый костыль.
4 TormozIT
 
гуру
21.08.12
17:39
Но выигрыш по удобству настройки условного оформления бесспорен. Однако "шаг вправо или влево" и уже надо переносить все условия из условного оформления в обработчик из (0).
5 Новенький_2009
 
21.08.12
17:44
Мне кажется проще надо быть :)
6 TormozIT
 
гуру
21.08.12
17:53
(5) Т.е. менее четко формулировать высказывания? Как бы ты сформулировал?
7 TormozIT
 
гуру
22.08.12
11:59
Удалось найти приемлемо простой способ.
В обработчике ПриСозданииНаСервере вызываем процедуру всегда, а в обработчике ПриЧтенииНаСервере вызываем ее только если Не Параметры.Свойство("ТолькоПросмотр").
Ошибка? Это не ошибка, это системная функция.