Табличные части (ТЧ) – один из самых мощных механизмов платформы 1С:Предприятие. Они позволяют хранить набор строк‑записей, связанных с объектом (документом, справочником, обработкой и т.п.). В этой статье мы подробно разберём, как работать с табличной частью документа в коде:
- Обращение к ТЧ через объектную модель;
- Получение данных из ТЧ с помощью языка запросов;
- Работа с ТЧ в модулях формы;
- Добавление, изменение и удаление строк;
- Типичные ошибки и рекомендации.
Объектная модель: как получить доступ к ТЧ
Каждый документ в 1С имеет свойство, имя которого совпадает с именем табличной части, объявленной в конфигураторе. Это свойство имеет тип ТаблицаЗначений. Пример обращения к ТЧ из модуля объекта документа:
// Предположим, у нас есть документ "ПоступлениеТоваров"
ДокументОбъект = Документы.ПоступлениеТоваров.Создать;
ТЧ = ДокументОбъект.ТаблицаТоваров; // ТаблицаТоваров – имя ТЧ
// Добавим строку
НоваяСтрока = ТЧ.Добавить;
НоваяСтрока.Номенклатура = Справочники.Номенклатура.НайтиПоКоду("Т001");
НоваяСтрока.Количество = 10;
НоваяСтрока.Цена = 1500;
// Сохранить документ
ДокументОбъект.Записать;
Ключевые моменты:
- Свойство ТЧ доступно только после создания (или загрузки) объекта документа.
- Метод
Добавитьвозвращает новую строку типаСтруктура(внутри – поля табличной части). - Для изменения существующей строки используем
ТЧ.Элементы[Индекс]илиТЧ.Найти(...).
Запросы к табличным частям
В запросах 1С табличные части могут рассматриваться как отдельные таблицы. Это удобно, когда нужно собрать агрегированные данные, выполнить группировку или просто вывести список строк.
Как добавить ТЧ в поле Таблицы конструктора запросов
В конструкторе запросов достаточно перетащить имя табличной части из списка Таблицы. Платформа автоматически сформирует псевдоним, например ТЧ_ПоступлениеТоваров.
Пример запроса
ВЫБРАТЬ
ТЧ.Номенклатура КАК Номенклатура,
ТЧ.Количество КАК Количество,
ТЧ.Цена КАК Цена,
(ТЧ.Количество * ТЧ.Цена) КАК Сумма
ИЗ
Документ.ПоступлениеТоваров.ТаблицаТоваров КАК ТЧ
ГДЕ
ТЧ.Дата > &ДатаНачала
СГРУППИРОВАТЬ ПО
ТЧ.Номенклатура
В результате получаем агрегированные суммы по каждому товару за выбранный период.
Работа с табличной частью в модуле формы
Часто требуется обращаться к ТЧ из обработчика формы (например, при нажатии кнопки «Пересчитать»). В этом случае используем объект ЭлементыФормы:
Процедура ПересчитатьНажатие(Кнопка)
ТЧ = ЭлементыФормы.ТаблицаТоваров.Значение; // ТаблицаТоваров – элемент формы
Для Каждого Строка Из ТЧ Цикл
Строка.Сумма = Строка.Количество * Строка.Цена;
КонецЦикла;
// Обновляем элемент формы
ЭлементыФормы.ТаблицаТоваров.Обновить;
КонецПроцедуры
Обратите внимание, что ЭлементыФормы.ТаблицаТоваров.Значение возвращает объект ТаблицаЗначений, с которым можно работать так же, как в модуле объекта.
Добавление, изменение и удаление строк
| Операция | Метод | Пример |
|---|---|---|
| Добавить строку | ТЧ.Добавить | НоваяСтрока = ТЧ.Добавить; |
| Изменить строку | Обращение по индексу или поиску | ТЧ[0].Количество = 20; |
| Удалить строку | ТЧ.Удалить(Индекс) или ТЧ.Удалить(Строка) | ТЧ.Удалить(ТЧ[2]); |
Часто задаваемые вопросы (FAQ)
- Можно ли обратиться к ТЧ без сохранения документа? Да. ТЧ существует в памяти объекта, пока документ не записан. Вы можете работать с ней, формировать запросы и т.д., но данные не попадут в базу, пока не вызовете
Записать. - Как получить данные из ТЧ, если документ ещё не записан? Используйте объектную модель (см. пункт 1) или запрос к
ТаблицаЗначенийчерезВЫБОРКА– но помните, что запрос к ТЧ в базе будет работать только с сохранёнными данными. - Можно ли использовать табличную часть в
СУММА? Да, в запросе можно применять агрегатные функции к колонкам ТЧ, как показано в примере 2.2. - Почему в запросе появляется ошибка «Не найдено поле …»? Чаще всего имя поля указано неверно (регистр важен) или ТЧ не была добавлена в список Таблицы конструктора запросов.
Лучшие практики
- Не храните бизнес‑логику в запросах. Запросы лучше использовать для выборки и агрегации, а расчёты – в коде.
- Проверяйте наличие строк перед обращением к индексу. Ошибка «Индекс за пределами диапазона» часто возникает при работе с пустой ТЧ.
- Используйте
ТЧ.Очиститьперед массовой загрузкой. Это ускорит процесс и уменьшит нагрузку на память. - При работе с большими объёмами данных применяйте
ВЫБОРКАвместо полного перебора.
Контакты для обращений
Официальный сайт: 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С позволяет автоматизировать любые бизнес‑процессы.» – АО «СтройИнвест»
- «Профессиональная команда консультантов помогла внедрить ERP за 3 месяца.» – ИП «Кузнецов В.В.»