Удаляет элемент из коллекции по индексу. Индексация начинается с 0.
Синтаксис
Удалить(<Элемент>)Удалить(<Индекс>)Полное описание, параметры и ограничения
ОписанияСистемЛинейныхУравнений.Удалить (SystemDescriptions.Delete)
ОписанияСистемЛинейныхУравнений (SystemDescriptions)
Удалить (Delete)
Доступен, начиная с версии 8.3.14.
Вариант синтаксиса: По элементу
Синтаксис:
Удалить(<Элемент>)
Параметры:
<Элемент> (обязательный)
Тип: ОписаниеСистемыЛинейныхУравнений.
Удаляемый элемент.
Описание варианта метода:
Удаляет переданный элемент из коллекции.
Вариант синтаксиса: По индексу
Синтаксис:
Удалить(<Индекс>)
Параметры:
<Индекс> (обязательный)
Индекс удаляемого элемента коллекции.
Описание:
Удаляет элемент из коллекции по индексу.
Индексация начинается с 0.
Доступность:
Сервер, толстый клиент, внешнее соединение.
Использование в версии:
Доступен, начиная с версии 8.3.14.
Методическая информация
Практические примеры
Подготовить два описания систем, убрать черновик и очистить только собственную коллекцию
Коллекция ОписанияСистем хранит настройки расчёта, не решения и не записи информационной базы.
Где и как запускать
Учебная база: создайте серверный общий модуль УчебныеЗадачи (флаг Сервер). Код без директив вставьте в тело процедуры ВыполнитьПример() Экспорт. Вызовите её из серверного обработчика команды учебной обработки. Не запускайте в рабочей базе.
Подготовка
Учебная база платформы 8.5.1.1343, серверный общий модуль УчебныеЗадачи. Фрагмент вставьте в тело ВыполнитьПример() Экспорт и вызовите из серверной команды собственной обработки.
Все таблицы создаются в памяти. Документы, регистры, расчёт себестоимости конфигурации и внешние сервисы не используются.
Номера уравнений и переменных 0 и 1 в этих задачах — собственные ключи. Имена колонок передаются явно; индексы коллекций начинаются с 0.
Не запускайте расчёт больших матриц на рабочем сервере по аналогии с уроком: здесь только две неизвестные и контроль заранее известного решения.
Узлы = Новый ТаблицаЗначений;
Узлы.Колонки.Добавить("Уравнение", Новый ОписаниеТипов("Число"));
Узлы.Колонки.Добавить("B1", Новый ОписаниеТипов("Число"));
Узлы.Колонки.Добавить("B2", Новый ОписаниеТипов("Число"));
Узел0 = Узлы.Добавить();
Узел0.Уравнение = 0;
Узел0.B1 = 5;
Узел0.B2 = 12;
Узел1 = Узлы.Добавить();
Узел1.Уравнение = 1;
Узел1.B1 = 1;
Узел1.B2 = 1;
Связи = Новый ТаблицаЗначений;
Связи.Колонки.Добавить("Уравнение", Новый ОписаниеТипов("Число"));
Связи.Колонки.Добавить("Переменная", Новый ОписаниеТипов("Число"));
Связи.Колонки.Добавить("A1", Новый ОписаниеТипов("Число"));
Связи.Колонки.Добавить("A2", Новый ОписаниеТипов("Число"));
Коэффициенты = Новый Массив;
Коэффициенты.Добавить(Новый Структура("Уравнение,Переменная,A1,A2", 0, 0, 2, 2));
Коэффициенты.Добавить(Новый Структура("Уравнение,Переменная,A1,A2", 0, 1, 1, 3));
Коэффициенты.Добавить(Новый Структура("Уравнение,Переменная,A1,A2", 1, 0, 1, 1));
Коэффициенты.Добавить(Новый Структура("Уравнение,Переменная,A1,A2", 1, 1, -1, -1));
Для Каждого Коэффициент Из Коэффициенты Цикл
НоваяСвязь = Связи.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСвязь, Коэффициент);
КонецЦикла;
Расчет = Новый РасчетСистемЛинейныхУравнений;
Расчет.ИсточникДанныхУзлов = Узлы;
Расчет.ИсточникДанныхСвязей = Связи;
Расчет.КолонкаУравненияВУзлах = "Уравнение";
Расчет.КолонкаУравненияВСвязях = "Уравнение";
Расчет.КолонкаПеременныеВСвязях = "Переменная";
Описание = Расчет.ОписанияСистем.Добавить();
Описание.КолонкаКоэффициентовВСвязях = "A1";
Описание.КолонкаКоэффициентовВУзлах = "B1";
Черновик = Расчет.ОписанияСистем.Добавить();
Черновик.КолонкаКоэффициентовВСвязях = "A2";
Черновик.КолонкаКоэффициентовВУзлах = "B2";
Сообщить(Расчет.ОписанияСистем.Количество() = 2);
Сообщить(Расчет.ОписанияСистем.Получить(0).КолонкаКоэффициентовВСвязях = "A1");
Расчет.ОписанияСистем.Удалить(Черновик);
Сообщить(Расчет.ОписанияСистем.Количество() = 1);
Замена = Расчет.ОписанияСистем.Добавить();
Замена.КолонкаКоэффициентовВСвязях = "A2";
Замена.КолонкаКоэффициентовВУзлах = "B2";
Расчет.ОписанияСистем.Удалить(1);
Сообщить(Расчет.ОписанияСистем.Количество() = 1);
Расчет.ОписанияСистем.Очистить();
Сообщить(Расчет.ОписанияСистем.Количество() = 0);
Сообщить(Узлы.Количество() = 2 И Связи.Количество() = 4);
Сообщить("Исходные таблицы остались в памяти; расчёт после очистки не запускаем.");Разбор по шагам
Создаём собственный объект расчёта с собственными таблицами и одним описанием A1/B1.
Добавляем черновик A2/B2, проверяем два элемента и доступ по индексу 0.
Удалить поддерживает объект элемента и индекс. Показываем оба варианта на разных собственных черновиках.
Очистить удаляет только описания этого объекта в памяти. Исходные таблицы узлов и связей остаются.
После очистки метод расчёта не вызываем: ему требуется хотя бы одно описание системы.
Как проверить результат
Шесть сравнений Истина: оба способа удаления оставляют одну систему, очистка — ноль, источники сохраняют 2/4 строки.
Ни один документ, регистр или внешний файл не изменяется.
Ожидаемый результат
Жизненный цикл коллекции настроек и область очистки объяснены без разрушения исходных данных.
На что обратить внимание
Очистить не заменяет заново сформированную корректную систему. Добавьте описание перед следующим расчётом.
Индекс коллекции начинается с 0, но колонки результата называются Решение1, Решение2: не смешивайте эти номера.
Не используйте удалённый объект описания как действующий элемент коллекции.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.