Как из массива убрать элемент 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); КонецЦикла; //но лучше сделать так: массив.Очистить();