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

- Обращение к ТЧ в запросах
- Работа с ТЧ в формах и обработчиках
- Лучшие практики и типичные ошибки
- Оптимизация и производительность
- Контакты для обращения
Что такое табличная часть?

Табличная часть – это подчинённый набор записей, хранящийся в отдельной таблице базы данных, но логически привязанный к родительскому объекту.
- Объекты, имеющие ТЧ: документы, справочники, регистры накопления, регистры сведений, регистры бухгалтерии.
- Структура ТЧ: набор реквизитов (полей) и, при необходимости, реквизитов ссылочного типа.
- Пример: документ ПоступлениеТоваров может иметь ТЧ Товары с реквизитами Номенклатура, Количество, Цена.
Обращение к табличной части в коде Общий синтаксис
Для доступа к ТЧ используется точечная нотация:
Документ = Справочники.Заказы.СоздатьЭлемент; ТЧ = Документ.Товары; // ТЧ «Товары» документа «Заказы»
Добавление, изменение и удаление строк
// Добавление новой строки
НоваяСтрока = ТЧ.Добавить;
НоваяСтрока.Номенклатура = Справочники.Номенклатура.НайтиПоКоду("Т001");
НоваяСтрока.Количество = 10;
НоваяСтрока.Цена = 2500;
// Изменение существующей строки
Для Каждого Строка Из ТЧ Цикл
Если Строка.Номенклатура = Справочники.Номенклатура.НайтиПоКоду("Т002") Тогда
Строка.Количество = Строка.Количество + 5;
КонецЕсли;
КонецЦикла;
// Удаление строк, соответствующих условию
ТЧ.УдалитьВсе(Строка -> Строка.Количество = 0);
Обращение к реквизитам ссылочного типа
При работе с полями, содержащими ссылки, важно помнить, что при обращении через точку происходит чтение полного объекта из БД. Чтобы избежать лишних запросов, используйте метод Получить или проверяйте ЭтоНовый:
Если Строка.Контрагент.ЭтоНовый Тогда // объект ещё не загружен – получаем только ссылку Ссылка = Строка.Контрагент; Иначе // объект уже загружен, можно работать с полями Наименование = Строка.Контрагент.Наименование; КонецЕсли;
Обращение к ТЧ через переменную
Табличные части часто передаются в функции/процедуры как параметры:
Процедура ЗаполнитьТЧ(ТЧТоваров) Для Каждого Товар Из ТЧТоваров Цикл // работа с Товаром КонецЦикла; КонецПроцедуры; // Вызов ЗаполнитьТЧ(Документ.Товары);
Обращение к табличной части в запросах Синтаксис запроса
В запросах 1С табличные части рассматриваются как отдельные таблицы, к которым можно обращаться через оператор ТЧ или через псевдоним ТЧ_ИмяТЧ:
ВЫБРАТЬ Документы.Заказы.Дата, ТЧ_Товары;Номенклатура, ТЧ_Товары.Количество, ТЧ_Товары.Цена ИЗ Документ.Заказы КАК Документы ЛЕВОЕ СОЕДИНЕНИЕ ТЧ_Товары КАК ТЧ_Товары ПО ТЧ_Товары.Ссылка = Документы.Ссылка ГДЕ Документы.Дата > &ДатаНачала
Фильтрация по полям ТЧ
Можно использовать отборы непосредственно в секции ГДЕ:
ГДЕ ТЧ_Товары.Количество > 0 И ТЧ_Товары.Цена < 5000
Агрегатные функции
Для подсчёта сумм и количества строк в ТЧ применяются агрегаты:
ВЫБРАТЬ Документы.Заказы.Ссылка, СУММА(ТЧ_Товары.Количество) КАК ОбщееКоличество, СУММА(ТЧ_Товары.Количество * ТЧ_Товары.Цена) КАК СуммаДокумента ИЗ Документ.Заказы КАК Документы ЛЕВОЕ СОЕДИНЕНИЕ ТЧ_Товары КАК ТЧ_Товары ПО ТЧ_Товары.Ссылка = Документы.Ссылка СГРУППИРОВАТЬ ПО Документы.Заказы.Ссылка
Работа с табличной частью в формах и обработчиках Элемент формы «Табличная часть»
В конструкторе форм табличные части отображаются элементом Таблица. Для доступа к данным из кода формы используется свойство Значения:
ТЧ = ФормаЭлемента.Элементы.Товары.Значения;
События табличной части - ПриНачалеРедактирования – вызывается перед редактированием строки. Позволяет задать значения по умолчанию.
- ПриИзменении – срабатывает после изменения любой ячейки.
- ПередЗаписью – используется для проверки целостности данных перед сохранением;
Пример: автоматическое заполнение цены
Процедура Товары_ПриИзменении(Элемент)
Если Элемент.Колонка = "Номенклатура" Тогда
Цена = Элемент.Значение.ПолучитьЦену(ДатаДокумента);
Элемент.Строка.Цена = Цена;
КонецЕсли;
КонецПроцедуры;
Лучшие практики и типичные ошибки - Не загружайте объект целиком, если нужен только его идентификатор. Используйте ссылки (
Ссылка) вместо полного объекта. - Избегайте вложенных циклов по большим ТЧ. При необходимости используйте запросы с агрегатами.
- Проверяйте наличие строки перед удалением. Метод
Найти возвращает Неопределено, если запись не найдена. - Сохраняйте изменения ТЧ только один раз. При массовом заполнении лучше использовать
НачатьТранзакцию/ЗафиксироватьТранзакцию или метод Записать у родительского объекта. - Не меняйте структуру ТЧ в процессе выполнения. Добавление/удаление реквизитов допускается только в конфигураторе.
Оптимизация и производительность
Процедура Товары_ПриИзменении(Элемент) Если Элемент.Колонка = "Номенклатура" Тогда Цена = Элемент.Значение.ПолучитьЦену(ДатаДокумента); Элемент.Строка.Цена = Цена; КонецЕсли; КонецПроцедуры;
Лучшие практики и типичные ошибки - Не загружайте объект целиком, если нужен только его идентификатор. Используйте ссылки (
Ссылка) вместо полного объекта. - Избегайте вложенных циклов по большим ТЧ. При необходимости используйте запросы с агрегатами.
- Проверяйте наличие строки перед удалением. Метод
Найти возвращает Неопределено, если запись не найдена. - Сохраняйте изменения ТЧ только один раз. При массовом заполнении лучше использовать
НачатьТранзакцию/ЗафиксироватьТранзакцию или метод Записать у родительского объекта. - Не меняйте структуру ТЧ в процессе выполнения. Добавление/удаление реквизитов допускается только в конфигураторе.
Оптимизация и производительность
Ссылка) вместо полного объекта.Найти возвращает Неопределено, если запись не найдена.НачатьТранзакцию/ЗафиксироватьТранзакцию или метод Записать у родительского объекта.Табличные части могут содержать тысячи строк. Чтобы обеспечить быструю работу:
- Индексация: При проектировании ТЧ рекомендуется создавать индексы по часто используемым реквизитам (например,
Номенклатура). - Отбор в запросах: Всегда указывайте условия в секции
ГДЕ, а не фильтруйте результат в клиентском коде. - Постраничный вывод: Для больших наборов используйте
ОБРЕЗАТЬ(LIMIT) иСМЕЩЕНИЕ(OFFSET) в запросах. - Кеширование: При повторных обращениях к одной и той же ТЧ в рамках одной транзакции храните её в переменной.
- Пакетная запись: При импорте большого объёма данных используйте метод
Записать(,Ложь)(без проведения) и проведите документ один раз после загрузки.
Контакты для обращений
Если у вас возникли вопросы по работе с табличными частями, вы можете связаться с нашей технической поддержкой.
| Официальный сайт: | https://www.1c.ru |
| Горячая линия: | +7 (495) -23‑45‑67 (круглосуточно) |
| Номера телефонов: |
|
| Электронный адрес: | support@1c.ru |
| Личный кабинет: | https://login.1c.ru |
| Личный приём (консультация): | Записаться через форму «Личный приём» |
| График приёма: | Пн‑Пт: 09:00‑18:00 (по московскому времени) |
| Отделы: |
|
| Руководство: | Иванов И.И., Директор по развитию продуктов |
| Отзывы: | Оставить отзыв можно на форуме 1С или в разделе «Отзывы» личного кабинета. |