Сортировка
У Массив нет метода сортировки. Чтобы отсортировать значения — переложить в СписокЗначений (или ТаблицаЗначений) и обратно:
Список = Новый СписокЗначений;
Для Каждого Элемент Из Массив Цикл
Список.Добавить(Элемент);
КонецЦикла;
Список.СортироватьПоЗначению();
МассивОтсортированный = Список.ВыгрузитьЗначения();Передача по ссылке
Массив — ссылочный тип. Передан в процедуру/функцию — там та же ссылка, не копия. Мутация содержимого внутри (Добавить, Удалить, Очистить, Установить) видна и снаружи.
Процедура Мутировать(Массив)
Массив.Добавить(2); // меняет содержимое — видно снаружи
КонецПроцедуры
Процедура Переприсвоить(Знач Массив)
Массив = Новый Массив; // это НЕ уходит наружу — локальная переменная указала на другой объект
КонецПроцедуры
МойМассив = Новый Массив;
МойМассив.Добавить(1);
Мутировать(МойМассив); // МойМассив: [1, 2]
Переприсвоить(МойМассив); // МойМассив всё ещё [1, 2]Знач защищает только от переприсвоения параметра, а не от мутации его содержимого — это тот же объект. Нужна независимая копия — копировать явно на входе, см. Копирование массива.
Сравнение
Массив1 = Массив2 сравнивает ссылки, а не содержимое. Два массива с одинаковыми элементами, но созданные раздельно, не равны:
Массив1 = Новый Массив;
Массив1.Добавить(1);
Массив2 = Новый Массив;
Массив2.Добавить(1);
Массив1 = Массив2; // Ложь — разные объекты, хотя содержимое одинаковоеПоэлементного сравнения «из коробки» нет — сравнивать вручную циклом.
Проверка типа
ТипЗнч(Массив) = Тип("Массив"); // Истина, если Массив — именно МассивПригодится, когда переменная может прийти как одиночное значение или как массив значений — типовая развилка в 1С.
← Массивы