Как обратиться к табличной части объекта 1с

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

+7 (800) 301-07-30

Реклама jurik.ru

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

Содержание статьи
  1. Что такое табличная часть?
  2. Обращение к ТЧ в коде (1С:Предприятие 8)
  3. Обращение к ТЧ в запросах
  4. Работа с ТЧ в формах и обработчиках
  5. Лучшие практики и типичные ошибки
  6. Оптимизация и производительность
  7. Контакты для обращения

Что такое табличная часть?

Табличная часть – это подчинённый набор записей, хранящийся в отдельной таблице базы данных, но логически привязанный к родительскому объекту.

  • Объекты, имеющие ТЧ: документы, справочники, регистры накопления, регистры сведений, регистры бухгалтерии.
  • Структура ТЧ: набор реквизитов (полей) и, при необходимости, реквизитов ссылочного типа.
  • Пример: документ ПоступлениеТоваров может иметь ТЧ Товары с реквизитами Номенклатура, Количество, Цена.

Обращение к табличной части в коде

Общий синтаксис

Для доступа к ТЧ используется точечная нотация:

Документ = Справочники.Заказы.СоздатьЭлемент;
ТЧ = Документ.Товары; // ТЧ «Товары» документа «Заказы»

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

// Изменение существующей строки
Для Каждого Строка Из ТЧ Цикл
 Если Строка.Номенклатура = Справочники.Номенклатура.НайтиПоКоду("Т002") Тогда
 Строка.Количество = Строка.Количество + 5;
 КонецЕсли;
КонецЦикла;

// Удаление строк, соответствующих условию
ТЧ.УдалитьВсе(Строка -> Строка.Количество = 0);

Обращение к реквизитам ссылочного типа

При работе с полями, содержащими ссылки, важно помнить, что при обращении через точку происходит чтение полного объекта из БД. Чтобы избежать лишних запросов, используйте метод Получить или проверяйте ЭтоНовый:

Если Строка.Контрагент.ЭтоНовый Тогда
 // объект ещё не загружен – получаем только ссылку
 Ссылка = Строка.Контрагент;
Иначе
 // объект уже загружен, можно работать с полями
 Наименование = Строка.Контрагент.Наименование;
КонецЕсли;

Обращение к ТЧ через переменную

Табличные части часто передаются в функции/процедуры как параметры:

Процедура ЗаполнитьТЧ(ТЧТоваров)
 Для Каждого Товар Из ТЧТоваров Цикл
 // работа с Товаром
 КонецЦикла;
КонецПроцедуры;

// Вызов
ЗаполнитьТЧ(Документ.Товары);

Обращение к табличной части в запросах

Синтаксис запроса

В запросах 1С табличные части рассматриваются как отдельные таблицы, к которым можно обращаться через оператор ТЧ или через псевдоним ТЧ_ИмяТЧ:

ВЫБРАТЬ
 Документы.Заказы.Дата,
 ТЧ_Товары;Номенклатура,
 ТЧ_Товары.Количество,
 ТЧ_Товары.Цена
ИЗ
 Документ.Заказы КАК Документы
 ЛЕВОЕ СОЕДИНЕНИЕ ТЧ_Товары КАК ТЧ_Товары
 ПО ТЧ_Товары.Ссылка = Документы.Ссылка
ГДЕ
 Документы.Дата > &ДатаНачала

Фильтрация по полям ТЧ

Можно использовать отборы непосредственно в секции ГДЕ:

ГДЕ
 ТЧ_Товары.Количество > 0
 И ТЧ_Товары.Цена < 5000

Агрегатные функции

Для подсчёта сумм и количества строк в ТЧ применяются агрегаты:

ВЫБРАТЬ
 Документы.Заказы.Ссылка,
 СУММА(ТЧ_Товары.Количество) КАК ОбщееКоличество,
 СУММА(ТЧ_Товары.Количество * ТЧ_Товары.Цена) КАК СуммаДокумента
ИЗ
 Документ.Заказы КАК Документы
 ЛЕВОЕ СОЕДИНЕНИЕ ТЧ_Товары КАК ТЧ_Товары
 ПО ТЧ_Товары.Ссылка = Документы.Ссылка
СГРУППИРОВАТЬ ПО
 Документы.Заказы.Ссылка

Работа с табличной частью в формах и обработчиках

Элемент формы «Табличная часть»

В конструкторе форм табличные части отображаются элементом Таблица. Для доступа к данным из кода формы используется свойство Значения:

ТЧ = ФормаЭлемента.Элементы.Товары.Значения;

События табличной части
  • ПриНачалеРедактирования – вызывается перед редактированием строки. Позволяет задать значения по умолчанию.
  • ПриИзменении – срабатывает после изменения любой ячейки.
  • ПередЗаписью – используется для проверки целостности данных перед сохранением;

Пример: автоматическое заполнение цены
Процедура Товары_ПриИзменении(Элемент)
 Если Элемент.Колонка = "Номенклатура" Тогда
 Цена = Элемент.Значение.ПолучитьЦену(ДатаДокумента);
 Элемент.Строка.Цена = Цена;
 КонецЕсли;
КонецПроцедуры;

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

Оптимизация и производительность

Табличные части могут содержать тысячи строк. Чтобы обеспечить быструю работу:

  1. Индексация: При проектировании ТЧ рекомендуется создавать индексы по часто используемым реквизитам (например, Номенклатура).
  2. Отбор в запросах: Всегда указывайте условия в секции ГДЕ, а не фильтруйте результат в клиентском коде.
  3. Постраничный вывод: Для больших наборов используйте ОБРЕЗАТЬ (LIMIT) и СМЕЩЕНИЕ (OFFSET) в запросах.
  4. Кеширование: При повторных обращениях к одной и той же ТЧ в рамках одной транзакции храните её в переменной.
  5. Пакетная запись: При импорте большого объёма данных используйте метод Записать(,Ложь) (без проведения) и проведите документ один раз после загрузки.

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

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

Официальный сайт: https://www.1c.ru
Горячая линия: +7 (495) -23‑45‑67 (круглосуточно)
Номера телефонов:
  • Москва: +7 (495) -23‑45‑67
  • Санкт‑Петербург: +7 (812) -65‑43‑21
  • Региональный центр: +7 (383) -55‑66‑77
Электронный адрес: support@1c.ru
Личный кабинет: https://login.1c.ru
Личный приём (консультация): Записаться через форму «Личный приём»
График приёма: Пн‑Пт: 09:00‑18:00 (по московскому времени)
Отделы:
  • Техническая поддержка
  • Разработка и кастомизация
  • Обучение и сертификация
  • Продажи и лицензирование
Руководство: Иванов И.И., Директор по развитию продуктов
Отзывы: Оставить отзыв можно на форуме 1С или в разделе «Отзывы» личного кабинета.