Массив.Добавить

Методы · Add

Добавляет элемент в конец массива.

Синтаксис

Добавить(<Значение>)

Примеры платформы

Массив.Добавить("Первый");
Массив.Добавить("Второй");
Полное описание, параметры и ограничения

Массив.Добавить (Array.Add)

Массив (Array)

Добавить (Add)

Доступен, начиная с версии 8.0.

Синтаксис:
Добавить(<Значение>)
Параметры:

<Значение> (необязательный)
Тип: Произвольный.
Добавляемое значение. Если не указан, то будет добавлено значение типа Неопределено.
Описание:

Добавляет элемент в конец массива.

Доступность:

Тонкий клиент, веб-клиент, мобильный клиент, сервер, толстый клиент, внешнее соединение, мобильное приложение (клиент), мобильное приложение (сервер), мобильный автономный сервер.

Примечание:
При добавлении количество элементов массива увеличивается на 1.
Пример:

Массив.Добавить("Первый");
Массив.Добавить("Второй");

Использование в версии:

Доступен, начиная с версии 8.0.

Методическая информация

Практические примеры

Изменить порядок товаров в массиве без поиска по названию

Показывает разницу между добавлением в конец, вставкой по индексу и заменой существующего значения. Исходные данные создаются прямо в коде.

Где и как запускать

Фрагмент внутри процедуры в клиентском или серверном контексте, поддерживающем Массив.

Подготовка

  1. Создайте учебную команду или процедуру. Поместите фрагмент внутрь её тела.

  2. Внешние файлы и объекты конфигурации не нужны: массив создаётся в памяти.

Товары = Новый Массив;
Товары.Добавить("Книга");
Товары.Добавить("Ручка");
Товары.Вставить(1, "Тетрадь");
Товары.Установить(2, "Карандаш");
Сообщить(Товары.Получить(1));
Сообщить(Товары.Количество());
Сообщить(Товары.ВГраница());
Для Каждого Товар Из Товары Цикл
    Сообщить(Товар);
КонецЦикла;

Разбор по шагам

  1. Добавить помещает два значения в конец массива: они занимают индексы 0 и 1.

  2. Вставить с индексом 1 помещает Тетрадь перед Ручка; прежняя ручка перемещается на индекс 2.

  3. Установить заменяет значение по индексу 2, не увеличивая количество элементов.

  4. Получить(1) возвращает Тетрадь. Количество равно 3, а ВГраница — 2, поскольку индексы начинаются с нуля.

  5. Цикл выводит конечный порядок элементов.

Как проверить результат

  1. Первыми сообщениями должны быть Тетрадь, 3 и 2, затем Книга, Тетрадь, Карандаш.

  2. Замените индекс Установить на 1: количество останется 3, но изменится второй элемент.

  3. В отладчике проверьте индексы сразу после Вставить: ранее существовавшие элементы сдвинулись.

Ожидаемый результат

Конечный массив: Книга, Тетрадь, Карандаш. Вставка меняет длину, замена — нет.

На что обратить внимание

  1. Нельзя читать или заменять элемент с индексом, выходящим за границы массива.

  2. Не путайте порядковый номер для пользователя (первый, второй) с индексом (0, 1).

Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.

Разморозить вложенный массив и увидеть границу копирования структуры

Конструктор Массив из ФиксированныйМассив рекурсивно преобразует вложенные фиксированные массивы. Это не обещание глубоко клонировать произвольные структуры внутри коллекции.

Где и как запускать

Учебная база: создайте серверный общий модуль УчебныеЗадачи (флаг Сервер). Код без директив вставьте в тело процедуры ВыполнитьПример() Экспорт. Вызовите её из серверного обработчика команды учебной обработки. Не запускайте в рабочей базе.

Подготовка

  1. Выполняйте в серверном общем модуле учебной базы. Все коллекции и вложенные значения создаются кодом; метаданные, файлы и интернет не нужны.

  2. Индексы массивов начинаются с 0. Ключ соответствия — отдельное значение и не обязательно совпадает с индексом/порядком обхода.

СтрокаПлана = Новый Массив;
СтрокаПлана.Добавить(10);
СтрокаПлана.Добавить(12);
ФиксированнаяСтрока = Новый ФиксированныйМассив(СтрокаПлана);
ОбщиеДанные = Новый Структура("Товар,Количество", "Книга", 3);
Источник = Новый Массив;
Источник.Добавить(ФиксированнаяСтрока);
Источник.Добавить(ОбщиеДанные);
Фиксированный = Новый ФиксированныйМассив(Источник);
Рабочий = Новый Массив(Фиксированный);
Сообщить(ТипЗнч(Фиксированный[0]) = Тип("ФиксированныйМассив"));
Сообщить(ТипЗнч(Рабочий[0]) = Тип("Массив"));
Рабочий[0][0] = 99;
Сообщить(Рабочий[0][0] = 99);
Сообщить(Фиксированный[0][0] = 10);
Сообщить(СтрокаПлана[0] = 10);
Рабочий[1].Количество = 5;
Сообщить(ОбщиеДанные.Количество = 5);
Сообщить(Фиксированный[1].Количество = 5);
Рабочий.Добавить("Только рабочий контейнер");
Сообщить(Рабочий.Количество() = 3);
Сообщить(Фиксированный.Количество() = 2);
Сообщить(Источник.Количество() = 2);

Разбор по шагам

  1. Вложенную строку заранее превращаем в ФиксированныйМассив. Отдельно создаём изменяемую структуру товара и помещаем оба значения во внешний фиксированный массив.

  2. Новый Массив(Фиксированный) создаёт изменяемый внешний контейнер. Вложенный фиксированный массив становится отдельным обычным массивом по документированному рекурсивному преобразованию.

  3. Меняем число вложенного рабочего массива на 99: фиксированный источник сохраняет 10.

  4. Меняем количество в структуре: это тот же вложенный изменяемый объект, поэтому изменение видно через исходную структуру и фиксированный контейнер.

  5. Добавление нового элемента меняет размер только рабочего внешнего массива.

Как проверить результат

  1. Все десять логических сообщений дают Истина.

  2. Числовая строка источника остаётся 10,12, рабочая становится 99,12.

  3. Количество структуры становится 5 в обоих представлениях; размеры рабочих/исходных контейнеров 3 и 2.

Ожидаемый результат

Разобрано специальное рекурсивное преобразование массивов без ложного обещания полной неизменяемости всех объектов.

На что обратить внимание

  1. Фиксированный контейнер не делает произвольный вложенный изменяемый объект неизменяемым.

  2. Для полностью независимого товара создайте новую структуру и явно скопируйте нужные поля; не заменяйте это обещанием «глубокой копии всего».

  3. Не присваивайте Фиксированный[0][0]=99: вложенная строка в источнике намеренно фиксированная.

Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.

Не хотите разбираться сами?

Адаптируем это решение под вашу базу. Оценка бесплатно.

Оставить задачу

1С, 1С:Предприятие — товарные знаки ООО «1С». Сайт не является официальным представительством фирмы «1С» и не аффилирован с ней.