Имя: Пароль:
1C
1С v8
Как изменить размер массива / Есть ли в 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, это среда разработки программ бухгалтерского и управленческого учета. И греть голову вопросами "а какая тут у меня размерность массива?" - некогда. Тут все просто: добавил элемент - увеличил размерность. Удалил элемент - уменьшил.
Программист всегда исправляет последнюю ошибку.