Имя: Пароль:
1C
1C 7.7
v7: На форме элементы с именами Флаг1, Флаг2, Флаг3 как в цикле с ними работать
,
0 valdi77
 
26.07.12
12:05
Добрый день.
Подскажите пожалуйста, видел пример кода а сейчас не могу найти и сообразить.

Делаю отчет, на форме размещено много флажков, для выбора доп полей.
Хочу обрабатывать эти значения в цикле, Для чего все флажки назвал флаг1, флаг2, итд

Написал код

Для Шаг=1 По 9 Цикл
 Если Форма.["Флаг"+Шаг] = 1 Тогда
      Таб.ВывестиСекцию("ТекущийДокумент|Флаг"+Шаг);      
 КонецЕсли;
КонецЦикла;

Программа выдает ошибку
Ожидался идентификатор Форма.  ошибка  ["Флаг"+Шаг]

Пробовал и Метаданные.["Флаг"+Шаг]

и просто ["Флаг"+Шаг]

подскажите правильный синтаксис плиз
1 Rie
 
26.07.12
12:06
(0) Шаблон("[Флаг"+Шаг+"]")
2 1Сергей
 
26.07.12
12:07
(1)+возвращает строку
3 povar
 
26.07.12
12:08
(1) неа
4 Ork
 
26.07.12
12:08
Для поз = 1 По НемеряноРеквизитовФлаг Цикл
   Сообщить(Форма.ПолучитьАтрибут("Флаг"+поз));
КонецЦикла;
5 Ork
 
26.07.12
12:08
+(4) Аналогично есть ПолучитьАтрибут().
6 Ork
 
26.07.12
12:10
Сорри. Установить
7 Rie
 
26.07.12
12:11
(2) И что страшного? Это ж флажок.
8 Rie
 
26.07.12
12:11
(4) Вернёт не значение элемента управления, а сам элемент управления.
9 Pro-tone
 
модератор
26.07.12
12:13
(4) а что будет если к строке число прибавить? Не будет ругаться хочешь сказать?
10 Rie
 
26.07.12
12:14
(9) Нет, не будет. Доблестно прибавит.
11 Pro-tone
 
26.07.12
12:15
(10)ну вообще-то должен =) разные ж типы
12 valdi77
 
26.07.12
12:15
Форма.ПолучитьАтрибут("Флаг"+поз)

Неа
пишет неверное имя атрибута
13 Ork
 
26.07.12
12:16
(8) Точно. Таки рабочий код - в (1).
14 1Сергей
 
26.07.12
12:18
(7) ничего страшного, просто предупреждаю 1С, а то у него сравнение с числом в тексте
15 1Сергей
 
26.07.12
12:18
*ТС
16 Tatitutu
 
26.07.12
12:19
(12) Потому что нет такого реквизита на форме
чему в данном случае равно ПОЗ
17 valdi77
 
26.07.12
16:08
Если вызывается в контексте формы отчета
тогда не удается получить значение элемента

Пример:
такой код работает
а прочитать какое значение (т-ть выбран или нет флажок не могу)
Причем в справке написано что Форма.ПолучитьАтрибут(Возращает ссылку на элемент

но когда я пишу
ТекЭлемент =  Форма.ПолучитьАтрибут(Элемент);
ТекЭлемент -неизвестный объект

а такие примеры работают

Форма.ПолучитьАтрибут(Субконто).Видимость(0);
Форма.ПолучитьАтрибут(тСубконто).Заголовок("Нет");
Форма.ПолучитьАтрибут(тСубконто).Видимость(1);
Форма.ПолучитьАтрибут(АвтоСубконто).Доступность(0);
Форма.ПолучитьАтрибут(Параметр).Доступность(0);

возвращает ссылку на элемент, т-ть позволяет мне сделать его видимым,
в виде
18 Rie
 
26.07.12
19:41
(17) Форма.ПолучитьАтрибут(...) возвращает _элемент управления_ (объект), а не его значение.
Чтобы получить значение - варианты:
а) используй Шаблон (см. (1));
б) используй внешнюю компоненту FormEx.
19 valdi77
 
27.07.12
10:48
Я дико извиняюсь.
Обычно так не туплю, и понимаю подсказки со второго, ну точно с третьего раза. Сейчас же не пойму наверно жара или уже возраст, ведь вчера был очередной ДР.

Уважаемый Rie

вариант с FormEx понятен

вариант с Шаблоном нет
ведь шаблон возвращает строку т-ть
Пример

Шаг=1;
Шаблон("Флаг[Шаг1]") = "Флаг1"

строка "Флаг1"

как мне её проверить на значение элемента формы типа флаг с идентификатором Флаг1
20 Ork
 
27.07.12
10:52
(19) Правильно расставь квадратные скобки.

Шаблон("[Флаг"+Шаг+"]")
21 valdi77
 
27.07.12
11:13
Всем спасибо.
Особенно:

Ork
Rie

То что нужно

Шаблон("[Флаг"+Шаг+"]")
Пользователь не знает, чего он хочет, пока не увидит то, что он получил. Эдвард Йодан