Вход | Регистрация


1С:Предприятие :: 1С:Предприятие 8 общая

Двумерный динамический массив

Двумерный динамический массив
Я
   aceaces
 
19.04.18 - 11:21
Может кто-нибудь рассказать эту "чудесную" 1сную систему работы с массивами

Создаю двумерный массив
Для i=1 По ВсегоСтрок Цикл
        ДанныеИзЭкселевскогоФайлаЯчейка.Добавить(i);
КонецЦикла;


Для i=1 По ВсегоКолонок Цикл
    ДанныеИзЭкселевскогоФайла.Добавить(ДанныеИзЭкселевскогоФайлаЯчейка);    
КонецЦикла;

Но при присваивании например
ДанныеИзЭкселевскогоФайла[0][0] = "не важно что"; Сообщить(ДанныеИзЭкселевскогоФайла[0][0]);                   Сообщить(ДанныеИзЭкселевскогоФайла[1][0]);                   Сообщить(ДанныеИзЭкселевскогоФайла[2][0]);

результат будет 3 строки "не важно что"

Может кто-нибудь объяснить почему?
 
 
   ptiz
 
1 - 19.04.18 - 11:26
(0) А где тут двумерный массив? Больше похоже на вложенный. Причем в ДанныеИзЭкселевскогоФайла вставляется одна и та же ссылка.
   Cool_Profi
 
2 - 19.04.18 - 11:26
Потому что строки нумеруются  с 0?
   aceaces
 
3 - 19.04.18 - 11:36
ptiz
Насколько я понял, чтобы создать двумерный массив в 1с надо сделать массив массива, я не прав? Вложенный как раз.

Пример с этого форума из книжки
Листинг 2.3. Создание многомерного массива

    ДвумерныйМассив = Новый Массив (2, 8);

    Листинг 2.4. Создание многомерного массива добавлением элементов

    ДвумерныйМассив = Новый Массив;
    МассивВторогоПорядка = Новый Массив (8);
    ДвумерныйМассив.Добавить(МассивВторогоПорядка);
    ДвумерныйМассив.Добавить(МассивВторогоПорядка);

По-моему у меня тоже самое??




Cool_Profi
Что?
   Ненавижу 1С
 
4 - 19.04.18 - 11:39
Для i=1 По ВсегоКолонок Цикл
    ДанныеИзЭкселевскогоФайла.Добавить(ДанныеИзЭкселевскогоФайлаЯчейка);    
КонецЦикла;


ты все время добавляешь один и тот же массив
   Вафель
 
5 - 19.04.18 - 11:39
у тебя во всех 3х ячейках ссылка на один и тот же массив
   ptiz
 
6 - 19.04.18 - 11:41
(3) Листинг 2.3 - настоящий "двумерный"
2.4 - эмуляция двумерного через одномерный вложенный, причем код - с ошибкой
   ptiz
 
7 - 19.04.18 - 11:46
Ну и главный вопрос - зачем тебе двумерный массив, когда таблица значений удобнее? :)
   Вафель
 
8 - 19.04.18 - 11:52
(7) может он с клиента на сервер гоняет
   Eiffil123
 
9 - 19.04.18 - 11:56
(7) удобно обращаться по индексам, например так: [i][j]. Наверно можно использовать для решения каких-нибудь СЛУ.
   aceaces
 
10 - 19.04.18 - 11:56
Народ я понял что создал массив где в каждом элементе ссылка на один и тотже массив2, может я туплю, но как тогда создать двумерный массив? Потому как на мой взгляд мой пример от листинга 2.4 ничем не отличается, там также присваивается две одинаковых ссылки
 
 Рекламное место пустует
   Вафель
 
11 - 19.04.18 - 11:57
(10) Массив[0] = Новый Массив(n)
   VladZ
 
12 - 19.04.18 - 11:58
(0) Зачем тебе? Многомерные массивы в 1с не используются.
   Вафель
 
13 - 19.04.18 - 12:00
(12) в смысле не используются?
   VladZ
 
14 - 19.04.18 - 12:05
(13) Обычно используется одномерный массив. Если нужно больше информации: таблица значений или структура.
   aceaces
 
15 - 19.04.18 - 12:07
Вафель
Значит листинг 2.4 неправильный? Чем он отличается от моего?
   aceaces
 
16 - 19.04.18 - 12:08
VladZ
С таблицами структурами и деревьями мне неудобно работать очень
   ptiz
 
17 - 19.04.18 - 12:09
(15) Если хочешь именно вариант 2.4, то пиши так: ДвумерныйМассив.Добавить(Новый Массив(8));
   VladZ
 
18 - 19.04.18 - 12:10
(0) "Может кто-нибудь рассказать эту "чудесную" 1сную систему работы с массивами"

Создаю двумерный массив
Для i=1 По ВсегоСтрок Цикл
        ДанныеИзЭкселевскогоФайлаЯчейка.Добавить(i);
КонецЦикла;


Для i=1 По ВсегоКолонок Цикл
    ДанныеИзЭкселевскогоФайла.Добавить(ДанныеИзЭкселевскогоФайлаЯчейка);    
КонецЦикла;

Чудесная программа сделала ровным счетом то, что ты ее просил. Ты просил чушь - она сделала чушь.
   hhhh
 
19 - 19.04.18 - 12:11
(15) вот так должно быть
  МассивВторогоПорядка = Новый Массив (8);
    ДвумерныйМассив.Добавить(МассивВторогоПорядка);
  МассивВторогоПорядка = Новый Массив (8);
    ДвумерныйМассив.Добавить(МассивВторогоПорядка);
   VladZ
 
20 - 19.04.18 - 12:11
(16) "мне неудобно работать очень" - это твоя проблема.
Сделай так, чтобы было удобно.
   VladZ
 
21 - 19.04.18 - 12:11
(0) "мне неудобно работать очень" - расскажи нам, что у тебя за задача такая?
   aceaces
 
22 - 19.04.18 - 12:14
Всем спасибо получилось, правда не понятно как это следовало из 2.4 на да бог с ним)

VladZ
В таком тоне общайся с кем нибудь другим
   FIXXXL
 
23 - 19.04.18 - 13:09
сделай уже массив структур
ключ - имя колонки, значение - значение колонки
и пиши в цикле эти структуры в массив
   Сияющий в темноте
 
24 - 19.04.18 - 22:14
двумерный массив,это ComSafeArray может быть,а то,что здесь создают,это массив,содержащий обьекты,каждый из которых массив,но просто еще кто то запихал несколькт раз ссылку на один и тот же обьект,забыв что здесь не визуал басик и массив в 1с это обьект
   МимохожийОднако
 
25 - 19.04.18 - 22:32
(22) ))
   vde69
 
26 - 19.04.18 - 22:41
в 1с массив это совсем не массив, а настоящий массив это фиксированный массив. Ну а двухмерных массивов в 1с массово нет и массу маслать без масла не масляво :)
   Сияющий в темноте
 
27 - 20.04.18 - 09:16
В 1с массив,это обьект,содержащий коллекцию
самое главное,что ОБЬЕКТ
а нормальные массивы,передаваемые в переменной Variant,это значения,при копировании переменной массив копируется,в отличие от обьекта,у которого копируется ссылка
   MM
 
28 - 20.04.18 - 09:30
(26) Вообще-то, есть и называются COMSafeArray, хотя это и не совсем 1совский объект.


Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Рекламное место пустует