|
2 УФ Запретить ПриАктивизацииСтроки при обращении к элементу формы | ☑ | ||
---|---|---|---|---|
0
TOlikRx
07.07.12
✎
22:02
|
Для динамического списка создан обработчик ПриАктивизацииСтроки. В обработчике вызываю процедуру "СоздатьДанныеПараметров":
&НаСервере Процедура СоздатьДанныеПараметров() ДанныеИмя = "Поле_1"; ДанныеТип = Новый ОписаниеТипов("Строка"); ДанныеПуть = ""; ДанныеЗаголовок = "Тип"; ПолеДанных = Новый РеквизитФормы(ДанныеИмя, ДанныеТип, ДанныеПуть, ДанныеЗаголовок); ДанныеМассив = Новый Массив; ДанныеМассив.Добавить(ПолеДанных); ИзменитьРеквизиты(ДанныеМассив); КонецПроцедуры После выполнения данной процедуры, почему то обработчик возвращается к ПриАктивизацииСтроки и все зацикливается и соответственно вылетает. Почему так происходит и как решить проблему правильно ? |
|||
1
IamAlexy
07.07.12
✎
22:02
|
(0) известная проблема.
на партнерке подробно разбиралась так и должно быть твоя задача решается несколько подругому - через обработчик ожидания |
|||
2
TOlikRx
07.07.12
✎
22:06
|
а это как ? можно ссылку для почитать ?
|
|||
3
IamAlexy
07.07.12
✎
22:08
|
да куча обсуждений с 2009 г.
http://partners.v8.1c.ru/forum/thread.jsp?id=835667#835667 http://partners.v8.1c.ru/forum/thread.jsp?id=824968#824968 |
|||
4
IamAlexy
07.07.12
✎
22:09
|
||||
5
TOlikRx
07.07.12
✎
22:09
|
спасибо, кшол в чтение. как найду отпишу ))
|
|||
6
TOlikRx
07.07.12
✎
22:10
|
так там пароль ))
|
|||
7
TOlikRx
07.07.12
✎
22:10
|
я к сож не партнер
|
|||
8
IamAlexy
07.07.12
✎
22:12
|
Это не событие, это обработка ожидания.
Давно известный приём -- все свои действия, выполняющиеся при активизации строки, вынесите в отдельную процедуру и подключите её непосредственно в событии ПриАктивизации, используя обработчик ожидания с маленьким интервалом (0.1 сек). Особенность обработчика ожидания в том, что он активизируется только когда платформа не занята выполнением друого кода. То есть в период наполнения исходного списка ничего не будет происходить, а как только код заполнения завершится, тут же через 0.1 сек будет однократно вызвана процедура ожидания, и выполнит все необходимые Вам действия. Данный приём также позволит осуществлять быстрый скроллинг по такому списку, так как не потребует выполнения действий на _каждую_ активизацию строки, а будет однократно срабатывать только при завершении скроллинга. |
|||
9
TOlikRx
07.07.12
✎
22:14
|
круто. пошел пробовать.
|
|||
10
TOlikRx
07.07.12
✎
23:19
|
Сделал так:
&НаКлиенте Процедура СписокПриАктивизацииСтроки(Элемент) ПодключитьОбработчикОжидания("ВывестиДанныеТекущегоЭлемента", 0.1, Истина); КонецПроцедуры &НаКлиенте Процедура ВывестиДанныеТекущегоЭлемента() <Вызов_Процедуры_Создания_Элементов> ОтключитьОбработчикОжидания("ВывестиДанныеТекущегоЭлемента") КонецПроцедуры Все работает, но только в ПодключитьОбработчикОжидания указал в 3м параметре Истина, а она повторяется. Хотя в минуале написано, что 3й параметр если истина, то повторяется однократно. Пришлось по окончании действий прописать ОтключитьОбработчикОжидания("ВывестиДанныеТекущегоЭлемента") |
|||
11
TOlikRx
09.07.12
✎
23:17
|
Открываю тему :( Целый день уже мучаюсь. В общем проблема возобновилась, т.к. до этого я создавал и изменял значения реквизитов формы. Теперь я попытался скрыть ненужный и показать нужный элемент в зависимости от входного параметра, который получаю из текущего в списке элемента.
Так вот при смене видимости даже этот прием у меня не работает. |
|||
12
IamAlexy
09.07.12
✎
23:20
|
(11) изменение видимости элементов управляемых форм - дурной тон
|
|||
13
TOlikRx
09.07.12
✎
23:35
|
Ок, но альтернатива решения есть ?
|
|||
14
TOlikRx
09.07.12
✎
23:54
|
Очень нужен вариант решения.
|
|||
15
Ksandr
09.07.12
✎
23:54
|
(13) Книжки намекают на изменение доступности
|
|||
16
TOlikRx
09.07.12
✎
23:56
|
Если убрать только доступность элементы продолжают же быть видимыми. А надо чтобы скрылись. Как быть ?
|
|||
17
Ksandr
09.07.12
✎
23:59
|
(16) Без серверного вызова необойтись.
Честно говоря, сильно сомневаюсь, что Вам надо "аааааа, у меня ничего не работает, все пропало" причем в прямом смысле пропало. Для изменения видимости требуется серверный вызов, для доступности нет. |
|||
18
TOlikRx
10.07.12
✎
00:05
|
Это я понимаю, но не подходит Доступность.
|
|||
19
ChAlex
10.07.12
✎
00:06
|
(16) - да можно все нормально реализовать - лично сам совсем недавно аналогичную форму делал - все нормально работает и ничего не циклится. Могу дать только рекомендации: - видимость изменять на сервере и желательно всех элементов в одной процедуре. Вызов функции опять же вызывать через обработчик ожидания. Ну и опять же смотреть обработчик объекта из которого вызывать. Суть в том, что после возврата из серверной процедуры на форме возникнут некоторые события (в частности активация объект, и соответсвенно могут возникнуть обработчики событий, которые вроде пользователь не вызывает, но они будут - в частности ПриАктивацииСтроки - если табличный объекь активен). Лучше не делать изменения видимости из этого обработчика. Можно например делать активным некий иной объект формы и после этого вызывать уже процедуру изменения видимости. Если же все-таки из табличного объекта, то придется некие флаги организовывать
|
|||
20
TOlikRx
10.07.12
✎
00:11
|
Печалька С-ка ...
|
|||
21
TOlikRx
10.07.12
✎
00:12
|
Я с параметром изначально делал, но подумал, что есть адыкватное решение ... як нет :(
|
|||
22
ChAlex
10.07.12
✎
00:24
|
(21) - вообще-то действительно делать видимость объектов из при активации строки - дурной тон. Ибо если это будет происходить часто, соответсвенно будет постоянно тормознуто. Тут наверное должен выполняться принцип: хоть и безобразно - но однообразно. Настраивать видимость имеет смысл по кнопке например (то бишбь определи некий набор реквизитов и кнопочкой зафиксировали свой выбор и перешли непосредственно к рабочим объектам формы
|
|||
23
TOlikRx
10.07.12
✎
00:31
|
дурной тон - что значит дурной тон, если требуется и надо скрыть ? если бы мы обсуждали вопрос тона, то я бы создал другую ветка, а так сорьте.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |