|

Отбор, удаление, поиск строк в таблице значений (табличной части)


Содержание:

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” Тогда

        ЭтотОбъект.Товары.Удалить(НомераСтроки);

        Прервать; // Прерываем цикл после удаления

    КонецЕсли;

КонецЦикла;

Специалист компании ООО “Кодерлайн”,

Дубровина Елена


Помогла ли вам статья? Оставьте свой комментарий:

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

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

Блог про 1С:Предприятие

Copyright © 2024 TopKoder

Мы занимаемся внедрением и обслуживанием программных продуктов 1С.