Имя: Пароль:
1C
1С v8
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
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
дурной тон - что значит дурной тон, если требуется и надо скрыть ? если бы мы обсуждали вопрос тона, то я бы создал другую ветка, а так сорьте.
Ошибка? Это не ошибка, это системная функция.