Форма.ПолучитьАтрибут("Цена"+к)

Дайнеко

Well-known member
19.11.2009
951
0
#1
Как-то столкнулся с этой ерундой. На форме отчета несколько реквизитов: Цена1, Цена2,...
Чтобы не писать повторяющиеся строки, хочу пройти по ним циклом.
Код:
		Для к = 1 По КолЦен Цикл
Цена = Форма.ПолучитьАтрибут("Цена"+к);
КонецЦикла;	// к
Так что происходит!
* Ошибку не выдает.
* В Отладчике равно "НеизвестныйОбъект"
* С именем ошибиться не могу. Копирую значение имени поля "Цена"+к и вставляю в Отладчик. Выдает значение.

Я придумал, как выкрутится, но все-таки, в чем причина?
 

vbs

Well-known member
18.02.2007
1 708
1
#2
А так :
Цена = Форма.ПолучитьАтрибут("Цена"+Строка(к));
 

Дайнеко

Well-known member
19.11.2009
951
0
#3
За пацана держишь! :lovecodeby:
Нешто я не проверил, что выражение "Цена"+к дает что надо, и не проверил в отладчике тупо с фразой "Цена1"
 

vbs

Well-known member
18.02.2007
1 708
1
#4
Да ладно, не в обидку написано.
Просто Цена1 в отладчике выглядит нормально, а параметр для передачи в ПолучитьАтрибут формируется криво
Так что, если пробовал
Цена = Форма.ПолучитьАтрибут("Цена"+Строка(к)); - сдаюсь и я
 

puh14

Well-known member
11.07.2008
1 412
0
#5
Шаблон("["+Цена + к+"]")

Надыбал в

http://dml.compkaluga.ru/forum/index.php?showtopic=35958

А причина наверно в том, что получитьатрибут() возвращает некую ссылку, а не значение атрибута. Собственно описание функции шаблон это подтверждает.
 

Дайнеко

Well-known member
19.11.2009
951
0
#6
А причина наверно в том, что получитьатрибут() возвращает некую ссылку
Спасибо, я стразу так и решил проблему, через Шаблон(). Интересно было понять суть. Согласитесь, некая нечеткость в 7-ке с пониманием ПолучитьАтрибут(). При обращении к объекту спр-ка или док-та метод выдает Значение реквизита. А в диалоге дает ссылку на элемент формы. И здесь не срабатывает семерочное тождество элементу формы и его значению.
В 8-ке с этим по-четче.
 

KiR

НЕ шибка опытный програмер)
11.09.2007
1 581
0
#7
Дайнеко, ну дык сколько 7 лет и сколько 8ке... Было бы ужасно если бы в 8 до сих пор такие глупости сохранились