Как из массива убрать элемент 1с
Перейти к содержимому

Как из массива убрать элемент 1с

  • автор:

Как из массива убрать элемент 1с

Если ТипЗнч(ВыбСтрока) = Тип(«Массив») Тогда
КолвоЭлементов = ВыбСтрока.Количество();
Индекс = 0;
Для н = 1 По КолвоЭлементов Цикл

Номенклатура = ВыбСтрока[Индекс].Номенклатура;
ЕдиницаИзмерения = ВыбСтрока[Индекс].ЕдиницаИзмерения;
Цена = ВыбСтрока[Индекс].Цена;
Лимит = ВыбСтрока[Индекс].Лимит;
ВалютаЦены = ВыбСтрока[Индекс].Валюта;
Характеристика = ВыбСтрока[Индекс].ХарактеристикаНоменклатуры;
Склад = ВыбСтрока[Индекс].Склад;
Серия = Справочники.СерииНоменклатуры.ПустаяСсылка();
Качество = ВыбСтрока[Индекс].Качество;

Индекс = Индекс + 1;
КонецЦикла

После удаления выборка сбивается.

Если ТипЗнч(ВыбСтрока) = Тип(«Массив») Тогда
КолвоЭлементов = ВыбСтрока.Количество();
Индекс = 0;
Для н = 1 По КолвоЭлементов Цикл
Индекс = КолвоЭлементов — н;

Номенклатура = ВыбСтрока[Индекс].Номенклатура;
ЕдиницаИзмерения = ВыбСтрока[Индекс].ЕдиницаИзмерения;
Цена = ВыбСтрока[Индекс].Цена;
Лимит = ВыбСтрока[Индекс].Лимит;
ВалютаЦены = ВыбСтрока[Индекс].Валюта;
Характеристика = ВыбСтрока[Индекс].ХарактеристикаНоменклатуры;
Склад = ВыбСтрока[Индекс].Склад;
Серия = Справочники.СерииНоменклатуры.ПустаяСсылка();
Качество = ВыбСтрока[Индекс].Качество;

Если ТипЗнч(ВыбСтрока) = Тип(«Массив») Тогда
КолвоЭлементов = ВыбСтрока.Количество();
Индекс = 0;
Для н = 1 По КолвоЭлементов Цикл

Номенклатура = ВыбСтрока[Индекс].Номенклатура;
ЕдиницаИзмерения = ВыбСтрока[Индекс].ЕдиницаИзмерения;
Цена = ВыбСтрока[Индекс].Цена;
Лимит = ВыбСтрока[Индекс].Лимит;
ВалютаЦены = ВыбСтрока[Индекс].Валюта;
Характеристика = ВыбСтрока[Индекс].ХарактеристикаНоменклатуры;
Склад = ВыбСтрока[Индекс].Склад;
Серия = Справочники.СерииНоменклатуры.ПустаяСсылка();
Качество = ВыбСтрока[Индекс].Качество;

Индекс = Индекс + 1;
КонецЦикла

Если НужноУдалить Тогда
ВыбСтрока.Удалить(Индекс);
Иначе
Индекс = Индекс+1;
КонецЕси;

Так это получается выборка в обратном порядке.
(4) ессно или см. (3)
ОФФ: чем Вграница() хуже Количество()-1 ?

(6) Много функций надо помнить.
Вграница() есть только у Массива, зато Количество() есть у всех коллекций значений.

Удаление элементов коллекции в цикле
———————————————————————————
При необходимости удаления некоторых элементов из какой-либо коллекции элементов, обладающей свойством неявного сдвига элементов при удалении (например, таблица значений, набор записей регистра и т.д.), необходимо использовать следующий алгоритм:

КолвоЭлементовКоллекции = Коллекция.Количество();
Для ОбратныйИндекс = 1 По КолвоЭлементовКоллекции Цикл
ЭлементКоллекции = Коллекция[КолвоЭлементовКоллекции — ОбратныйИндекс];

Если Тогда
Коллекция.Удалить(ЭлементКоллекции);
КонецЕсли;

Где Коллекция – обрабатываемая коллекция элементов.

предложу екзотический варинт (иногда применяю. ):

МассивКУдалению = Новый Массив();
Для Каждого эл из ТЗ Цикл
Если Тогда
МассивКУдалению.Добавить(Эл);
КонецЕсли;
КонецЦикла;

Для Каждого эл из МассивКУдалению Цикл
ТЗ.Удалить(эл);
КонецЦикла;

УдалитьЗначениеИзМассива (БСП)

  • Удалить значение из массива. Удаляет одно значение из массива.

    // Удаляет одно значение из массива. // // Параметры: // Массив - Массив - массив, из которого необходимо удалить значение; // Значение - Массив - удаляемое значение из массива. // Процедура УдалитьЗначениеИзМассива(Массив, Значение) Экспорт Индекс = Массив.Найти(Значение); Если Индекс <> Неопределено Тогда Массив.Удалить(Индекс); КонецЕсли; КонецПроцедуры /////////////////////////////////////////////////////////////////////////////////////////////////////// // Copyright (c) 2019, ООО 1С-Софт // Все права защищены. Эта программа и сопроводительные материалы предоставляются // в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) // Текст лицензии доступен по ссылке: // https://creativecommons.org/licenses/by/4.0/legalcode ///////////////////////////////////////////////////////////////////////////////////////////////////////
    // Удаляет одно значение из массива. // // Параметры: // Массив - Массив - массив, из которого необходимо удалить значение; // Значение - Массив - удаляемое значение из массива. // Процедура УдалитьЗначениеИзМассива(Массив, Значение) Экспорт Индекс = Массив.Найти(Значение); Если Индекс <> Неопределено Тогда Массив.Удалить(Индекс); КонецЕсли; КонецПроцедуры /////////////////////////////////////////////////////////////////////////////////////////////////////// // Copyright (c) 2019, ООО 1С-Софт // Все права защищены. Эта программа и сопроводительные материалы предоставляются // в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) // Текст лицензии доступен по ссылке: // https://creativecommons.org/licenses/by/4.0/legalcode ///////////////////////////////////////////////////////////////////////////////////////////////////////

    Как из массива убрать элемент 1с

    « Как стать программистом 1С » Язык 1С » Массив 1С Очистить — удаление всех значений

    Массив 1С Очистить — удаление всех значений

    Метод 1С Массив.Очистить() удаляет из массива все «ячейки» со всеми значениями. Аналогичен пересозданию массива.

    Метод 1С Массив.Очистить() – память, занятая процессом Windows 1cv8.exe не освобождается, но (!) используется повторно (добавление новых элементов после очистки не повысит требования памяти).
    мЗначений = Новый Массив(3);
    мЗначений.Очистить();

    При пересоздании массива – память, занятая процессом освобождается сразу.
    мЗначений = Новый Массив(3);
    //используем массив
    мЗначений = Новый Массив(3); //в этой строчке мы пересоздаем массив, старый «исчезает»

    Пример работы 1С Массив.Очистить():
    мЗначений = Новый Массив();
    мЗначений.Добавить(10);
    мЗначений.Добавить(20);
    мЗначений.Добавить(30);
    Сообщить( мЗначений.Количество() ); //3 элемента массива
    мЗначений.Очистить();
    Сообщить( мЗначений.Количество() ); //0 элементов массива

    мЗначений = Новый Массив(3);
    Сообщить( мЗначений.Количество() ); //3 элемента массива
    мЗначений.Очистить();
    Сообщить( мЗначений.Количество() ); //0 элементов массива (т.е. удалены значения, определенные при создании)

    Проголосовать за этот пост:

    Массив. Метод Удалить()

    Метод Удалить() удаляет элемент массива по указанному индексу. Количество элементов индекса уменьшается на 1. Если указанный в параметре индекс больше, чем возвращает метод ВГраница(), будет вызвано исключение «Индекс находится за границами массива» .

    Доступность

    Версия Поддержка
    8.1 Сервер, Клиент, Внешнее соединение
    8.2 Сервер, Толстый клиент, Тонкий клиент, Веб-клиент, Внешнее соединение
    8.3 Сервер, Толстый клиент, Тонкий клиент, Веб-клиент, Внешнее соединение, Мобильный автономный сервер, Мобильный клиент, Мобильное приложение

    Пример использования

    Пример кода с использованием метода Удалить() :

    массив = Новый Массив; массив.Добавить(1); массив.Добавить(2); //удалить найденный элемент найдЭлт = массив.Найти(1); массив.Удалить(найдЭлт); //удалить первые 3 Для Инд = 0 По 3 Цикл Если массив.Количество() = 0 Тогда Прервать; КонецЕсли; массив.Удалить(0); КонецЦикла; //удалить все Пока массив.Количество() > 0 Цикл массив.Удалить(0); КонецЦикла; //но лучше сделать так: массив.Очистить(); 

    Добавить комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *