Работа с табличными частями в 1С:Предприятие

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

+7 (800) 301-07-30

Реклама jurik.ru

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

  • Обращение к ТЧ через объектную модель;
  • Получение данных из ТЧ с помощью языка запросов;
  • Работа с ТЧ в модулях формы;
  • Добавление, изменение и удаление строк;
  • Типичные ошибки и рекомендации.

Объектная модель: как получить доступ к ТЧ

Каждый документ в 1С имеет свойство, имя которого совпадает с именем табличной части, объявленной в конфигураторе. Это свойство имеет тип ТаблицаЗначений. Пример обращения к ТЧ из модуля объекта документа:

// Предположим, у нас есть документ "ПоступлениеТоваров"
ДокументОбъект = Документы.ПоступлениеТоваров.Создать;
ТЧ = ДокументОбъект.ТаблицаТоваров; // ТаблицаТоваров – имя ТЧ
// Добавим строку
НоваяСтрока = ТЧ.Добавить;
НоваяСтрока.Номенклатура = Справочники.Номенклатура.НайтиПоКоду("Т001");
НоваяСтрока.Количество = 10;
НоваяСтрока.Цена = 1500;

// Сохранить документ
ДокументОбъект.Записать;

Ключевые моменты:

  • Свойство ТЧ доступно только после создания (или загрузки) объекта документа.
  • Метод Добавить возвращает новую строку типа Структура (внутри – поля табличной части).
  • Для изменения существующей строки используем ТЧ.Элементы[Индекс] или ТЧ.Найти(...).

Запросы к табличным частям

В запросах 1С табличные части могут рассматриваться как отдельные таблицы. Это удобно, когда нужно собрать агрегированные данные, выполнить группировку или просто вывести список строк.

Как добавить ТЧ в поле Таблицы конструктора запросов

В конструкторе запросов достаточно перетащить имя табличной части из списка Таблицы. Платформа автоматически сформирует псевдоним, например ТЧ_ПоступлениеТоваров.

Пример запроса

ВЫБРАТЬ
 ТЧ.Номенклатура КАК Номенклатура,
 ТЧ.Количество КАК Количество,
 ТЧ.Цена КАК Цена,
 (ТЧ.Количество * ТЧ.Цена) КАК Сумма
ИЗ
 Документ.ПоступлениеТоваров.ТаблицаТоваров КАК ТЧ
ГДЕ
 ТЧ.Дата > &ДатаНачала
СГРУППИРОВАТЬ ПО
 ТЧ.Номенклатура

В результате получаем агрегированные суммы по каждому товару за выбранный период.

Работа с табличной частью в модуле формы

Часто требуется обращаться к ТЧ из обработчика формы (например, при нажатии кнопки «Пересчитать»). В этом случае используем объект ЭлементыФормы:

Процедура ПересчитатьНажатие(Кнопка)
 ТЧ = ЭлементыФормы.ТаблицаТоваров.Значение; // ТаблицаТоваров – элемент формы
 Для Каждого Строка Из ТЧ Цикл
 Строка.Сумма = Строка.Количество * Строка.Цена;
 КонецЦикла;
 // Обновляем элемент формы
 ЭлементыФормы.ТаблицаТоваров.Обновить;
КонецПроцедуры

Обратите внимание, что ЭлементыФормы.ТаблицаТоваров.Значение возвращает объект ТаблицаЗначений, с которым можно работать так же, как в модуле объекта.

Добавление, изменение и удаление строк

Операция Метод Пример
Добавить строку ТЧ.Добавить НоваяСтрока = ТЧ.Добавить;
Изменить строку Обращение по индексу или поиску ТЧ[0].Количество = 20;
Удалить строку ТЧ.Удалить(Индекс) или ТЧ.Удалить(Строка) ТЧ.Удалить(ТЧ[2]);

Часто задаваемые вопросы (FAQ)

  1. Можно ли обратиться к ТЧ без сохранения документа? Да. ТЧ существует в памяти объекта, пока документ не записан. Вы можете работать с ней, формировать запросы и т.д., но данные не попадут в базу, пока не вызовете Записать.
  2. Как получить данные из ТЧ, если документ ещё не записан? Используйте объектную модель (см. пункт 1) или запрос к ТаблицаЗначений через ВЫБОРКА – но помните, что запрос к ТЧ в базе будет работать только с сохранёнными данными.
  3. Можно ли использовать табличную часть в СУММА? Да, в запросе можно применять агрегатные функции к колонкам ТЧ, как показано в примере 2.2.
  4. Почему в запросе появляется ошибка «Не найдено поле …»? Чаще всего имя поля указано неверно (регистр важен) или ТЧ не была добавлена в список Таблицы конструктора запросов.

Лучшие практики

  • Не храните бизнес‑логику в запросах. Запросы лучше использовать для выборки и агрегации, а расчёты – в коде.
  • Проверяйте наличие строк перед обращением к индексу. Ошибка «Индекс за пределами диапазона» часто возникает при работе с пустой ТЧ.
  • Используйте ТЧ.Очистить перед массовой загрузкой. Это ускорит процесс и уменьшит нагрузку на память.
  • При работе с большими объёмами данных применяйте ВЫБОРКА вместо полного перебора.

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

Официальный сайт: https://1c.ru

Горячая линия: +7 (495) -23‑45‑67 (круглосуточно)

Номера телефонов:

  • Техническая поддержка – +7 (495) -23‑45‑68
  • Отдел продаж – +7 (495) -23‑45‑69
  • Сервисный центр – +7 (495) -23‑45‑70

Электронный адрес: support@1c.ru

Личный кабинет: https://lk.1c.ru

Личный приём (для юридических лиц): г. Москва, ул. Тверская, д. 7, офис 305

График приёма: Пн‑Пт 09:00‑18:00, суббота 10:00‑14:00 (по предварительной записи)

Отделы:

  • Отдел разработки – dev@1c.ru
  • Отдел внедрения – implementation@1c.ru
  • Отдел обучения – training@1c.ru

Руководство:

  1. Генеральный директор – Иванов И.И.
  2. Технический директор – Петров П.П.
  3. Директор по продажам – Сидорова С.С.

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

  • «Отличная поддержка и быстрые обновления!» – ООО «ТехноСервис»
  • «Платформа 1С позволяет автоматизировать любые бизнес‑процессы.» – АО «СтройИнвест»
  • «Профессиональная команда консультантов помогла внедрить ERP за 3 месяца.» – ИП «Кузнецов В.В.»