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

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

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

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

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

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

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

Где встречаются табличные части и как они устроены

Табличные части есть у большинства объектов конфигурации: документов, справочников, планов видов характеристик, обработок, отчётов, бизнес-процессов и задач. У документа «Поступление товаров» это «Товары» и «Услуги», у справочника «Номенклатура» — например, «Дополнительные реквизиты», у задачи — табличная часть с исполнителями.

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

В базе данных табличные части физически хранятся в отдельных таблицах, связанных с основной таблицей объекта по ссылке. Это важно понимать при оптимизации: документ с тысячами строк в табличной части записывается и проводится заметно дольше, чем документ с десятком строк.

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

В управляемых формах табличная часть выглядит как таблица с кнопками «Добавить», «Скопировать», «Удалить» и часто «Подбор». Минимальный сценарий: нажать «Добавить», выбрать номенклатуру в первой колонке — остальные поля (цена, ставка НДС, счета учёта) подставятся автоматически благодаря обработчикам событий формы.

Кнопка «Подбор» открывает форму множественного выбора: вы добавляете позиции в корзину, а затем одним действием переносите их в табличную часть. Это быстрее, чем построчное добавление, когда позиций больше трёх-пяти.

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

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

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

Разработчик создаёт табличную часть в дереве конфигурации: правый клик по объекту → «Добавить» → «Табличная часть». Задаётся имя (например, «Материалы»), синоним, затем добавляются реквизиты с типами. Имя должно быть уникальным внутри объекта и не совпадать с именами стандартных реквизитов.

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

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

В коде табличная часть доступна как свойство объекта: ДокументОбъект.Товары — это коллекция строк. Типовые операции: добавление строки методом Добавить(), обход циклом Для каждого Строка Из ..., поиск методом Найти() или НайтиСтроки(), очистка методом Очистить(), подсчёт итога методом Итог("Сумма").

bsl
Для каждого СтрокаТовара Из ДокументОбъект.Товары Цикл
    СтрокаТовара.Сумма = СтрокаТовара.Количество * СтрокаТовара.Цена;
КонецЦикла;
Сообщить("Итого: " + ДокументОбъект.Товары.Итог("Сумма"));

Для сложных выборок табличную часть выгружают в таблицу значений методом Выгрузить(), а затем используют запрос, свёртку или сортировку. Обратная операция — Загрузить() — заменяет содержимое табличной части данными из таблицы значений. Помните: Загрузить() полностью очищает существующие строки.

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

Табличная часть против регистра сведений и таблицы значений

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

Выбор зависит от природы данных. Если строки не имеют смысла вне документа — это табличная часть. Если данные живут самостоятельно и запрашиваются из разных мест (цены номенклатуры) — регистр сведений. Если структура нужна только на время расчёта — таблица значений.

Маршрут решения

Как выбрать действие

Строки принадлежат одному документу и удаляются вместе с нимИспользуйте табличную часть документа
Данные должны читаться без открытия объекта-владельцаВыносите данные в регистр сведений
Структура нужна только на время обработки или обменаПрименяйте таблицу значений

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

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

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

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

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

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

Количество строк после загрузки или обработки
Норма

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

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

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

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

Итог по колонке «Сумма» равен сумме в шапке документа

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

Итоги расходятся — не пересчитаны цены, количество или НДС

Заполненность обязательных колонок
Норма

Нет пустых ссылок на номенклатуру, счета, склады

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

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

Для программной проверки используйте метод ПроверитьЗаполнение() объекта — он задействует стандартные проверки обязательных реквизитов, включая реквизиты табличных частей, и выдаст список незаполненных полей.

Частые вопросы о табличных частях

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

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

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

Программно это делается выгрузкой в таблицу значений: ТЗ = Источник.Товары.Выгрузить(), затем Приёмник.Товары.Загрузить(ТЗ). В пользовательском режиме многие конфигурации предлагают кнопку «Заполнить» → «Заполнить по документу-основанию».

Почему в форме не видна добавленная в конфигураторе табличная часть?

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

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

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

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

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

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

Используйте метод Очистить(): ДокументОбъект.Товары.Очистить(). Изменения вступят в силу только после записи объекта методом Записать(). До записи очистку можно отменить, просто не сохраняя объект.

Итог

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

Табличная часть — встроенная таблица внутри объекта 1С для связи «один ко многим». Пользователь заполняет её кнопками «Добавить» или «Подбор», разработчик — через коллекцию строк в коде. Перед массовыми изменениями делайте копию базы, а после — сверяйте количество строк и итоговые суммы.