К статье
Практический материал

Разработка и Конфигурация · 10 мин

Табличная часть в 1С: что это такое и как с ней работать

Что такое табличная часть в 1С, где она используется, как добавлять и редактировать строки, обрабатывать данные табличных частей в запросах и коде.

Табличная часть — это встроенная в объект 1С (документ, справочник, обработку) таблица, которая хранит множество однотипных строк данных, связанных с этим объектом. Классический пример — список товаров в документе «Поступление товаров и услуг»: шапка документа содержит контрагента, дату и договор, а табличная часть «Товары» — номенклатуру, количество, цену и сумму по каждой позиции.

Без табличных частей каждую строку пришлось бы оформлять отдельным документом, что разрушило бы целостность учёта. Табличная часть позволяет хранить в одном объекте сколько угодно строк, проводить их одним движением и видеть всю информацию на одной форме. Понимание устройства табличных частей нужно и обычному пользователю, который заполняет документы, и разработчику, который пишет запросы и обработки.

Как устроена табличная часть и где она встречается

Табличная часть состоит из колонок (реквизитов табличной части) и строк. Каждая колонка имеет имя и тип данных: ссылка на справочник, число, дата, строка, булево. Набор колонок задаётся в конфигураторе при разработке и одинаков для всех строк конкретной табличной части.

Табличные части есть у нескольких типов объектов. У документов они встречаются чаще всего: «Товары», «Услуги», «Оплата», «Серии». У справочников тоже бывают — например, у контрагента может храниться список контактных лиц. У обработок табличные части служат для отображения и редактирования промежуточных данных перед записью в базу.

Важное свойство: строка табличной части не является самостоятельным объектом базы данных. У неё нет собственной ссылки, её нельзя выбрать из другого документа напрямую — только через владельца и номер строки. Именно поэтому в запросах к табличным частям обращаются через точку: Документ.РеализацияТоваровУслуг.Товары.

Чем табличная часть отличается от таблицы значений и регистра

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

ПараметрТабличная частьТаблица значенийРегистр сведений
ХранениеВнутри объекта-владельцаТолько в оперативной памятиНезависимо в базе данных
СуществованиеТолько вместе с владельцемПока выполняется кодПостоянно, независимо от документов
Типичное применениеСтроки документа, списки в справочникеПромежуточные расчёты, выгрузкиЦены, курсы валют, адреса
Доступ из других объектовЧерез владельцаНедоступна после завершения кодаНапрямую из любого места

Практический вывод: если данные должны жить независимо от конкретного документа и читаться из разных мест системы — нужен регистр. Если данные логически принадлежат одному объекту и удаляются вместе с ним — табличная часть. Таблица значений — это рабочий инструмент программиста, а не способ хранения.

Как пользователю работать с табличной частью в документе

В пользовательском режиме табличная часть выглядит как обычная таблица на форме документа. Строки добавляются кнопкой «Добавить», клавишей Insert или подбором из справочника — кнопка «Подбор» открывает форму выбора номенклатуры с переносом нескольких позиций сразу, что заметно быстрее построчного ввода.

Для редактирования достаточно встать на ячейку и ввести значение. В типовых конфигурациях после заполнения номенклатуры автоматически подставляются цена, ставка НДС и счета учёта — это работают обработчики событий «ПриИзменении». Если автозаполнение не сработало, чаще всего не заполнены связанные данные: цены в регистре, договор в шапке или настройки счетов.

Быстрое заполнение табличной части
  1. 1
    Откройте документ и перейдите на вкладку с табличной частью
  2. 2
    Нажмите «Подбор» и отметьте нужные позиции номенклатуры с количеством
  3. 3
    Перенесите выбранное в документ кнопкой «Перенести в документ»
  4. 4
    Проверьте автоматически заполненные цены, ставки НДС и счета учёта
  5. 5
    Для массового изменения выделите строки и используйте команду «Изменить» (в типовых конфигурациях)
  6. 6
    Проведите документ и убедитесь в отсутствии сообщений об ошибках

Многие типовые конфигурации поддерживают загрузку табличной части из файла Excel или CSV через встроенную обработку «Загрузка данных из файла». Это удобно при больших накладных от поставщика: файл сопоставляется с колонками табличной части, и сотни строк попадают в документ без ручного ввода.

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

В модуле объекта и внешних обработках табличная часть доступна как коллекция. Основные приёмы — перебор строк, поиск, добавление и очистка. Типовые фрагменты кода выглядят так:

// Перебор строк табличной части документа

Для Каждого СтрокаТовары Из Объект.Товары Цикл

СтрокаТовары.Сумма = СтрокаТовары.Количество * СтрокаТовары.Цена;

КонецЦикла;

// Добавление новой строки

НоваяСтрока = Объект.Товары.Добавить();

НоваяСтрока.Номенклатура = НайденнаяНоменклатура;

НоваяСтрока.Количество = 10;

// Поиск строки по условию

ПараметрыОтбора = Новый Структура("Номенклатура", ИскомаяНоменклатура);

НайденныеСтроки = Объект.Товары.НайтиСтроки(ПараметрыОтбора);

// Очистка табличной части

Объект.Товары.Очистить();

Метод НайтиСтроки() возвращает массив строк, даже если найдена одна — обращаться к результату нужно через индекс или перебор. Частая ошибка новичков — пытаться работать с результатом как с одной строкой и получать ошибку «Поле объекта не обнаружено».

Табличные части в запросах

В языке запросов табличная часть доступна как отдельная виртуальная таблица через точку после имени документа. Запрос к табличной части «Товары» документа реализации выглядит так:

ВЫБРАТЬ

Товары.Ссылка КАК Документ,

Товары.Номенклатура,

Товары.Количество,

Товары.Сумма

ИЗ

Документ.РеализацияТоваровУслуг.Товары КАК Товары

ГДЕ

Товары.Ссылка.Дата МЕЖДУ &НачалоПериода И &КонецПериода

Ключевой момент: поле Ссылка в выборке из табличной части указывает на документ-владелец, а не на строку. Через него можно добраться до реквизитов шапки — даты, контрагента, организации. Также у каждой строки есть поле НомерСтроки, по которому удобно сортировать результат в исходном порядке.

При соединении табличной части с шапкой документа используйте левое соединение по ссылке, чтобы не потерять документы с пустой табличной частью. Внутреннее соединение такие документы отбросит, что исказит отчёт.

Типичные ошибки и ограничения

Типичные ошибки
01
Попытка сослаться на строку табличной части как на самостоятельный объект — у строки нет собственной ссылки, храните ссылку на документ плюс номер строки
02
Изменение табличной части без последующего Записать() — изменения теряются
03
Использование внутреннего соединения шапки с табличной частью в отчётах — документы без строк выпадают из результата
04
Редактирование табличной части проведённого документа напрямую в базе — нарушается соответствие движений и данных документа
05
Загрузка из Excel без проверки дублей — одна позиция попадает в документ несколько раз

Отдельно стоит предупредить о производительности. Табличные части на десятки тысяч строк замедляют открытие формы, проведение и запись документа. Если бизнес-процесс регулярно порождает такие объёмы (например, инвентаризация крупного склада), лучше разбивать данные на несколько документов или переносить обработку в фоновые задания.

Проверка результата и контрольные точки

После программного заполнения или загрузки табличной части результат нужно проверить, а не считать успешным по факту отсутствия ошибок. Минимальный набор проверок приведён ниже.

Контрольные точки

Как проверить результат

Количество строк
Норма

Совпадает с количеством позиций в источнике (файле, заказе)

Тревожный признак

Строк меньше или больше — часть данных потеряна или задублирована

Итоговая сумма документа
Норма

Равна сумме по источнику

Тревожный признак

Расхождение — проверяйте цены и количество по строкам

Заполненность ключевых колонок
Норма

Номенклатура, количество, ставка НДС заполнены во всех строках

Тревожный признак

Пустые значения — документ не проведётся или проведётся с ошибками

Движения после проведения
Норма

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

Тревожный признак

Проводок меньше, чем строк — часть позиций не попала в учёт

Итог

Что важно запомнить

Табличная часть — таблица внутри документа или справочника, строки которой существуют только вместе с владельцем. Пользователь заполняет её вручную, подбором или загрузкой из файла; разработчик работает с ней как с коллекцией в коде и как с виртуальной таблицей в запросах. Изменения сохраняются только при записи объекта, а правку проведённых документов нужно делать через перепроведение.

Частые вопросы

Можно ли добавить свою колонку в табличную часть типового документа?

Да, через механизм расширений конфигурации — это безопасный способ, не требующий снятия конфигурации с поддержки. В расширении добавляется реквизит табличной части, после чего его можно вывести на форму и использовать в коде. Прямое изменение типового объекта усложнит последующие обновления.

Чем табличная часть отличается от табличного документа?

Это разные вещи. Табличная часть — хранимые в базе строки внутри объекта. Табличный документ — это формат отчётной формы (как лист Excel), который формируется при печати или выводе отчёта и не хранится в базе как данные учёта.

Может ли быть несколько табличных частей у одного документа?

Да, количество не ограничено. Например, у документа реализации в типовых конфигурациях есть табличные части «Товары», «Услуги», «Агентские услуги» и другие. Каждая хранит свой набор строк и отображается на отдельной вкладке формы.

Как удалить только часть строк табличной части?

В пользовательском режиме — выделить строки и нажать Delete или кнопку «Удалить». В коде используют метод Удалить() с указанием строки или очищают через цикл по отобранным строкам. После удаления объект нужно записать, иначе изменения не сохранятся.

Почему в запросе к табличной части не видно реквизитов шапки?

Виртуальная таблица табличной части содержит только её собственные колонки, поле Ссылка и НомерСтроки. Реквизиты шапки (дату, контрагента, организацию) получают через разыменование: Товары.Ссылка.Контрагент, либо через соединение с таблицей документа по полю Ссылка.

Есть ли ограничение на количество строк в табличной части?

Жёсткого технологического лимита нет, но на практике табличные части с десятками тысяч строк заметно замедляют открытие формы, запись и проведение документа. При больших объёмах данных рекомендуется разбивать документ на несколько или пересматривать схему хранения.