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

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

Как создать табличную часть в 1С: пошаговое руководство

Как добавить табличную часть в документ или справочник 1С через конфигуратор: создание реквизитов, настройка формы, заполнение программно и типичные ошибки.

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

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

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

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

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

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

Подготовка: права, копия базы и режим работы

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

Обязательно сделайте резервную копию базы перед любыми изменениями структуры. Для файловой базы достаточно скопировать файл 1Cv8.1CD или выгрузить базу через «Администрирование → Выгрузить информационную базу». Для серверной — используйте средства СУБД или выгрузку dt.

Создание табличной части в конфигураторе

Основной сценарий — добавление табличной части в документ. Для справочника, обработки или отчёта шаги аналогичны.

Порядок действий
  1. 1
    Откройте конфигуратор и найдите нужный объект в дереве конфигурации (например, Документы → РеализацияТоваров).
  2. 2
    Дважды щёлкните по объекту и перейдите на вкладку «Данные».
  3. 3
    В разделе «Табличные части» нажмите «Добавить» и задайте имя, например «Товары».
  4. 4
    Выделите созданную табличную часть и добавьте реквизиты: Номенклатура (СправочникСсылка.Номенклатура), Количество (Число), Цена (Число), Сумма (Число).
  5. 5
    Для каждого реквизита укажите тип, длину и точность: для сумм обычно Число(15,2), для количества — Число(15,3).
  6. 6
    Обновите конфигурацию базы данных (F7) и подтвердите реструктуризацию.

Имя табличной части задавайте осмысленно и в единственном числе не обязательно — принято использовать множественное: «Товары», «Услуги», «Сотрудники». Имена реквизитов должны быть уникальными внутри табличной части, но могут совпадать с реквизитами шапки — платформа их различает.

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

Вывод табличной части на форму

После добавления в метаданные табличная часть не появится на форме автоматически — её нужно разместить. Откройте форму документа (вкладка «Формы» → основная форма объекта). В редакторе формы в правой панели реквизитов найдите объект и его табличную часть, затем перетащите её в дерево элементов формы в нужное место.

Платформа автоматически создаст таблицу формы с колонками по реквизитам. Проверьте свойства таблицы: удобно включить «Подвал» для отображения итогов по колонкам «Количество» и «Сумма» — для этого у колонки формы установите свойство «Отображать в подвале» и «Горизонтальное положение в подвале», а у таблицы укажите путь к данным для итогов.

Если форма управляемая и создаётся программно, таблицу можно добавить кодом в обработчике «ПриСозданииНаСервере», но в большинстве случаев достаточно визуального редактора — так проще сопровождать решение.

Программное заполнение и обработка строк

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

bsl
// Добавление строки
НоваяСтрока = Объект.Товары.Добавить();
НоваяСтрока.Номенклатура = НайденнаяНоменклатура;
НоваяСтрока.Количество = 2;
НоваяСтрока.Цена = 1500;
НоваяСтрока.Сумма = НоваяСтрока.Количество * НоваяСтрока.Цена;

// Перебор строк и итог
ИтогоСумма = 0;
Для Каждого Строка Из Объект.Товары Цикл
    ИтогоСумма = ИтогоСумма + Строка.Сумма;
КонецЦикла;

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

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

Для массового заполнения (например, подбором из справочника) используйте методы «Загрузить» и «Выгрузить»: выгрузить табличную часть в таблицу значений, обработать и загрузить обратно. Это быстрее, чем построчное добавление при больших объёмах.

Альтернатива: таблица значений вместо табличной части

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

Сравнение вариантов

Табличная часть объекта

Хранится в базе вместе с документом, участвует в проведении и запросах. Подходит для данных, которые должны сохраняться: товары, услуги, начисления.

Таблица значений на форме

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

Регистр сведений

Подходит, когда строки должны существовать независимо от одного объекта и связываться с разными сущностями. Сложнее в настройке, но гибче.

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

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

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

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

Отображение на форме
Норма

Таблица видна, колонки соответствуют реквизитам, работает добавление строк

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

Таблицы нет на форме — реквизит не перенесён в элементы формы

Сохранение данных
Норма

После записи и переоткрытия строки на месте

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

Строки пропадают — проверьте, что заполняется именно табличная часть объекта, а не таблица значений формы

Итоги в подвале
Норма

Суммы в подвале совпадают с суммой строк

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

Подвал пуст — не настроено свойство отображения итогов у колонки

Типичные ошибки
01
Добавили табличную часть, но забыли обновить конфигурацию базы данных — в режиме предприятия её не видно и код выдаёт ошибку.
02
Выбрали тип «Строка» для сумм и количеств — невозможно считать итоги и выполнять арифметику.
03
Добавили таблицу значений на форму вместо табличной части объекта — данные не сохраняются после записи.
04
Изменили типовую конфигурацию на поддержке вместо расширения — затруднены последующие обновления.
05
Удалили табличную часть, на которую ссылаются модули и печатные формы — конфигурация перестала проходить проверку.

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

Итог

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

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

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

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

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

Как добавить табличную часть через расширение?

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

Почему после добавления реквизита в табличную часть данные пропали?

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

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

Жёсткого ограничения в метаданных нет. Контроль реализуется кодом: в обработчике «ПередЗаписью» или «ОбработкаПроверкиЗаполнения» проверяйте количество строк и отказывайте в записи при превышении лимита.

Как вывести итог по колонке под таблицей?

В редакторе формы выделите таблицу и включите свойство «Подвал». Затем у нужной колонки установите «Отображать в подвале» и укажите путь к данным итога — платформа автоматически посчитает сумму по строкам табличной части.

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

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