Имя: Пароль:
1C
 
Очень МАССИВный вопрос
0 ПроцедураСвета
 
28.10.09
12:03
Большой МАССИВный вопрос.
Уважаемые завсегдатаи форума, помогите начинающей леди разобраться с массивами. Очень мало по этому поводу литературы. Честно скажу у меня её вообще нет. Потому все что там написано ниже не для того чтобы оскорбить ваш деликатный вкус своими неправдоподобными размышлениями, а только потому что мне нужно в этом разобраться, а литературы нет. Расскажу все что предполагаю, а вы уж меня поправьте, если не лень читать конечно. Не засоряйте только тему, чтобы потом кто-нибудь тоже начинающий мог легко вникнуть.
Переем Массив[4]; – это я как понимаю двумерный массив, способный хранить в себе 4 любых значения. Если в ходе процедуры мы сослались на пременную Массив[4] четыре раза то она «приняла в себя» четыре значения. Но как это правильно пишется? (Или я вообще не правильно рассуждаю?) Предположу что так:
                                        Пример1
Переем Массив[4]      
Процедура Такая()
  операторы
Массив[1]=12;
Массив[2]=22;
Массив[3]=33;
Массив[4]=44;
КонецПроцедуры

Таким образом к концу процедуры мы будем иметь переменную  (в раскрытом для образности, скажем так, виде) Массив[12,22,33,44]. Да? Или я ошибаюсь? Или можно (нужно!?) вот так:
                                      Пример2
Переем Массив[4]      
Процедура Такая()
  операторы
Массив=12;
Массив=22;
Массив=33;
Массив=44;
КонецПроцедуры

Написав это я предполагаю что переменная при обработке сама распределит значения «в своем» массиве отталкиваясь от того занято ли место или нет? А если так, что будет если я ошибусь и добавлю пятую переменную? Для примера 1 – Массив[5]=55; для примера 2 (12,22,33,44) Массив=55. Куда она денется? Вытиснит? Выдаст ошибку? Заменит? Проигнорирует?

Еще мне очень интересно как можно «извлечь» содержимое массива? Например он имеет 4-е значения разных типов, - строка, число, дата, перечисление. И куда все это можно выгрузить? В Таблицу Значения? А как? «Массив[4].выгрузить(таблица1)?» или «Массив[] выгрузить(таблица1)» А если мне надо выгрузить только два значения а не четыре?
И ещё, если у кого есть какая-нибудь всеобъясняющая ссылка, то прошу не жадничать, человекам нужно помогать. Заранее спасибо, калякала все это пол часа.
1 ТелепатБот
 
гуру
28.10.09
12:03
2 Rie
 
28.10.09
12:06
(0) Первый вариант верен.

Массив (в 7.7) никуда нельзя ни выгрузить, ничего. Это - просто набор переменных, вот таким хитрые образом поименованных. Ну и хранить в массиве значения разных типов - моветон. Для этого есть другие структуры данных - списки значений, таблицы значений.

Ссылка всеобъясняющая - книги, книги и ещё раз книги. Основные понятия программирования - не для 1С, а вообще. Одной ссылкой тут не обойтись.
3 skunk
 
28.10.09
12:07
до второго примера все правильно ... второй пример даст ошибку ... и далее все ошибочно...

http://ru.wikipedia.org/wiki/Массив
4 ПроцедураСвета
 
28.10.09
12:09
спасибо мальчишки, но книг таких хороших не знаю, посоветуйте если есть что.
А как выбрать из массива данные? или пербрать их. Ну например, через цикл? Какого он будет вида? Напишите если не трудненько.
5 Мулька
 
28.10.09
12:11
(4) Не циклись на массиве, не от 1С это. Тянись к таблице значений и спискам значений
6 Ёпрст
 
гуру
28.10.09
12:13
Перем мас[10];

Для к = 1 По Разм("мас") Цикл
  мас[к] = к;
  Сообщить(мас[к])
КонецЦикла;
7 Rie
 
28.10.09
12:13
(4) Перебор массива - через индексы.

Перем Массив[32];

Для н=1 По 32 Цикл
  // и здесь что-либо делать с Массив[н]
КонецЦикла;
8 ПроцедураСвета
 
28.10.09
12:14
(3) спасибочки, учту и Обязательно почитаю сегодня же.
(5) разобраться надо...не усну.
(2) спасибо ....моветон... поразил я даже такого не знаю, видимо,что-то серьёзное.
(6) спасибо
9 ПроцедураСвета
 
28.10.09
12:21
(2)
Хорошо, с циклом разобрались. Но все таки можно ли выгрузить данные массива. И если нет то почему? (а иначе зачем их туда накапливать?)Например, в Масиве имеем значения одного типа - число. 22,21,32. Могу я назначить эти цифры трем(ф1,ф2,ф3) полям диалога в форме с типом Число? Так чтобы ф1=22, ф2=21, ф3=32?
Например так:
ф1=Массив[1]
ф2=Массив[2]
ф3=массив[3]
такое будет работать? ведь да?

А как передать значение Массива в ТЗ?
10 Ёпрст
 
гуру
28.10.09
12:23
(9)
1.да
2.
ТЗ.НоваяКолонка("Вася");
ТЗ.НоваяСтрока();
ТЗ.Вася = мас[1];
11 ПроцедураСвета
 
28.10.09
12:25
блин...пока все не ушли.. (или уже все ушли?)Зачем вообще нужны массивы? (Это что-то вроде матрицы, да?) Тем более двумерные? не проще ли пользоваться переменными? ДЛя того чтобы не запутаться в переменных? Так можно запутаться и в значениях массива ([10] ).
12 Ёпрст
 
гуру
28.10.09
12:25
+10

мас[2] = СоздатьОбъект("Список.Значений");
мас[2].ДобавитьЗначение("Вася");
мас[2].ДобавитьЗначение("Федя");

Сообщить(мас[2].ПолучитьЗначение(1));
13 ДенисЧ
 
28.10.09
12:26
"Переем Массив[4]; – это я как понимаю двумерный массив" - это неправильное понимание :-)
14 ПроцедураСвета
 
28.10.09
12:26
поправка... на последний, совершенно глупый вопрос я уже сама себе ответила. ссори.
15 Rie
 
28.10.09
12:32
(11) Массивы нужны, чтобы набор _однородные_ значений хранить.
В 1С 7.7 массивы весьма куцые, да и не особо нужны они там - есть другие, более уютные структуры данных.
16 Sadovnikov
 
28.10.09
12:33
(15) В 7.7 массивы нужны когда требуется высокая скорость доступа к данным.
17 ПроцедураСвета
 
28.10.09
12:35
(13)
почему не двумерный? предположим что в Массиве[4]  на Массив [1] мы прицепим значение типа Перечисление. Например Массив[1]=перечисление.склад. Такой массив не будет содержать в себе наименование товаров на складе. Если бы содеражал (перечисление.склад.стулья)- был бы бы трехмерным, а так как не содержит - двумерный. Если ошиблась - поправь пожал-та.
(15) какие? ТЗ?
(16) спасибо, вот благодоря вам начала хоть что-то вкуривать
18 ДенисЧ
 
28.10.09
12:36
(17) Потому что одномерный :-) У тебя одно измерение - в длину. В ширину - нет, точнее 1. Поэтому и одномерный :-)
19 Sadovnikov
 
28.10.09
12:36
(17) "спасибо, вот благодоря вам начала хоть что-то вкуривать" - Э... А точно это мне адресовано? И ведь и  веточке-то поучаствовал всего одним постом. причем, не сильно информативным.
20 smaharbA
 
28.10.09
12:38
(2) можно
21 Rie
 
28.10.09
12:38
(17) Стоп. Оставь в покое перечисления - о них у тебя ещё меньшее представление, чем о массивах.
22 ДенисЧ
 
28.10.09
12:39
+18 перечисление.Мебель.Сутл - это одно значение. А Слава КПСС - вообще не человек :-)
23 smaharbA
 
28.10.09
12:39
(22) Итого: - человечище
24 ПроцедураСвета
 
28.10.09
12:41
(19) тебе, точно тебе. )
(18) спасибо, учту на будущее. С матрицами всегда не лады были.
Господа, всем большое спасибо
(21) (весело смеётся) - это точно, тут и пророком быть не нужно.)
25 ПроцедураСвета
 
28.10.09
12:44
(21) но если често, конецно пример не удачный я привела. не спорю. Вообще бредово-маразматический. Смешно даже повторить перечисление.склад.стулья. = Ха! надо в анекдоты добавить на каком-нибудь сайте.
26 ДенисЧ
 
28.10.09
12:45
(25) Попробуй подобрать более удачный пример, который ты считаешь многомерным. А мы опровергнем :-)
27 smaharbA
 
28.10.09
12:45
а мене ?
28 ПроцедураСвета
 
28.10.09
12:47
Ладно, всем спокойной ночи (у меня разница с Москвой в 8 часов), пойду думать лежа.
(26) справочник.стулья.Людмила_Ивановна    А?
(27) чмок.
29 ДенисЧ
 
28.10.09
12:48
(28) Нет такого значения :-)
30 ZOMI
 
28.10.09
13:38
Опять неудачный клон Семененко