Разработка и Конфигурация · 13 мин
Табличная часть в 1С: что это и для чего она нужна
Что такое табличная часть в 1С, для чего она нужна, где применяется в документах и справочниках, как с ней работать и заполнять программно.
Табличная часть — это встроенный в объект 1С (документ, справочник, обработку) список строк с одинаковой структурой колонок. Классический пример — документ «Реализация товаров и услуг»: шапка содержит контрагента, дату и договор, а табличная часть «Товары» хранит строки с номенклатурой, количеством, ценой и суммой. Без табличной части такой документ пришлось бы дробить на множество отдельных записей и связывать их вручную.
С точки зрения базы данных табличная часть — это отдельная таблица, где каждая строка жёстко привязана к своему объекту-владельцу через ссылку. Строка табличной части не существует сама по себе: удалите документ — исчезнут и все его строки. Именно это отличает табличную часть от регистра сведений или независимого справочника, где записи живут автономно.
Понимание устройства табличных частей нужно и пользователю, и разработчику. Пользователь сталкивается с ними ежедневно при заполнении документов, а разработчику без этого не обойти ни проведение документа, ни выгрузку данных, ни доработку печатных форм.
Что такое табличная часть и как она устроена
Табличная часть состоит из реквизитов (колонок) и строк. У каждой колонки есть имя, тип данных и свойства — так же, как у обычных реквизитов объекта. Например, в табличной части «Товары» типичные колонки: Номенклатура (ссылка на справочник), Количество (число), Цена (число), Сумма (число), СтавкаНДС (перечисление).
У каждой строки есть служебный номер — «НомерСтроки», который платформа присваивает автоматически. Внутри одного объекта номера строк уникальны и идут по порядку, но при удалении строки из середины списка нумерация пересчитывается, поэтому ссылаться на данные по номеру строки в долгосрочной логике ненадёжно.
На форме объекта табличная часть отображается как табличное поле. Пользователь видит привычную сетку с колонками, может добавлять строки клавишей Insert, удалять их, перемещать вверх-вниз и заполнять ячейки. Для разработчика та же табличная часть доступна как коллекция значений, которую можно перебирать, фильтровать и сворачивать программно.
Для чего нужна табличная часть: основные задачи
Главная задача табличной части — хранить множественные данные, относящиеся к одному объекту. Документ поступления содержит десятки позиций товара, приказ о премировании — список сотрудников с суммами, инвентаризация — перечень учётных и фактических остатков. Всё это классические сценарии табличных частей.
Вторая задача — участие в движениях документа. При проведении типовые документы перебирают строки табличных частей и формируют по каждой строке записи в регистры: остатки товаров, взаиморасчёты, проводки. Если строка заполнена неверно (не указан склад, нулевое количество), ошибка проявится именно на этапе проведения.
Третья задача — источник данных для печатных форм и отчётов. ТОРГ-12, счёт-фактура, акт выполненных работ строятся по строкам табличных частей документа. Отсюда практическое следствие: заполнять табличную часть нужно аккуратно, потому что именно её содержимое увидит контрагент на бумаге.
Наконец, табличные части используются в обработках как рабочий инструмент: например, обработка группового изменения реквизитов собирает список объектов в табличную часть, а затем обрабатывает каждую строку.
Можно добавлять и удалять строки, есть кнопки «Добавить», «Подбор», «Заполнить»
У документа или справочника раскройте структуру — там перечислены табличные части и их реквизиты
Обращение идёт через точку: объект, затем имя табличной части
Где встречаются табличные части
Чаще всего табличные части применяются в документах. У одного документа их может быть несколько: например, у счёта на оплату — «Товары», у реализации — «Товары» и «Услуги», у заказа покупателя — отдельные табличные части для товаров и этапов оплаты. Каждая из них хранится в базе как собственная таблица и может заполняться независимо.
Справочники тоже поддерживают табличные части. Типичный пример — справочник «Номенклатура» в некоторых конфигурациях содержит табличную часть с дополнительными характеристиками или единицами измерения. Это удобно, когда набор данных принадлежит конкретному элементу справочника и не нужен вне его.
Табличные части есть у обработок и отчётов. У внешней обработки табличная часть часто играет роль временного хранилища: пользователь загружает в неё данные из Excel, проверяет и запускает обработку.
Как работать с табличной частью пользователю
Базовые действия доступны в любой типовой форме. Строка добавляется кнопкой «Добавить» или клавишей Insert, удаляется — кнопкой с крестиком или Delete. Кнопка «Подбор» открывает форму множественного выбора номенклатуры: вы отмечаете несколько позиций, и все они попадают в табличную часть одним действием — это заметно быстрее построчного ввода.
Многие документы поддерживают заполнение табличной части автоматически: по кнопке «Заполнить» документ подтянет остатки на складе, товары из заказа-основания или данные инвентаризации. Перед таким заполнением проверьте, не затрёт ли операция уже введённые строки — в некоторых конфигурациях заполнение очищает табличную часть без предупреждения.
Для массового ввода полезны копирование и вставка строк: выделите строку, нажмите F9 (или «Скопировать» в меню «Ещё»), затем измените нужные колонки. Часть колонок пересчитывается автоматически: при изменении количества или цены пересчитается сумма, при смене ставки НДС — сумма налога. Если автопересчёт не сработал, проверьте, не отключены ли обработчики в результате доработок конфигурации.
- 1Заполните шапку документа: организацию, контрагента, склад — от этих реквизитов зависят значения по умолчанию в строках
- 2Добавьте строки вручную, через «Подбор» или кнопку «Заполнить»
- 3Проверьте в каждой строке количество, цену, ставку НДС и счета учёта, если они видимы
- 4Убедитесь, что итоговая сумма документа сошлась с первичными документами
- 5Проведите документ и при ошибке проведения прочитайте сообщение: в нём обычно указан номер проблемной строки
Работа с табличной частью в коде
Разработчик обращается к табличной части как к свойству объекта: ДокументОбъект.Товары. Доступны методы добавления строки (Добавить()), удаления (Удалить()), поиска (Найти(), НайтиСтроки()), итогов (Итог("Сумма")) и свёртки (Свернуть()). Перебор строк выполняется циклом Для Каждого Строка Из.. Цикл.
В запросах табличная часть фигурирует как отдельная таблица с составным именем: Документ.РеализацияТоваровУслуг.Товары. Такой запрос возвращает строки всех документов этого вида, а связь с шапкой обеспечивается полем «Ссылка». Это удобно для отчётов по содержимому документов, но помните: соединение табличной части с шапкой по ссылке — стандартный приём, и именно так строятся большинство выборок «документ + его товары».
Пример типового кода заполнения строки:
НоваяСтрока = Объект.Товары.Добавить();
НоваяСтрока.Номенклатура = НайденнаяНоменклатура;
НоваяСтрока.Количество = 2;
НоваяСтрока.Цена = 1500;
При программном заполнении учитывайте, что обработчики событий формы (например, автопересчёт суммы при изменении цены) на сервере сами не выполнятся — пересчёт нужно вызывать явно, обычно через экспортные процедуры модуля объекта или общих модулей. Это одна из самых частых причин «неправильных» сумм после загрузки данных из файла.
Для Каждого Строка Из Объект.Товары Цикл
Строка.Сумма = Строка.Количество * Строка.Цена;
КонецЦикла;
Сообщить("Итого: " + Объект.Товары.Итог("Сумма"));Типичные ошибки и ограничения
Распространённая ошибка пользователя — ввод данных в незаполненную шапку. Многие колонки табличной части наследуют значения из шапки (склад, организация, договор), и если шапка пуста, строки заполнятся непредсказуемо или документ откажется проводиться. Всегда заполняйте шапку первой.
Для разработчика опасны две вещи. Первая — модификация табличной части внутри цикла перебора по ней же: удаление строк во время обхода коллекции приводит к пропуску строк. Правильный приём — собрать строки к удалению в отдельный массив и удалять после цикла. Вторая — обращение к табличной части через запрос без отбора по ссылке: выборка всех строк всех документов на большой базе выполняется медленно.
Ограничение, о котором забывают: табличная часть не подходит для данных, которые должны жить независимо от объекта или изменяться несколькими документами. Если запись нужна и после удаления документа, или к ней обращаются из разных мест учёта — используйте регистр сведений или справочник, а не табличную часть.
Табличная часть или другие механизмы: что выбрать
Выбор между табличной частью, регистром сведений и вложенным справочником определяется временем жизни данных и способом доступа к ним. Табличная часть оптимальна, когда строки — неотъемлемая часть объекта и редактируются только внутри него. Регистр сведений нужен, когда данные должны существовать независимо и накапливаться. Подчинённый справочник подходит, когда у каждой строки должен быть собственный богатый набор реквизитов и код.
| Критерий | Табличная часть | Регистр сведений | Подчинённый справочник |
|---|---|---|---|
| Жизнь после удаления владельца | Строки удаляются вместе с объектом | Записи сохраняются | Элементы сохраняются |
| Доступ из других объектов | Только через объект-владелец | Независимый доступ | Независимый доступ |
| Собственные реквизиты строки | Есть, ограниченный набор | Измерения и ресурсы | Полный набор, как у справочника |
| Типичное применение | Товары в накладной, сотрудники в приказе | Цены, курсы валют, адреса | Договоры контрагента, банковские счета |
Как выбрать механизм хранения
Как проверить корректность заполнения
Перед проведением документа полезно пройтись по контрольным точкам: совпадает ли итог по табличной части с суммой первичного документа, заполнены ли обязательные колонки во всех строках, нет ли дублей номенклатуры, которые исказят остатки. В типовых конфигурациях часть этих проверок выполняется автоматически при проведении, и платформа сообщает номер строки с ошибкой — не игнорируйте эти сообщения, они экономят время поиска.
Для программной проверки используйте методы НайтиСтроки() с отбором по незаполненным реквизитам и Итог() для сверки сумм. Если документ провёлся, но результат сомнителен, откройте движения документа (кнопка «Дт/Кт» или отчёт по движениям) и сопоставьте записи в регистрах со строками табличной части — количество записей и суммы должны соответствовать.
Как проверить результат
Совпадает с суммой первичного документа
Расхождение — ищите строку с неверной ценой или количеством
Во всех строках заполнены номенклатура, количество, ставка НДС
Пустые ячейки — документ не проведётся или проведётся с ошибкой
Записи в регистрах соответствуют строкам табличной части
Записей меньше, чем строк, или суммы не сходятся
Каждая позиция встречается один раз или дубли осознанны
Случайные повторы одной номенклатуры завышают списание
Что важно запомнить
Табличная часть — встроенный в объект список однотипных строк для множественных данных: товаров, сотрудников, этапов. Строки принадлежат объекту и удаляются вместе с ним. Заполняйте шапку до строк, контролируйте итоги, а для независимых данных выбирайте регистр сведений или справочник.
Частые вопросы
Сколько табличных частей может быть у одного документа?
Количество не ограничено жёстко: у одного документа может быть несколько табличных частей, например «Товары», «Услуги» и «ЭтапыОплаты». Каждая хранится в базе как отдельная таблица и заполняется независимо. Практический предел определяется удобством формы и логикой учёта, а не платформой.
Можно ли восстановить удалённую строку табличной части?
Если документ не записан после удаления — закройте его без сохранения, строки вернутся. Если документ уже записан, автоматического восстановления нет: строку придётся вводить заново или восстанавливать из резервной копии базы. Поэтому перед очисткой табличной части кнопкой «Очистить» убедитесь, что данные действительно не нужны.
Почему при проведении документа возникает ошибка с указанием номера строки?
Платформа и типовая конфигурация проверяют каждую строку табличной части: заполненность обязательных реквизитов, наличие остатков на складе, корректность счетов учёта. Сообщение вида «Строка 3: не заполнена колонка Склад» указывает точное место проблемы — откройте эту строку и исправьте значение.
Чем табличная часть отличается от таблицы значений?
Табличная часть привязана к объекту конфигурации и хранится в базе данных вместе с ним. Таблица значений — временная структура в памяти, которая существует только во время выполнения кода и в базу не записывается. Таблицу значений часто используют как промежуточный буфер перед загрузкой данных в табличную часть.
Как выгрузить содержимое табличной части в Excel?
В большинстве типовых форм есть вывод списка: меню «Ещё» → «Вывести список» — содержимое табличной части откроется в табличном документе, который сохраняется в Excel или CSV. В управляемых формах также работает выделение строк и копирование через буфер обмена.
Можно ли обратиться к табличной части другого документа в запросе?
Да, через составное имя таблицы: Документ.ИмяДокумента.ИмяТабличнойЧасти. Связь с шапкой обеспечивается полем Ссылка. Но обязательно накладывайте отбор по ссылке или периоду — выборка строк по всем документам без ограничений на большой базе выполняется медленно.