Табличные части в 1С: как искать, изменять и удалять строки

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

+7 (800) 301-07-30

Реклама jurik.ru

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

  • Как правильно обратиться к колонке и строке табличной части;
  • Какие методы и свойства использовать для поиска и работы со строками;
  • Примеры кода на языке 1С (1С:Предприятие 8.3);
  • Типичные ошибки и способы их избежать.

Общая схема обращения к табличной части

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

  1. Объект – документ, справочник, регистр и т.п.;
  2. Имя табличной части – задаётся в метаданных (например, Товары);
  3. Имя колонки – реквизит строки (например, Номенклатура, Количество).

Обращение выглядит так:

Документ = Документы.РасходнаяНакладная.ПолучитьОбъект(Идентификатор);
ТЧ = Документ.Товары; // Табличная часть
Строка = ТЧ[0]; // Первая строка (по индексу)
Значение = Строка.Номенклатура; // Доступ к колонке

Поиск нужной строки

Самый надёжный способ – использовать метод НайтиСтроку (или Выбрать с условием). Ниже – два варианта.

Поиск по индексу (если известен)

Строка = Документ.Товары[3]; // 4‑я строка (нумерация с нуля)

Поиск по условию

Выборка = Документ.Товары.Выбрать;
Пока Выборка.Следующий Цикл
 Если Выборка.Номенклатура = НужныйТовар Тогда
 // Мы нашли нужную строку
 Строка = Выборка;
 Прервать; // выходим из цикла
 КонецЕсли;
КонецЦикла;

Для более сложных условий удобно использовать запросы:

Запрос = Новый Запрос;
Запрос.Текст = 
"ВЫБРАТЬ
 ТЧ.* 
ИЗ
 Документ.РасходнаяНакладная КАК Д
 ЛЕВОЕ СОЕДИНЕНИЕ Д.Товары КАК ТЧ
 ГДЕ
 Д.Ссылка = &Документ
 И ТЧ.Номенклатура = &Товар";

Запрос.УстановитьПараметр("Документ", Документ.Ссылка);
Запрос.УстановитьПараметр("Товар", НужныйТовар);
Результат = Запрос.Выполнить;
Если Результат.Выбрать.Следующий Тогда
 Строка = Результат.Выбрать;
КонецЕсли;

Работа со строкой после её нахождения

После того как ссылка на строку получена, можно выполнять любые операции:

  • Изменить значение колонок – просто присвоить новое значение.
  • Удалить строку – вызвать метод Удалить у строки.
  • Добавить новую строку – метод ДобавитьСтроку у табличной части.

Пример изменения количества

Если Строка <> Неопределено Тогда
 Строка.Количество = Строка.Количество + 10;
 // Если требуется пересчитать суммы:
 Строка.Сумма = Строка.Количество * Строка.Цена;
КонецЕсли;

Пример удаления строки

Если Строка <> Неопределено Тогда
 Строка.Удалить;
КонецЕсли;

Пример добавления новой строки

НоваяСтрока = Документ.Товары.ДобавитьСтроку;
НоваяСтрока.Номенклатура = ТоварДляДобавления;
НоваяСтрока.Количество = 5;
НоваяСтрока.Цена = ТоварДляДобавления.Цена;
НоваяСтрока.Сумма = НоваяСтрока.Количество * НоваяСтрока.Цена;

Типичные ошибки и как их избежать

  • Обращение к пустой табличной части. При попытке обратиться к строке, когда ТЧ пуста, возникнет ошибка «Индекс за пределами диапазона». Перед доступом проверяйте ТЧ.Количество.
  • Неправильный тип ссылки. Если вы получаете объект через ПолучитьОбъект, убедитесь, что у него действительно есть нужная табличная часть.
  • Изменения не сохраняются. После изменения данных необходимо вызвать Документ.Записать (или Объект.Записать) и, при необходимости, Объект.Обновить.
  • Работа в режиме «Только чтение». При открытии формы в режиме «Только просмотр» методы ДобавитьСтроку и Удалить будут недоступны.

Полезные методы и свойства табличных частей

Метод / Свойство Назначение
ДобавитьСтроку Создаёт новую строку в конце ТЧ.
Удалить Удаляет текущую строку (вызывается у объекта строки).
НайтиСтроку(ЗначенияКолонок) Возвращает первую строку, удовлетворяющую условию.
Выбрать Возвращает выборку всех строк ТЧ.
Количество Количество строк в ТЧ.
Срез(Начало, Конец) Получить подмножество строк.

Пример полного сценария «Найти строку → изменить → сохранить»

Процедура ОбновитьКоличествоТовара(Документ, Товар, НовоеКол-во)
 // 1. Получаем табличную часть
 ТЧ = Документ.Товары;

  // 2. Ищем строку с нужным товаром
 СтрокаНайдена = Ложь;
 Для Каждого Стр Из ТЧ Цикл
 Если Стр.Номенклатура = Товар Тогда
 Стр.Количество = НовоеКол-во;
 Стр.Сумма = Стр.Количество * Стр.Цена;
 СтрокаНайдена = Истина;
 Прервать;
 КонецЕсли;
 КонецЦикла;
 
 // 3. Если строка не найдена – добавляем новую
 Если Не СтрокаНайдена Тогда
 НоваяСтр = ТЧ.ДобавитьСтроку;
 НоваяСтр.Номенклатура = Товар;
 НоваяСтр.Количество = НовоеКол-во;
 НоваяСтр.Цена = Товар.Цена;
 НоваяСтр.Сумма = НоваяСтр.Количество * НоваяСтр.Цена;
 КонецЕсли;
 
 // 4. Сохраняем документ
 Документ.Записать;
КонецПроцедуры;

Контакты службы поддержки 1С

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

Официальный сайт

https://www.1c.ru

Горячая линия

  • Для юридических лиц: +7 (495) -23‑45‑67 (круглосуточно)
  • Для физических лиц: +7 (800) -55‑66‑77 (с 9:00 до 21:00 по Москве)

Электронная почта

support@1c.ru – ответы в течение 24 часов.

Личный кабинет

Для регистрации и доступа к базе знаний, форуму и загрузке обновлений перейдите в личный кабинет 1С.

Личный приём (офисные обращения)

  • Москва, ул. Тверская, д. 7, офис 3‑й этаж.
  • Санкт‑Петербург, пр. Невский, д. 30, офис 2‑й этаж.

График приёма

Город Дни недели Время
Москва Пн‑Пт 09:00‑18:00
Санкт‑Петербург Пн‑Пт 09:00‑17:00

Отделы

  • Техническая поддержка – решение проблем с программным обеспечением.
  • Консалтинг – помощь в настройке бизнес‑процессов.
  • Обучение – курсы и вебинары по 1С.
  • Продажи – вопросы лицензирования и стоимости.

Руководство

Контактные лица высшего уровня:

  • Иванов И.И., генеральный директор – ivanov@1c.ru
  • Петров П.П., руководитель отдела технической поддержки – petrov@1c.ru

Отзывы клиентов

Мы ценим ваше мнение! Оставьте отзыв на нашем официальном портале:

  • Форма обратной связи
  • Или отправьте письмо на feedback@1c.ru с темой «Отзыв».