Имя: Пароль:
1C
 
ТабличныйДокумент (область макета) и Массив
0 stateg
 
14.11.14
11:38
Доброго времени суток.

Для проверки вывода области макета (ТабДок.ПроверитьВывод()) использую массив, в который в цикле добавляю области следующим образом:

Результат = Новый Массив
ОбластьПодписи = Макет.ПолучитьОбласть("Подписи");
<<Начало условного цикла>>
    ПодписьДолжность = РегистрыСведений.ОтветственныеЛицаОрганизаций.ПолучитьПоследнее(ТекущаяДата(), ДолжностьОтбор);
    ОбластьПодписи.Параметры.Должность = ПодписьДолжность.Должность;
    ОбластьПодписи.Параметры.Сотрудник = ОбщегоНазначения.ФамилияИнициалыФизЛица(ПодписьДолжность.ФизическоеЛицо);
    Результат.Добавить(ОбластьПодписи);
<<Конец условного цикла>>

В результате имею массив из n областей, параметры каждой из которых имеют значения параметров последней добавленной области.
Поясните пожалуйста этот момент и подскажите как можно сформировать массив из одинаковых областей, но с разными значениями параметров. Спасибо.
1 Looser-1c
 
14.11.14
11:38
Каждый раз область получать - не?
2 stateg
 
14.11.14
11:39
(0) Значение ДолжностьОтбор само собой меняется в цикле
3 stateg
 
14.11.14
11:39
(1) В смысле? Не могли бы вы пояснить?
Мне нужен массив областей чтобы проверить вывод на страницу всех их сразу
4 Looser-1c
 
14.11.14
11:40
(3)
ОбластьПодписи = Макет.ПолучитьОбласть("Подписи");
<<Начало условного цикла>>

меняем местами эти две строки
5 stateg
 
14.11.14
11:48
(4) Хм, это и правда помогло.
Не поясните тогда каким образом параметры уже добавленной в массив области изменяются при добавлении очередной, если ее не получать заново? По моей логике в массиве должны были лежать одинаковые табличные документы, но с разными свойствами (читай параметрами) и почему при этом каждый раз надо получать область я не понимаю
6 Looser-1c
 
14.11.14
11:49
(5) Ссылка одна и та же....
7 stateg
 
14.11.14
11:53
(6) Омг, я думал, что в массив копируется сам табличный документ, а не ссылка на переменную в которой он лежит.
Спасибо за оперативный ответ :)
8 Looser-1c
 
14.11.14
11:55
(7) Кстати, если немного подумать над результатами - ответ очевиден...
Но я понимаю, пятница )))
Пользуйся.
9 stateg
 
14.11.14
11:56
(8) Да уж, можно было бы и догадаться, но я что-то подзавис на этом моменте))
10 stateg
 
14.11.14
12:00
(8) Хотя, если подумать, то по этой логике когда мы получаем область заново, в массиве будет лежать ссылка на переменную ОбластьПодписи, которая по факту уже заменилась на новую область с другими параметрами. Но, в результате имеем различные области... Да и само понятие "ссылка на переменную" как-то непонятно
Это взрывает мне мозг))
11 Looser-1c
 
14.11.14
12:04
(10) просто привыкни.
Каждый раз получая область - ты имеешь новый объект в памяти.
Используя один макет - ты имеешь ссылку на одну область.
12 stateg
 
14.11.14
12:05
Все еще хотелось бы услышать пояснений по поводу того, что в итоге храните в себе массив. Подозреваю, что все-таки это табличный документ, но при этом непонятно почему изменяются параметры, если его не получать заново...
13 Looser-1c
 
14.11.14
12:06
(12) ссылки на объекты.
А ссылка - она такая вещь...
14 stateg
 
14.11.14
12:11
(11) Получается при каждом получении объекта выделяется область в памяти, адрес которой и передается в массив? Тогда возникает вопрос в какой момент компилятор решает, что эта область памяти больше не нужна и освобождает ее, ну да ладно, остановимся на том что есть, негоже в пятницу в такие дебри лезть :D
15 stateg
 
14.11.14
12:11
(14) точнее не компилятор а приложение
16 Looser-1c
 
14.11.14
12:12
(14) да, именно так и получается.
А освобождение памяти - это отдельная история...
Проблемы невозможно решaть нa том же уровне компетентности, нa котором они возникaют. Альберт Эйнштейн