|
Что я не понимаю в массивах? | ☑ | ||
---|---|---|---|---|
0
Nik_nik_nik
15.04.13
✎
11:43
|
Есть вот такой код:
ТаблицаЗагрузки = Новый Массив; Строка = Новый Структура; Пока СтрДлина(НазваниеМагазина) <> 0 Цикл НазваниеМагазина = Лист.Cells(НомерСтроки,1).Value; Строка.Вставить("НазваниеМагазина", НазваниеМагазина); Строка.Вставить("КодМагазина", Лист.Cells(НомерСтроки,2).Value); Строка.Вставить("Бренд", Лист.Cells(НомерСтроки,3).Value); Строка.Вставить("РегионДоставки", Лист.Cells(НомерСтроки,4).Value); Строка.Вставить("Наименование", Лист.Cells(НомерСтроки,5).Value); Строка.Вставить("ТипГруза", Лист.Cells(НомерСтроки,6).Value); Строка.Вставить("Отдел", Лист.Cells(НомерСтроки,7).Value); Строка.Вставить("Инвойс", Лист.Cells(НомерСтроки,8).Value); Строка.Вставить("Количество", Лист.Cells(НомерСтроки,9).Value); Строка.Вставить("ОбъемГруза", Лист.Cells(НомерСтроки,10).Value); ТаблицаЗагрузки.Добавить(Строка); Состояние("Читается строка Excel " + (НомерСтроки-4)); ////ДОБАВЛЯЕМ СТРОКУ //ДобавитьСтрокуТоваров(Строка); //Сообщить(""+НазваниеМагазина+" "+КодМагазина+" "+Бренд+" "+РегионДоставки+" "+Наименование+" "+ТипГруза+" "+Отдел+" "+Инвойс+" "+Количество+" "+ОбъемГруза); НомерСтроки = НомерСтроки + 1; КонецЦикла; ЗаполнитьТаблицу(ТаблицаЗагрузки); Беда в том, что внутри цикла массив читается нормально, а как только выходит из цикла, массив все превращает в "неопределено". Это управляемые формы на стороне клиента. Что я делаю не так? |
|||
1
rutony
15.04.13
✎
11:48
|
(0) зачем вообще тут массив, передавай структуру функции
|
|||
2
rutony
15.04.13
✎
11:49
|
(1) ааа.. тупанул, попробуй список значений, зачем тебе именно массив
|
|||
3
Нуф-Нуф
15.04.13
✎
11:50
|
(2) Какая разница какая коллекция используется, есть где-то глюк
|
|||
4
cw014
15.04.13
✎
11:51
|
За переменную с именем "Строка" - расстреливать нужно
|
|||
5
Нуф-Нуф
15.04.13
✎
11:51
|
а ты что делаешь вообще? на клиенте пытаешься считать файл и испровизированной таблице значений закинуть на сервер? не проще ли сразу на сервер передать файл?
|
|||
6
Нуф-Нуф
15.04.13
✎
11:51
|
(4)+1
|
|||
7
mistеr
15.04.13
✎
11:51
|
(2) Тупанул дважды
|
|||
8
mikecool
15.04.13
✎
11:52
|
где то массив затирается
|
|||
9
ilkoder
15.04.13
✎
11:52
|
мне кажется структуру надо в цикле создавать,а не один раз
|
|||
10
ilkoder
15.04.13
✎
11:52
|
(4) - это точно
|
|||
11
Нуф-Нуф
15.04.13
✎
11:53
|
(9) +1
|
|||
12
cw014
15.04.13
✎
11:53
|
(9) Ну тут ты прав. А во вторых - у екселя есть метод, позволяющий узнать высоту таблицы
|
|||
13
Nik_nik_nik
15.04.13
✎
11:54
|
(4) уже поправил... это в порыве испытаний родилось. На результат не повлияло.
(5) да, наверное так и буду пытаться, но пока интересна сама ошибка. (8) количество строк и структура остается, теряются только данные. |
|||
14
cw014
15.04.13
✎
11:54
|
(9) Так что тут ты не в массивах не понимаешь, а в ссылочной целостности
|
|||
15
Киборг
15.04.13
✎
11:55
|
назовем массив - таблицей, структуру - строкой, чтобы код легко читался и воспринимался, ага
|
|||
16
Nik_nik_nik
15.04.13
✎
11:55
|
(9) - может быть, но внутри цикла (до самого последнего пробега) массив читается нормально. Исходя из этого, дело явно не в объявлении структуры. Но попробую.
|
|||
17
cw014
15.04.13
✎
11:56
|
(15) Прямо стихи
|
|||
18
Nik_nik_nik
15.04.13
✎
11:58
|
Приз получает (9).
Дело было в объявлении структуры. Кто объяснит почему норм читалось внутри цикла? |
|||
19
Лефмихалыч
15.04.13
✎
11:58
|
(0) проблема в функции ЗаполнитьТаблицу() и в том, что (9)
|
|||
20
Жан Пердежон
15.04.13
✎
11:59
|
(18) разве не очевидно?
|
|||
21
Nik_nik_nik
15.04.13
✎
12:00
|
(20) - согласен на счет почему не читалась дальше, вопрос в том, почему читалась в цикле. Что меняется на границе "в цикле|вне цикла"?
|
|||
22
cw014
15.04.13
✎
12:00
|
(18) Ну легко.
Ты создал экземпляр объекта "Структура" - допустим внутренний ид у нее по меркам 1С - "01" Далее ты ее заполняешь, потом кладешь в массив. В массив кладется (на уровне платформы) - "01". Бежишь дальше, перезаполняешь структуру. Кладешь в массив, в массив кладется "01"... В итоге у тебя массив из одинаковых структур |
|||
23
ilkoder
15.04.13
✎
12:01
|
(18) - просто много раз ошибки были, теперь просто привычка в цикле переменные создавать, которые перезаписываются
|
|||
24
Nik_nik_nik
15.04.13
✎
12:03
|
(22) это ответ на вопрос - почему не читается дальше.... но почему читается внутри цикла? Если все так, то должно быть или все одинаковые строки или (с учетом того что все это превращается в неопределено) все неопределено уже внутри цикла.
|
|||
25
cw014
15.04.13
✎
12:03
|
(24) Ты в цикле как "читаешь"?
|
|||
26
Жан Пердежон
15.04.13
✎
12:05
|
(24) у тебя во всех элементах массива ссылка на один и тот же объект в памяти, который в этом же цикле изменяется
|
|||
27
cw014
15.04.13
✎
12:05
|
(26) Красиво сказано
|
|||
28
fisher
15.04.13
✎
12:06
|
(24) Внутри цикла читается текущие значения структуры. Тут всё ОК. А вот почему за пределами цикла ссылка на структуру заменяется на Неопределено - непонятно.
|
|||
29
В тылу врага
15.04.13
✎
12:06
|
(22) не одинаковых, а одной и той же
|
|||
30
Галахад
гуру
15.04.13
✎
12:08
|
(28) Что непонятно?
1 1 2 2 3 3 пусто пусто Вот последние данные в структуру и записались. |
|||
31
fisher
15.04.13
✎
12:10
|
(30) Я из (0) решил, что массив ссылок на структуру превратился в массив Неопределено.
|
|||
32
Nik_nik_nik
15.04.13
✎
12:11
|
(25) - отладчиком.
(26) - стоп. Если у меня записываются ссылки - тогда они что в цикле ссылки, что за пределами цикла - ссылки и результат чтения массива что внутри цикла, что снаружи - должно быть фиолетово. Если пишутся значения - в принципе тоже разницы быть не должно. Только в первом случае везде должен быть глюк, а во втором - везде должно читаться. А получается что пока мы внутри цикла - в массиве значения, а как выходим из цикла в массиве уже получаются ссылки (которые кривые и не могут быть нормально прочитаны). |
|||
33
Бледно Золотистый
15.04.13
✎
12:14
|
(30) Вообще должно быть в этом случае:
3 3 3 3 3 3 И Неопределено тут не должно быть, ТС что-то мутит. |
|||
34
cw014
15.04.13
✎
12:14
|
(33) А крик души в (32) я вообще не понял
|
|||
35
Nik_nik_nik
15.04.13
✎
12:15
|
(33) скрины выложить?
|
|||
36
fisher
15.04.13
✎
12:16
|
(32) Еще раз. В массиве были не ссылкИ. В массиве была ссылкА. Одна и та же. И отладчиком ты видел текущие значения структуры по этой ссылке. Которые менялись в каждой итерации. Глянь в отладчике значения предыдущих элементов массива. Данные в их структурах менялись на каждой итерации. Потому, что это была одна и та же структура.
|
|||
37
Галахад
гуру
15.04.13
✎
12:17
|
(33) Неа. Он же название считывает. И если его нет,
заполняет все пустыми значениями, а потом выходит из цикла. |
|||
38
Nik_nik_nik
15.04.13
✎
12:19
|
Спасибо всем за помощь. Ошибка решена.
Сейчас больше нет времени разбираться. В чем была ошибка - понял. |
|||
39
Бледно Золотистый
15.04.13
✎
12:21
|
(37) Согласен
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |