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


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

Как изменить размер массива / Есть ли в 1С аналог ReDim Preserve из VB?

Как изменить размер массива / Есть ли в 1С аналог ReDim Preserve из VB?
Я
   Dartanyan
 
24.09.17 - 10:26
8.1
Команды на VBA(Excel) следующая:
1) ReDim M(1 то 12)
- возможно ли создать массив с заданным диапазоном индексов(1 To 12) в 1С. Если да, то как?

2) ReDim Preserve Arr(12) - расширяется или уменьшается массив и значения элементов сохраняется
- есть ли возможность расширить/уменьшить массив(изменить размерность) без потери данных? Т.е. без создания "Новый" и без Добавлять() в цикле. Может есть более простой метод?

Спасибо.
 
 
   VS-1976
 
1 - 24.09.17 - 10:29
(0) Нет такого. Есть только Очистить() с потерей всех данных.
   bodri
 
2 - 24.09.17 - 10:33
(0) Зачем?
П.С. Просто интересно когда это может понадобиться.
   Dotoshin
 
3 - 24.09.17 - 10:34
(0) А в чем смысл этого действия?
   VS-1976
 
4 - 24.09.17 - 10:35
(2) Это специфика basic человек живёт ещё его ограничениями. Ему нужно воспринимать Массив как объект Collection тогда у него всё встанет на место.
   bodri
 
5 - 24.09.17 - 10:39
в СП нашел такое:

Массив (Array)
По количеству элементов
Синтаксис:

Новый Массив(<КоличествоЭлементов1>,...,<КоличествоЭлементовN>)
Параметры:

<КоличествоЭлементов1>,...,<КоличествоЭлементовN> (необязательный)

Тип: Число.
Каждый параметр определяет количество элементов массива в соответствующем измерении. Может задаваться неограниченное количество параметров. Если ни один параметр не указан, то создается одномерный массив с нулевым количеством элементов.
Описание:

Создает массив из указанного количества элементов. Если задано несколько параметров, то будет создан массив, элементами которого являются массивы (и т.д. в зависимости от количества параметров). Фактически конструктор позволяет создать массивы массивов, которые могут являться аналогом многомерного массива.
Пример:

// массив с 0 элементами

Массив1 = Новый Массив;

// массив из 10 элементов, 

// каждый из которых является массивом из 2 элементов,
// каждый из которых является массивом из 4 элементов

Массив2 = Новый Массив(10,2,4);
   jsmith82
 
6 - 24.09.17 - 10:51
в 1ске же динамические массивы
   jsmith82
 
7 - 24.09.17 - 10:51
в отличие от 7-ки (насколько помню)
   Смотрящий
 
8 - 24.09.17 - 11:17
(6) Как у 1совского массива сменить размерность ?
   Xapac
 
9 - 24.09.17 - 11:22
(8)Добавляй элемент
   Chameleon1980
 
10 - 24.09.17 - 11:26
(0) с годовщиной !
 
 Рекламное место пустует
   Dartanyan
 
11 - 24.09.17 - 11:30
(10) А! понял. Спасибо.

(2) Динамический массив
Не знаю как в 1с, но как правило массивы самые быстрые. Скорее всего понадобится, когда столкнетесь с анализом данных
   jsmith82
 
12 - 24.09.17 - 11:32
(11) Он редко тут появляется
   Dartanyan
 
13 - 24.09.17 - 11:47
(12) да. Практически всегда отсутствую. Но часто нахожу уже готовые ответы именно здесь. И пользуясь случаем, скажу спасибо всем, кто не ленится и делится опытом с нубами, вроде меня. Как говорится: Респект и уважуха!
   breezee
 
14 - 24.09.17 - 13:42
(0) Как вы в этом чертовом ВБА вообще работает? Чтобы создать динамический массив в ВБА надо:
1)Создать динамический массив
2)Переопределить этот динамический массив в конечный.
Это же брел
А еще там нет возможности посмотреть все методы объекта через вычисления выражения. Это вообще жесть
   Dartanyan
 
15 - 24.09.17 - 16:59
(14)
я бы вам сказал в грубой форме,... ну да ладно.
1) а в 1с не нужно создавать массив?
2) во-первых, если нужно не "конечный", то есть Collection, например
во-вторых, это стоит рассматривать, как выделение нужного обьема памяти, которая выделяется под все обьекты. Разроботчики языка 1с, просто, делают это за вас, что естественно сказывается на быстродействии. И Массив.Добавить() = ReDim Массив(Ubound(Массив)+1). Вы этого не понимаете, потому что не знакомы с реальными языками программирования.
"А еще там нет возможности" - есть всё и намного больше, просто, вы не там смотрели и не умеете правильно обьявлять переменные(начальный уровень программирования).
Самое большое преимущество VBA в том, что можно быстро набросать, проверить, посмотреть результаты. Там редактировать код можно по ходу выполнения(есть ошибка - исправил, выполнил, перешел на след.строку и тд) и не нужно перезапускать ничего. В отдельном окне представлены все переменные и их значения(это типа Табло, но сразу со всеми переменными модуля и функции). Да че рассказывать...
Я ковырялся во многих IDE для разных языков программирования и скажу, в чём - в чём, но в удобстве программирования у Майкрософта всё продумано чётко. Так что, когда захотите написать какой-то VBS, открывайте Excel и наслаждайтесь.
   Филиал-msk
 
16 - 24.09.17 - 17:04
(15) > Вы этого не понимаете, потому что не знакомы с реальными языками программирования.

Настоящий гасконец!
   DDwe
 
17 - 24.09.17 - 17:06
(15) "не понимаете, потому что не знакомы с реальными языками программирования" жесть!!))))
   Dartanyan
 
18 - 24.09.17 - 17:21
(16) Я что-то неправильно написал? Память не выделяется в зависимости от типа переменной и их количества в массиве в реальных языках? VB, JS, 1с и тп - вертуальные. Это не я придумал
   VS-1976
 
19 - 24.09.17 - 17:37
(15) По поводу реального языка... нужно иногда распальцовку убирать...
(18) не виртуальные, а интерпретируемые
Массив в 1С это алгоритм списка, он гораздо луче чем redim. redim в vb это анахронизм оставленный для совместимости.
   Ненавижу 1С
 
20 - 24.09.17 - 17:43
А еще бывает Count и Capacity, но боюсь, для 1С это слабо актуально
   Dartanyan
 
21 - 24.09.17 - 17:49
(19) У меня не распальцовка, а ответ на "ты лох" в "развернутом" виде.
Гораздо лучше чем? Вы наверное хотели сказать "удобнее". Может быть. Хотя речь даже не об этом, а о том, что redim и добавить() выполняют одно и тоже - увеличивают размер мессива.
   VS-1976
 
22 - 24.09.17 - 18:12
(21) Удобнее конечно
   Фрэнки
 
23 - 24.09.17 - 18:12
(21)// а о том, что redim и добавить() выполняют одно и тоже


это удалось достоверно установить?
   breezee
 
24 - 24.09.17 - 18:49
(15) >Реальный язык программирования
Да, вы правы, на ассемблере не пишу, да и в двоичном коде ничего толкового не не напишу.
Вы же знаете, что разные языки для разного нужны? Зачем мне работа с памятью при создании скрипотв для ворда? Это не риторический вопрос
   Asmody
 
25 - 24.09.17 - 21:55
(0) В 1С есть просто Массив и ФиксированныйМассив. Первый – динамический, второй – статический (на самом деле, иммутабельный). Про массивы достаточно адекватно написано в СП.
   Asmody
 
26 - 24.09.17 - 21:58
(15) И, кстати, называть среду VBA "удобной"… Не, ну может быть кому-то нравится в гамаке стоя на лыжах…
   Лефмихалыч
 
27 - 24.09.17 - 22:16
(26) ты не знаешь, с чем он сравнивает
   Asmody
 
28 - 24.09.17 - 22:37
(27) написано "ковырялся во многих IDE"…
   Злопчинский
 
29 - 24.09.17 - 23:02
(28) типа "..я не гинеколог, но посмотреть могу.."..?
   Fram
 
30 - 25.09.17 - 01:43
(0) как длина массива регулируется в 1с уже понял или нет ещё?
   VladZ
 
31 - 25.09.17 - 04:43
(0) В 1с это не нужно.
   VladZ
 
32 - 25.09.17 - 04:46
+31 Платформа 1С, в отличии от VB, это среда разработки программ бухгалтерского и управленческого учета. И греть голову вопросами "а какая тут у меня размерность массива?" - некогда. Тут все просто: добавил элемент - увеличил размерность. Удалил элемент - уменьшил.


Список тем форума
Рекламное место пустует  Рекламное место пустует
Компьютеры — это как велосипед. Только для нашего сознания. Стив Джобс
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует