Содержание:
1. Отбор строк в таблице значений
2. Поиск строки в таблице значений
3. Удаление строк из таблицы значений в 1С
4. Поиск и удаление строк в табличной части системы программы 1С: Предприятие
Перед тем как переходить к отбору, удалению и поиску строк, создадим таблицу значений 1С, с которой будем работать.
Таблица = Новый ТаблицаЗначений;
Таблица.Колонки.Добавить(“Код”);
Таблица.Колонки.Добавить(“Наименование”);
Таблица.Колонки.Добавить(“Количество”);
// Добавим несколько строк
НоваяСтрока = Таблица.Добавить();
НоваяСтрока.Код = “001”;
НоваяСтрока.Наименование = “Товар 1”;
НоваяСтрока.Количество = 10;
НоваяСтрока = Таблица.Добавить();
НоваяСтрока.Код = “002”;
НоваяСтрока.Наименование = “Товар 2”;
НоваяСтрока.Количество = 5;
НоваяСтрока = Таблица.Добавить();
НоваяСтрока.Код = “003”;
НоваяСтрока.Наименование = “Товар 3”;
НоваяСтрока.Количество = 15;
Отбор строк в таблице значений
Для отбора строк по какому-либо критерию можно использовать метод НайтиСтроки. Этот метод позволяет найти все строки, соответствующие заданным условиям.
// Найти все строки, где количество больше 5
ОтобранныеСтроки = Таблица.НайтиСтроки(Новый Структура(“Количество”, 5), Истина);
// Вывод отобранных строк
Для Каждого Строка Из ОтобранныеСтроки Цикл
Сообщить(Строка.Наименование + ” – ” + Строка.Количество);
КонецЦикла;
Альтернативный способ отбора — фильтрация:
Фильтрация таблицы позволяет работать с подмножество строк на основании критерия.
// Создаем отфильтрованную таблицу по условию
ОтфильтрованнаяТаблица = Таблица.Скопировать(Новый Структура(“Количество”, 10));
Поиск строки в таблице значений
Для поиска строки по одному или нескольким условиям можно использовать метод Найти в 1С. В отличие от НайтиСтроки, этот метод возвращает только первую найденную строку, соответствующую критерию.
// Найти строку, где Код = “002”
НайденнаяСтрока = Таблица.Найти(“Код”, “002”);
Если НайденнаяСтрока <> Неопределено Тогда
Сообщить(“Найден товар: ” + НайденнаяСтрока.Наименование);
Иначе
Сообщить(“Товар не найден.”);
КонецЕсли;
В данном примере метод Найти в 1С ищет первую строку, где значение поля Код равно “002”. Если строка найдена, она выводится в сообщении.
// Найти строку по нескольким условиям: Код = “003” и Количество = 15
НайденнаяСтрока = Таблица.Найти(Новый Структура(“Код”, “003”, “Количество”, 15));
Если НайденнаяСтрока <> Неопределено Тогда
Сообщить(“Найден товар: ” + НайденнаяСтрока.Наименование);
КонецЕсли;
Удаление строк из таблицы значений в 1С
Удалить строки из таблицы значений можно несколькими способами. Для этого существует метод Удалить.
// Найдем строку с кодом “001” и удалим ее
СтрокаДляУдаления = Таблица.Найти(“Код”, “001”);
Если СтрокаДляУдаления <> Неопределено Тогда
Таблица.Удалить(СтрокаДляУдаления);
Сообщить(“Строка удалена.”);
Иначе
Сообщить(“Строка не найдена.”);
КонецЕсли;
Удаление нескольких строк:
Если нужно удалить несколько строк, соответствующих определенному условию, можно использовать метод НайтиСтроки для отбора, а затем последовательно удалять строки.
// Найдем все строки, где количество меньше 10
СтрокиДляУдаления = Таблица.НайтиСтроки(Новый Структура(“Количество”, 10), Ложь);
// Удалим все найденные строки
Для Каждого Строка Из СтрокиДляУдаления Цикл
Таблица.Удалить(Строка);
КонецЦикла;
Сообщить(“Удаление завершено.”);
Удаление по индексу:
Можно также удалять строки по их индексу в таблице:
// Удалим первую строку (индекс 0)
Таблица.Удалить(0);
Сообщить(“Первая строка удалена.”);
Поиск и удаление строк в табличной части системы программы 1С: Предприятие
Работа с табличной частью документа схожа с таблицей значений. Однако доступ к табличной части осуществляется через объект документа, а строки табличной части хранятся в связанном объекте.
// Обращаемся к табличной части документа “Товары”
Для Каждого Строка Из ЭтотОбъект.Товары Цикл
Если Строка.Код = “002” Тогда
Сообщить(“Товар найден: ” + Строка.Наименование);
КонецЕсли;
КонецЦикла;
Удаление строки из табличной части:
// Удалим строку, если Код = “003”
Для НомераСтроки = 0 По ЭтотОбъект.Товары.Количество() – 1 Цикл
Если ЭтотОбъект.Товары[НомераСтроки].Код = “003” Тогда
ЭтотОбъект.Товары.Удалить(НомераСтроки);
Прервать; // Прерываем цикл после удаления
КонецЕсли;
КонецЦикла;
Специалист компании ООО “Кодерлайн”,
Дубровина Елена
Добавить комментарий