|
Как изменить размер массива / Есть ли в 1С аналог ReDim Preserve из VB? | ☑ | ||
---|---|---|---|---|
0
Dartanyan
24.09.17
✎
10:26
|
8.1
Команды на VBA(Excel) следующая: 1) ReDim M(1 то 12) - возможно ли создать массив с заданным диапазоном индексов(1 To 12) в 1С. Если да, то как? 2) ReDim Preserve Arr(12) - расширяется или уменьшается массив и значения элементов сохраняется - есть ли возможность расширить/уменьшить массив(изменить размерность) без потери данных? Т.е. без создания "Новый" и без Добавлять() в цикле. Может есть более простой метод? Спасибо. |
|||
1
VS-1976
24.09.17
✎
10:29
|
(0) Нет такого. Есть только Очистить() с потерей всех данных.
|
|||
2
bodri
24.09.17
✎
10:33
|
(0) Зачем?
П.С. Просто интересно когда это может понадобиться. |
|||
3
Dotoshin
24.09.17
✎
10:34
|
(0) А в чем смысл этого действия?
|
|||
4
VS-1976
24.09.17
✎
10:35
|
(2) Это специфика basic человек живёт ещё его ограничениями. Ему нужно воспринимать Массив как объект Collection тогда у него всё встанет на место.
|
|||
5
bodri
24.09.17
✎
10:39
|
в СП нашел такое:
Массив (Array) По количеству элементов Синтаксис: Новый Массив(<КоличествоЭлементов1>,...,<КоличествоЭлементовN>) Параметры: <КоличествоЭлементов1>,...,<КоличествоЭлементовN> (необязательный) Тип: Число. Каждый параметр определяет количество элементов массива в соответствующем измерении. Может задаваться неограниченное количество параметров. Если ни один параметр не указан, то создается одномерный массив с нулевым количеством элементов. Описание: Создает массив из указанного количества элементов. Если задано несколько параметров, то будет создан массив, элементами которого являются массивы (и т.д. в зависимости от количества параметров). Фактически конструктор позволяет создать массивы массивов, которые могут являться аналогом многомерного массива. Пример: // массив с 0 элементами Массив1 = Новый Массив; // массив из 10 элементов, // каждый из которых является массивом из 2 элементов, // каждый из которых является массивом из 4 элементов Массив2 = Новый Массив(10,2,4); |
|||
6
jsmith82
24.09.17
✎
10:51
|
в 1ске же динамические массивы
|
|||
7
jsmith82
24.09.17
✎
10:51
|
в отличие от 7-ки (насколько помню)
|
|||
8
Смотрящий
24.09.17
✎
11:17
|
(6) Как у 1совского массива сменить размерность ?
|
|||
9
Xapac
24.09.17
✎
11:22
|
(8)Добавляй элемент
|
|||
10
Chameleon1980
24.09.17
✎
11:26
|
(0) с годовщиной !
|
|||
11
Dartanyan
24.09.17
✎
11:30
|
(10) А! понял. Спасибо.
(2) Динамический массив Не знаю как в 1с, но как правило массивы самые быстрые. Скорее всего понадобится, когда столкнетесь с анализом данных |
|||
12
jsmith82
24.09.17
✎
11:32
|
(11) Он редко тут появляется
|
|||
13
Dartanyan
24.09.17
✎
11:47
|
(12) да. Практически всегда отсутствую. Но часто нахожу уже готовые ответы именно здесь. И пользуясь случаем, скажу спасибо всем, кто не ленится и делится опытом с нубами, вроде меня. Как говорится: Респект и уважуха!
|
|||
14
breezee
24.09.17
✎
13:42
|
(0) Как вы в этом чертовом ВБА вообще работает? Чтобы создать динамический массив в ВБА надо:
1)Создать динамический массив 2)Переопределить этот динамический массив в конечный. Это же брел А еще там нет возможности посмотреть все методы объекта через вычисления выражения. Это вообще жесть |
|||
15
Dartanyan
24.09.17
✎
16:59
|
(14)
я бы вам сказал в грубой форме,... ну да ладно. 1) а в 1с не нужно создавать массив? 2) во-первых, если нужно не "конечный", то есть Collection, например во-вторых, это стоит рассматривать, как выделение нужного обьема памяти, которая выделяется под все обьекты. Разроботчики языка 1с, просто, делают это за вас, что естественно сказывается на быстродействии. И Массив.Добавить() = ReDim Массив(Ubound(Массив)+1). Вы этого не понимаете, потому что не знакомы с реальными языками программирования. "А еще там нет возможности" - есть всё и намного больше, просто, вы не там смотрели и не умеете правильно обьявлять переменные(начальный уровень программирования). Самое большое преимущество VBA в том, что можно быстро набросать, проверить, посмотреть результаты. Там редактировать код можно по ходу выполнения(есть ошибка - исправил, выполнил, перешел на след.строку и тд) и не нужно перезапускать ничего. В отдельном окне представлены все переменные и их значения(это типа Табло, но сразу со всеми переменными модуля и функции). Да че рассказывать... Я ковырялся во многих IDE для разных языков программирования и скажу, в чём - в чём, но в удобстве программирования у Майкрософта всё продумано чётко. Так что, когда захотите написать какой-то VBS, открывайте Excel и наслаждайтесь. |
|||
16
Филиал-msk
24.09.17
✎
17:04
|
(15) > Вы этого не понимаете, потому что не знакомы с реальными языками программирования.
Настоящий гасконец! |
|||
17
DDwe
24.09.17
✎
17:06
|
(15) "не понимаете, потому что не знакомы с реальными языками программирования" жесть!!))))
|
|||
18
Dartanyan
24.09.17
✎
17:21
|
(16) Я что-то неправильно написал? Память не выделяется в зависимости от типа переменной и их количества в массиве в реальных языках? VB, JS, 1с и тп - вертуальные. Это не я придумал
|
|||
19
VS-1976
24.09.17
✎
17:37
|
(15) По поводу реального языка... нужно иногда распальцовку убирать...
(18) не виртуальные, а интерпретируемые Массив в 1С это алгоритм списка, он гораздо луче чем redim. redim в vb это анахронизм оставленный для совместимости. |
|||
20
Ненавижу 1С
гуру
24.09.17
✎
17:43
|
А еще бывает Count и Capacity, но боюсь, для 1С это слабо актуально
|
|||
21
Dartanyan
24.09.17
✎
17:49
|
(19) У меня не распальцовка, а ответ на "ты лох" в "развернутом" виде.
Гораздо лучше чем? Вы наверное хотели сказать "удобнее". Может быть. Хотя речь даже не об этом, а о том, что redim и добавить() выполняют одно и тоже - увеличивают размер мессива. |
|||
22
VS-1976
24.09.17
✎
18:12
|
(21) Удобнее конечно
|
|||
23
Фрэнки
24.09.17
✎
18:12
|
(21) // а о том, что redim и добавить() выполняют одно и тоже
это удалось достоверно установить? |
|||
24
breezee
24.09.17
✎
18:49
|
(15) >Реальный язык программирования
Да, вы правы, на ассемблере не пишу, да и в двоичном коде ничего толкового не не напишу. Вы же знаете, что разные языки для разного нужны? Зачем мне работа с памятью при создании скрипотв для ворда? Это не риторический вопрос |
|||
25
Asmody
24.09.17
✎
21:55
|
(0) В 1С есть просто Массив и ФиксированныйМассив. Первый – динамический, второй – статический (на самом деле, иммутабельный). Про массивы достаточно адекватно написано в СП.
|
|||
26
Asmody
24.09.17
✎
21:58
|
(15) И, кстати, называть среду VBA "удобной"… Не, ну может быть кому-то нравится в гамаке стоя на лыжах…
|
|||
27
Лефмихалыч
24.09.17
✎
22:16
|
(26) ты не знаешь, с чем он сравнивает
|
|||
28
Asmody
24.09.17
✎
22:37
|
(27) написано "ковырялся во многих IDE"…
|
|||
29
Злопчинский
24.09.17
✎
23:02
|
(28) типа "..я не гинеколог, но посмотреть могу.."..?
|
|||
30
Fram
25.09.17
✎
01:43
|
(0) как длина массива регулируется в 1с уже понял или нет ещё?
|
|||
31
VladZ
25.09.17
✎
04:43
|
(0) В 1с это не нужно.
|
|||
32
VladZ
25.09.17
✎
04:46
|
+31 Платформа 1С, в отличии от VB, это среда разработки программ бухгалтерского и управленческого учета. И греть голову вопросами "а какая тут у меня размерность массива?" - некогда. Тут все просто: добавил элемент - увеличил размерность. Удалил элемент - уменьшил.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |