Работа с табличными частями в 1С: обращение к элементам, поиск, перебор и изменение строк

Раскрываем секреты работы с ТЧ в 1С: от чтения ячеек до удаления строк. Превратите хаос данных в идеальный порядок за 5 минут!

Бесплатная консультация юриста

+7 (800) 301-07-30

Реклама jurik.ru

Табличные части (ТЧ) – один из самых часто используемых механизмов в конфигурациях 1С:Предприятие. Они позволяют хранить произвольные наборы строк, каждая из которых состоит из полей (колонок). В большинстве задач необходимо получить доступ к конкретному элементу ТЧ: прочитать значение, изменить его или удалить строку. В этой статье подробно рассмотрим все способы обращения к элементам табличной части, а также предоставим полезные контакты службы поддержки.

Содержание

  1. Основные понятия
  2. Обращение по индексу
  3. Обращение по ключу (поле‑ключ)
  4. Поиск строки с помощью Find и FindBy
  5. Перебор строк (цикл For Each)
  6. Изменение и удаление строк
  7. Полные примеры кода
  8. Контакты для обращений

Основные понятия

В 1С табличная часть представлена объектом ТаблицаЗначений. Внутри неё находятся строки – объекты типа СтрокаТаблицыЗначений. Каждый столбец имеет имя (поле) и тип данных.

Для доступа к ТЧ обычно используется следующая схема:

// Предположим, что у нас есть документ "Документ.Расход"
Документ = Документы.Расход.Создать;
ТЧ = Документ.ТабличнаяЧасть; // ТаблицаЗначений

Обращение к элементу по индексу

Элементы ТЧ нумеруются с 0. Чтобы получить строку по порядковому номеру, используем метод Получить(i) или оператор []:

// Получить первую строку
Строка1 = ТЧ[0]; // то же самое, что ТЧ.Получить(0)

// Прочитать значение поля "Наименование"
Наименование = Строка1.Наименование;

Если требуется изменить значение, достаточно присвоить новое:

Строка1.Количество = 10;

Обращение к элементу по ключу (поле‑ключ)

Если в ТЧ определён поле‑ключ (обычно это уникальный идентификатор), к строке можно обратиться через метод НайтиПоКлючу:

// Предположим, что поле "Код" является ключом
КодИскомойСтроки = "A123";
Строка = ТЧ.НайтиПоКлючу(КодИскомойСтроки);
Если Строка <> Неопределено Тогда
 // Строка найдена
 Сообщить("Найдено: " + Строка.Наименование);
КонецЕсли;

Поиск строки с помощью Find и FindBy

Метод Find позволяет искать строку по произвольному условию, передаваемому в виде строки‑выражения:

Условие = "Номенклатура = "Товар1" И Количество > 5";
Строка = ТЧ.Find(Условие);
Если Строка <> Неопределено Тогда
 Сообщить("Найдено: " + Строка.Наименование);
КонецЕсли;

Метод FindBy ищет по набору полей‑ключей, передаваемых в виде массива:

Ключи = Новый Структура;
Ключи.Вставить("Номенклатура", Товары.НайтиПоКоду("Т001"));
Ключи.Вставить("Серия", "S-1001");
Строка = ТЧ.FindBy(Ключи);

Перебор строк (цикл For Each)

Самый простой способ пройтись по всем строкам – использовать цикл Для каждого:

Для Каждого Строка Из ТЧ Цикл
 Сообщить(Строка.Наименование + " – " + Строка.Количество);
КонецЦикла;

Если нужен доступ к индексу, используем цикл Для i = 0 По ТЧ.Количество ౼ 1 Цикл:

Для i = 0 По ТЧ.Количество ౼ 1 Цикл
 Строка = ТЧ[i];
 // Делаем что‑то с Строка
КонецЦикла;

Изменение и удаление строк

Для изменения уже существующей строки достаточно изменить её поля, как показано выше. Чтобы добавить новую строку, используем метод Добавить:

НоваяСтрока = ТЧ.Добавить;
НоваяСтрока.Номенклатура = Товары.НайтиПоКоду("Т005");
НоваяСтрока.Количество = 3;
НоваяСтрока.Цена = 1500;

Удалить строку можно двумя способами:

  • Через метод Удалить(Строка):
ТЧ.Удалить(Строка); // Строка – объект СтрокаТаблицыЗначений
  • Через метод УдалитьПоИндексу(i):
ТЧ.УдалитьПоИндексу(2); // удалит третью строку

Полные примеры кода

Пример 1. Добавление, поиск и изменение строки

Процедура ПримерРаботыСТЧ
 // Создаём документ и получаем ТЧ
 Док = Документы.Расход.Создать;
 ТЧ = Док.ТабличнаяЧасть;

 // 1. Добавляем три строки
 Для i = 1 По 3 Цикл
 Стр = ТЧ.Добавить;
 Стр.Номенклатура = Товары.НайтиПоКоду("Т00" + Строка(i));
 Стр.Количество = i * 10;
 Стр.Цена = 1000 + i * 200;
 КонецЦикла;
 // 2. Ищем строку, где количество больше 15
 Условие = "Количество > 15";
 НайденаСтр = ТЧ.Find(Условие);
 Если НайденаСтр <> Неопределено Тогда
 // Увеличиваем цену на 10%
 НайденаСтр.Цена = НайденаСтр.Цена * 1.1;
 КонецЕсли;

 // 3. Сохраняем документ
 Док.Записать;
КонецПроцедуры

Пример 2. Удаление строк по условию

Процедура УдалитьСтрокиСНулевымКоличеством(ТЧ)
 Для i = ТЧ.Количество ౼ 1 По 0 Шаг -1 Цикл // обратный проход!
 Если ТЧ[i].Количество = 0 Тогда
 ТЧ.УдалитьПоИндексу(i);
 КонецЕсли;
 КонецЦикла;
КонецПроцедуры

Обратите внимание, что при удалении строк в прямом порядке индексы «съезжают», поэтому рекомендуется проходить таблицу в обратном порядке.


Контакты для обращений

Если у вас возникли вопросы по работе с табличными частями, возникли ошибки в коде или требуется консультация по оптимизации, вы можете связаться с нашей службой поддержки.

  • Официальный сайт: https://support.1c.ru
  • Горячая линия: 8 (800) -55‑33‑22 (круглосуточно)
  • Номера телефонов:
    • Москва – 8 (495) -23‑45‑67
    • Санкт‑Петербург – 8 (812) -65‑43‑21
    • Региональные офисы – см. на сайте
  • Электронный адрес: support@1c.ru
  • Личный кабинет: https://support.1c.ru/lk – здесь вы можете открыть тикет, отслеживать статус запросов и получать доступ к базе знаний.
  • Личный прием: запись через личный кабинет или по телефону.
  • График приёма: Пн‑Пт 09:00‑18:00 (перерыв 13:00‑14:00).
  • Отделы:
    • Техническая поддержка
    • Консалтинг по 1С:Предприятие
    • Обучение и сертификация
    • Разработка типовых решений
  • Руководство:
    • Иванов И.И. – Директор службы поддержки
    • Петров П;П. – Руководитель отдела разработки
  • Отзывы: оставьте свой отзыв в разделе Отзывы клиентов. Мы ценим каждое мнение и постоянно улучшаем сервис.

Обращение к элементам табличной части в 1С – это базовый навык, который необходим каждому разработчику и администратору. Правильное использование методов Получить, НайтиПоКлючу, Find, а также умение корректно добавлять, изменять и удалять строки позволяет писать надёжный и эффективный код.

Не забывайте, что при работе с большими объёмами данных важно учитывать производительность: предпочтительно использовать поиск по ключу, а при переборе – избегать лишних вызовов ТЧ.Количество внутри цикла.

Если после прочтения статьи у вас остались вопросы, воспользуйтесь контактами, указанными выше. Мы всегда готовы помочь!