Имя: Пароль:
1C
1С v8
Вызов функции элемента формы
,
0 jenny_tea
 
15.05.12
15:47
У меня есть на форме несколько элементов флажков. В некоторый момент времени мне необходимо:
1. сохранить значения этих флажков
2. очистить все значения
3. установить обратно эти значения, выполнив при этом процедуру каждого при изменении.

Вот вопрос как вызвать эту процедуру каждого при изменении??

1. СписокБО = новый СписокЗначений;
   Для Каждого Элемент из ЭлементыФормы Цикл
       Если ТипЗнч(Элемент) = Тип("Флажок") Тогда
           Если Элемент.Значение Тогда
               СписокБО.Добавить(Элемент);
           КонецЕсли;
       КонецЕсли;
   КонецЦикла;
   
...
2. очистка
3.Для Каждого ТекЭлементСписка из СписокБО Цикл
       ТекЭлемент = ТекЭлементСписка.Значение;
       ТекИмя = ТекЭлемент.Имя;
       ТекЭлемент.Значение = Истина;
       ТекДействие = ТекЭлемент.ПолучитьДействие("ПриИзменении");
       ///Вот здесь хочу выполнить это действие
   КонецЦикла;
1 Азат
 
15.05.12
15:47
(0) выпрыгивай уже из торта :D
2 jenny_tea
 
15.05.12
15:57
ну или мне надо просто че-то написать в коде, что я как будто на форме изменяю реквизит.

Приложение -обычное если че
3 palpetrovich
 
15.05.12
15:59
(0) а в чем сложность?
4 Жан Пердежон
 
15.05.12
15:59
процедура вызывается следующим образом
<имя процедуры>(<параметры>);
5 jenny_tea
 
15.05.12
16:01
у меня есть 4 процедуры, а может 10 а может 1. у каждой свое имя
6 Reset
 
15.05.12
16:04
Ну грубо так можно Выполнить(Строка(ТекДействие)+"(ТекЭлементСписка)")
7 jenny_tea
 
15.05.12
16:04
все зависит от того у скольки флажков стоит галочка, у каждого из них свое событие
8 jenny_tea
 
15.05.12
16:05
я попробовала через Выполнить, но если этих элементов более одного то он отлично выполняет действие первого, но по остальным не выполняет
9 Жан Пердежон
 
15.05.12
16:11
сделай в одну
10 experimentator76
 
15.05.12
16:21
(0) вызывай прямо обработчики-процедуры - разрешаю
по крайней мере в УФ я параметр процедуры дополняю " = Неопределено" и вызываю программно обработчик

а вообще по идеологии 1С из обработчика надо бы другую процедуру вызывать и ее же когда нужно программно
11 Mort
 
15.05.12
16:22
А вот я сижу (жру попкорн) и тащусь от постановки задачи.
12 experimentator76
 
15.05.12
16:23
Например одна общая процедура ОбработатьФлажки(Режим)
где Режим = допустим имя флажка или несколько имен через запятую
или структура с именами флажков
13 experimentator76
 
15.05.12
16:24
(11) у вас полоски с ТС одинаковой длины
тут плакать надо и "маму звать" ))
14 Mort
 
15.05.12
16:29
(8) Покажи как сделала.
15 Mort
 
15.05.12
16:30
А вообще в (6) всё написано, только не  ТекЭлементСписка в параметр совать, а ТекЭлемент.
16 jenny_tea
 
15.05.12
16:34
ТекДействиеСтрока = "";
   Для Каждого ТекЭлементСписка из СписокБО Цикл
       ТекЭлемент = ТекЭлементСписка.Значение;
       ТекИмя = ТекЭлемент.Имя;
       ТекЭлемент.Значение = Истина;
       ТекДействие = ТекЭлемент.ПолучитьДействие("ПриИзменении");
       Если СтрДлина(СокрЛП(ТекДействие))=0 Тогда
           Продолжить;
       КонецЕсли;
           ТекДействиеСтрока = ТекДействиеСтрока+Строка(ТекДействие)+"(ЭлементыФормы."+ТекИмя+")"+";";
       
   КонецЦикла;;
   Если СтрДлина(ТекДействиеСтрока)>0 Тогда
       Выполнить(ТекДействиеСтрока)
   КонецЕсли;
17 experimentator76
 
15.05.12
16:36
изврат
18 Hawk_1c
 
15.05.12
16:36
Одно не могу понять, зачем их очищать и затем снова проставлять. Просто пробежаться и там, где стоит выполнить обработчик... (0)Или я чего недопонимаю?
19 jenny_tea
 
15.05.12
16:47
Согласна про изврат с выполнить если есть какой то другой вариант с удовольствием сделаю по-другому,

А теперь зачем очищать. У меня есть ряд отборов одни глобальные ну как режим просмотра - Все, Мои, Срочные и др.
и ряд локальных отборов типа Дата,Номер, Контрагент и др

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

Но ряд отборов устанавливает пользователь по своему усмотрению. Соответственно мне либо на каждый элемент проверять и выполнять его функцию либо такой гемор с Выполнить, либо какой-то третий вариант
20 Mort
 
15.05.12
16:52
(19) Вы бы лучше в отборах разобрались чем городить это (0). Какие и как работать будут.