Разработка и Конфигурация · 10 мин
Как создать табличную часть в 1С: пошаговое руководство
Как добавить табличную часть в документ или справочник 1С через конфигуратор: создание реквизитов, настройка формы, заполнение программно и типичные ошибки.
Табличная часть — это вложенная таблица внутри объекта конфигурации 1С: документа, справочника, обработки или отчёта. Классический пример — список товаров в документе «Реализация» или состав сотрудников в приказе. Без табличных частей не обходится практически ни одна конфигурация, поэтому умение их создавать и настраивать — базовый навык разработчика и администратора 1С.
Создать табличную часть можно двумя способами: через конфигуратор (изменение структуры метаданных) или программно — через значения типа «ТаблицаЗначений», которые живут только в памяти. В этой статье разобраны оба подхода: от добавления табличной части в документ до её заполнения кодом и проверки результата.
Важно понимать: изменение конфигурации требует прав на доработку и монопольного доступа к базе при обновлении структуры. Если вы работаете в типовой конфигурации, находящейся на поддержке, сначала оцените последствия — об этом ниже.
Что такое табличная часть и когда она нужна
Табличная часть — это коллекция строк, жёстко привязанная к конкретному объекту: у каждого документа «Поступление товаров» свой список номенклатуры, у каждого элемента справочника «Спецификации» — свой состав. Строки табличной части не существуют отдельно от объекта-владельца: при удалении документа удаляются и его строки.
Табличную часть стоит добавлять, когда у объекта есть повторяющийся набор данных с одинаковой структурой: товары, услуги, этапы работ, сотрудники, графики платежей. Если набор данных одиночный (одно поле, одно значение) — достаточно обычного реквизита. Если строки должны жить независимо и связываться с разными объектами — правильнее использовать регистр сведений или отдельный справочник.
Подготовка: права, копия базы и режим работы
Перед изменением конфигурации убедитесь, что у вас есть права на запуск конфигуратора и изменение метаданных. В клиент-серверном варианте обновление структуры базы данных потребует монопольного доступа — все пользователи должны выйти из системы, либо обновление выполняется в нерабочее время.
Обязательно сделайте резервную копию базы перед любыми изменениями структуры. Для файловой базы достаточно скопировать файл 1Cv8.1CD или выгрузить базу через «Администрирование → Выгрузить информационную базу». Для серверной — используйте средства СУБД или выгрузку dt.
Создание табличной части в конфигураторе
Основной сценарий — добавление табличной части в документ. Для справочника, обработки или отчёта шаги аналогичны.
- 1Откройте конфигуратор и найдите нужный объект в дереве конфигурации (например, Документы → РеализацияТоваров).
- 2Дважды щёлкните по объекту и перейдите на вкладку «Данные».
- 3В разделе «Табличные части» нажмите «Добавить» и задайте имя, например «Товары».
- 4Выделите созданную табличную часть и добавьте реквизиты: Номенклатура (СправочникСсылка.Номенклатура), Количество (Число), Цена (Число), Сумма (Число).
- 5Для каждого реквизита укажите тип, длину и точность: для сумм обычно Число(15,2), для количества — Число(15,3).
- 6Обновите конфигурацию базы данных (F7) и подтвердите реструктуризацию.
Имя табличной части задавайте осмысленно и в единственном числе не обязательно — принято использовать множественное: «Товары», «Услуги», «Сотрудники». Имена реквизитов должны быть уникальными внутри табличной части, но могут совпадать с реквизитами шапки — платформа их различает.
Обратите внимание на типы реквизитов. Для ссылок на номенклатуру выбирайте именно ссылочный тип, а не строку: это обеспечит контроль целостности и быстрый выбор из списка. Для денежных сумм избегайте типа «Строка» — иначе потеряете возможность итогов и арифметики.
Вывод табличной части на форму
После добавления в метаданные табличная часть не появится на форме автоматически — её нужно разместить. Откройте форму документа (вкладка «Формы» → основная форма объекта). В редакторе формы в правой панели реквизитов найдите объект и его табличную часть, затем перетащите её в дерево элементов формы в нужное место.
Платформа автоматически создаст таблицу формы с колонками по реквизитам. Проверьте свойства таблицы: удобно включить «Подвал» для отображения итогов по колонкам «Количество» и «Сумма» — для этого у колонки формы установите свойство «Отображать в подвале» и «Горизонтальное положение в подвале», а у таблицы укажите путь к данным для итогов.
Если форма управляемая и создаётся программно, таблицу можно добавить кодом в обработчике «ПриСозданииНаСервере», но в большинстве случаев достаточно визуального редактора — так проще сопровождать решение.
Программное заполнение и обработка строк
Заполнить табличную часть можно из любого кода, где доступен объект. Типовые операции выглядят так:
// Добавление строки
НоваяСтрока = Объект.Товары.Добавить();
НоваяСтрока.Номенклатура = НайденнаяНоменклатура;
НоваяСтрока.Количество = 2;
НоваяСтрока.Цена = 1500;
НоваяСтрока.Сумма = НоваяСтрока.Количество * НоваяСтрока.Цена;
// Перебор строк и итог
ИтогоСумма = 0;
Для Каждого Строка Из Объект.Товары Цикл
ИтогоСумма = ИтогоСумма + Строка.Сумма;
КонецЦикла;
// Очистка табличной части
Объект.Товары.Очистить();Частая задача — автоматический пересчёт суммы при изменении количества или цены в строке. Для этого в модуле формы создаются обработчики событий «ПриИзменении» для полей Количество и Цена, в которых вызывается общая процедура пересчёта текущей строки. Получить текущую строку в управляемой форме можно через Элементы.Товары.ТекущиеДанные.
Для массового заполнения (например, подбором из справочника) используйте методы «Загрузить» и «Выгрузить»: выгрузить табличную часть в таблицу значений, обработать и загрузить обратно. Это быстрее, чем построчное добавление при больших объёмах.
Альтернатива: таблица значений вместо табличной части
Не всегда нужна именно табличная часть метаданных. Если данные не хранятся в базе, а нужны только на время работы пользователя (подбор, промежуточный расчёт, настройки отчёта), правильнее использовать реквизит формы типа «ТаблицаЗначений».
Сравнение вариантов
Хранится в базе вместе с документом, участвует в проведении и запросах. Подходит для данных, которые должны сохраняться: товары, услуги, начисления.
Живёт только в сеансе, не требует изменения конфигурации. Подходит для временных данных, подбора и настроек, но не сохраняется между сеансами.
Подходит, когда строки должны существовать независимо от одного объекта и связываться с разными сущностями. Сложнее в настройке, но гибче.
Проверка результата и типичные ошибки
После обновления конфигурации откройте документ в режиме предприятия: табличная часть должна отображаться на форме, позволять добавлять и удалять строки, сохранять данные при записи документа. Проверьте проведение, если табличная часть участвует в движениях по регистрам.
Как проверить результат
Таблица видна, колонки соответствуют реквизитам, работает добавление строк
Таблицы нет на форме — реквизит не перенесён в элементы формы
После записи и переоткрытия строки на месте
Строки пропадают — проверьте, что заполняется именно табличная часть объекта, а не таблица значений формы
Суммы в подвале совпадают с суммой строк
Подвал пуст — не настроено свойство отображения итогов у колонки
Перед удалением или переименованием табличной части выполните поиск ссылок на неё: правый клик по объекту в дереве конфигурации → «Поиск ссылок в объектах». Это покажет все модули, запросы и формы, где она используется.
Что важно запомнить
Табличная часть создаётся на вкладке «Данные» объекта в конфигураторе, заполняется реквизитами с корректными типами, выводится на форму перетаскиванием и обновляется через реструктуризацию базы. Для типовых конфигураций предпочтительнее расширение, перед изменениями — резервная копия.
Частые вопросы
Можно ли добавить табличную часть без конфигуратора?
Нет. Структура метаданных изменяется только в конфигураторе (или через расширение, которое тоже создаётся в конфигураторе). В режиме предприятия можно лишь заполнять уже существующие табличные части. Ближайшая альтернатива без изменения конфигурации — дополнительные реквизиты и сведения, но они не образуют полноценную таблицу.
Как добавить табличную часть через расширение?
Создайте расширение (Конфигурация → Расширения конфигурации), добавьте в него заимствованный документ и создайте собственную табличную часть с реквизитами. Затем заимствуйте форму документа и разместите на ней новую таблицу. Типовая конфигурация при этом остаётся на поддержке.
Почему после добавления реквизита в табличную часть данные пропали?
Добавление реквизита не удаляет данные, но удаление или изменение типа существующего реквизита при реструктуризации может привести к потере значений. Платформа предупреждает об этом в окне реструктуризации — внимательно читайте список изменений перед подтверждением и держите резервную копию.
Как ограничить количество строк в табличной части?
Жёсткого ограничения в метаданных нет. Контроль реализуется кодом: в обработчике «ПередЗаписью» или «ОбработкаПроверкиЗаполнения» проверяйте количество строк и отказывайте в записи при превышении лимита.
Как вывести итог по колонке под таблицей?
В редакторе формы выделите таблицу и включите свойство «Подвал». Затем у нужной колонки установите «Отображать в подвале» и укажите путь к данным итога — платформа автоматически посчитает сумму по строкам табличной части.
Чем табличная часть отличается от таблицы значений?
Табличная часть — часть метаданных, хранится в базе вместе с объектом и доступна в запросах. Таблица значений — временная структура в памяти, не сохраняется и используется для промежуточных расчётов и отображения данных на форме.