Имя: Пароль:
1C
 
Как присвоить массив по занчению?
0 Deni7
 
12.04.10
22:27
Задумался над простейшим вопросом. Подскажите, как присвоить массив по значению?

Есть код:

   А = Новый Массив(3,3);
   В = А;
   
   Сообщить("А[1][1] "+А[1][1]); //0
   Сообщить("В[1][1] "+В[1][1]); //0
   А[1][1] = 6;
   Сообщить("А[1][1] "+А[1][1]); //6
   Сообщить("В[1][1] "+В[1][1]); //6 - ???

Как скопировать значения массива А в массив В, по значению?
1 Волшебник
 
12.04.10
22:29
Массив.Скопировать()
2 Deni7
 
12.04.10
22:33
(1) {Форма.Форма(4)}: Метод объекта не обнаружен (Скопировать)
   В = А.Скопировать();
3 Лефмихалыч
 
12.04.10
22:46
(2) потому, что Волшебник тебя технично наиграл

Для И=0 по А.Количество Цикл
  Для Ж=0 по А[И].Количество() Цикл
     В[И][Ж]=А[И][Ж]
4 Deni7
 
12.04.10
22:55
(3) Это конечно понятно. А попроще нельзя? Одним каким нибудь действием? Вообще в чем логика разработчика в присваивании массива именно по ссылке?

Почему с переменными:

   С = 8;
   Д = С;
   С = 5;
   Сообщить("Д "+Д); //Д=8

А с массивами не так?
5 nop
 
12.04.10
22:58
(4) в экономии памяти. Во всех нормальных языках передача всего больше чем примитивный тип делаеться по ссылке.
Напиши функцию копирования и вызывай
6 Варвар
 
12.04.10
22:58
^B=^A
както так.
7 Лефмихалыч
 
12.04.10
23:00
Можно еще так попробовать:

Функция МассивСкопировать(Знач Источник)
Возврат Источник;
КонецФункции
А = Новый Массив(3,3);
В = МассивСкопировать(А);

ЗЫ сам не пробовал
8 Deni7
 
12.04.10
23:01
(5) И никакого способа передать по значению, типа (1)??? Я в шоке.
(6) ? среда разработки 1С 8.1.
9 Лефмихалыч
 
12.04.10
23:03
(8) попробуй (7), мне аж интересно самому стало. В 7.7 точно был как миниму один объект, с которым такой фокус не прокатывал - Таблица. В 8 еще не встречал таких, а самому экспериментировать ленно как-то...
10 Deni7
 
12.04.10
23:07
(9) Не работает!  #:-0
11 Лефмихалыч
 
12.04.10
23:37
(10) этофсмыслекаг!?!?!! параметр передается таки по ссылке, а не по значению?
12 acsent
 
12.04.10
23:42
(11) Такая конструкция работает только для примитивных типов
13 Лефмихалыч
 
12.04.10
23:59
И правда... это омерзительно...
14 Deni7
 
13.04.10
09:46
(0) И фсе таки? Еще раз спрошу умудренных опытом старших товарищей. Может кто ссылку кинет на документацию по этому поводу?

А то в 30 с лишним лет понять что жизнь прожита зря...
15 Deni7
 
13.04.10
10:40
(0) Решилась проблема такъ

   В = ЗначениеИзСтрокиВнутр(ЗначениеВСтрокуВнутр(А));

либо такъ

   СохранитьЗначение("Масс", А);
   В = ВосстановитьЗначение("Масс");

Всем спасибо. Но осадочек остался...(с)