Разработка и Конфигурация · 10 мин
Как добавить табличную часть на форму 1С в обычных формах
Пошаговая инструкция: как добавить табличную часть на форму 1С в обычных формах. Работа с конфигуратором, реквизиты, табличное поле, программное заполнение и типичные ошибки.
Табличная часть — это структура данных объекта 1С (документа, справочника, обработки), которая хранит набор однотипных строк: товары в накладной, сотрудники в приказе, этапы в задаче. Чтобы пользователь мог видеть и редактировать эти строки, табличную часть нужно вывести на форму. В обычных формах за это отвечает элемент управления «Табличное поле», связанный с данными объекта.
Работа ведётся в конфигураторе и состоит из двух этапов: сначала табличная часть должна существовать в метаданных объекта (или быть создана как реквизит формы типа «ТаблицаЗначений»), затем она размещается на форме через панель элементов. Ниже разобраны оба сценария, настройка колонок, программное заполнение и проверка результата.
Подготовка: где должна существовать табличная часть
Прежде чем размещать что-то на форме, убедитесь, что данные есть в структуре объекта. Откройте конфигуратор, найдите нужный документ, справочник или обработку в дереве конфигурации и перейдите на закладку «Данные». Табличные части отображаются отдельным списком рядом с реквизитами. Если нужной части нет, добавьте её кнопкой «Добавить табличную часть», задайте имя (например, «Материалы») и создайте реквизиты — колонки будущей таблицы.
Для каждого реквизита табличной части укажите тип: строка, число, дата или ссылка на справочник. От типа зависит, какой элемент редактирования появится в ячейке таблицы на форме. Например, реквизит типа «СправочникСсылка.Номенклатура» автоматически получит поле ввода с кнопкой выбора из списка.
Отдельный случай — когда таблица нужна только на форме и не должна храниться в базе данных. Тогда табличную часть в метаданных создавать не нужно: добавьте реквизит формы типа «ТаблицаЗначений» и работайте с ним как с источником данных табличного поля. Это типичное решение для обработок и произвольных подборов.
Добавление табличного поля на форму через конфигуратор
Откройте нужную форму объекта: в дереве конфигурации разверните объект, дважды щёлкните по форме в ветке «Формы». Если формы нет, создайте её конструктором — он сам предложит разместить табличные части. Для существующей формы перейдите на закладку «Форма» в нижней части окна редактора, где отображается диалог.
На панели инструментов найдите кнопку «Разместить данные» (или используйте меню «Форма → Разместить данные»). В открывшемся окне отметьте галочкой табличную часть объекта, выберите тип элемента «ТабличноеПоле» и нажмите «ОК». Конфигуратор автоматически создаст табличное поле с колонками по всем реквизитам табличной части и правильно заполнит свойство «Данные».
Альтернативный способ — вставить элемент вручную: меню «Форма → Вставить элемент управления → Табличное поле», затем в палитре свойств в поле «Данные» указать путь вида «Объект.Товары» или «Товары» (в зависимости от того, чья это форма). После этого добавьте колонки: правый клик по табличному полю в дереве элементов → «Добавить колонку», у каждой колонки заполните «Данные» именем реквизита табличной части.
- 1Откройте объект в конфигураторе и убедитесь, что табличная часть существует на закладке «Данные»
- 2Откройте форму объекта и перейдите на закладку «Форма»
- 3Выполните «Форма → Разместить данные» и отметьте табличную часть
- 4Проверьте, что у табличного поля заполнено свойство «Данные»
- 5Настройте колонки: заголовки, ширину, видимость
- 6Сохраните форму и обновите конфигурацию базы данных (F7)
- 7Откройте объект в режиме 1С:Предприятие и проверьте отображение таблицы
Настройка колонок и внешнего вида таблицы
После размещения табличного поля проверьте колонки. Каждая колонка имеет свойства «Данные» (какой реквизит показывает), «Текст шапки» (заголовок), «Ширина» и «Изменять видимость». Лишние колонки, например служебные реквизиты, можно удалить из табличного поля — сами данные в табличной части при этом сохранятся.
Обратите внимание на командную панель табличного поля. По умолчанию у элемента включено свойство «АвтоКоманднаяПанель», которое выводит стандартные кнопки: добавить, скопировать, удалить, переместить строку. Если панель не появилась, добавьте элемент «Командная панель» вручную и свяжите её с табличным полем через свойство «Источник действий».
Для колонок с числовыми значениями полезно включить итог по колонке: в свойствах колонки установите «Отображать итог» и убедитесь, что у табличного поля включён «Подвал». Так пользователь сразу увидит сумму по документу без дополнительных отчётов.
Программное заполнение и обработка строк
Если таблицу нужно заполнять из кода — например, по кнопке «Заполнить» — используйте обращение к табличной части объекта в модуле формы. Стандартный приём: очистить табличную часть, получить данные запросом и в цикле добавлять строки.
Товары.Очистить();
Запрос = Новый Запрос("ВЫБРАТЬ Номенклатура, Количество ИЗ ...");
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
НоваяСтрока = Товары.Добавить();
НоваяСтрока.Номенклатура = Выборка.Номенклатура;
НоваяСтрока.Количество = Выборка.Количество;
КонецЦикла;
Для реакции на действия пользователя используйте события табличного поля: «ПриНачалеРедактирования», «ПриОкончанииРедактирования», «ПередУдалением». Назначаются они через палитру свойств элемента, кнопка с изображением молнии. Типичный сценарий — пересчёт суммы строки при изменении количества или цены в событии «ПриИзменении» конкретной колонки.
Если табличное поле на форме не обновляется после программного заполнения, проверьте, что код выполняется в модуле формы и обращается именно к табличной части объекта, а не к локальной переменной. Для реквизитов формы типа «ТаблицаЗначений» иногда требуется присвоить заполненную таблицу обратно реквизиту — простого заполнения копии недостаточно.
Таблица значений на форме обработки: отличия от табличной части
Во внешних обработках и отчётах на обычных формах чаще используют не табличную часть объекта, а реквизит формы типа «ТаблицаЗначений». Порядок такой: в редакторе формы откройте окно реквизитов формы, добавьте реквизит, установите тип «ТаблицаЗначений». Затем разместите табличное поле и укажите в «Данные» имя этого реквизита.
Колонки такой таблицы можно описать заранее в коде через «Колонки.Добавить()» в событии «ПриОткрытии» формы, либо дать им формироваться автоматически при загрузке данных методом «Загрузить()». Автоматический вариант проще, но заголовки колонок придётся настраивать отдельно, иначе пользователь увидит технические имена.
Сравнение вариантов
Данные хранятся в базе вместе с документом или справочником. Подходит для накладных, заказов, приказов. Требует изменения метаданных и обновления конфигурации.
Данные живут только пока открыта форма. Подходит для обработок, подборов, временных списков. Не требует изменения структуры объекта.
В обычных формах используется реже, через табличное поле с типом источника «Список». Подходит для отображения данных без редактирования.
Проверка результата и типичные ошибки
После сохранения формы обновите конфигурацию базы данных клавишей F7 и откройте объект в режиме 1С:Предприятие. Признаки корректной настройки: таблица видна на форме, строки добавляются и удаляются кнопками командной панели, данные сохраняются после записи объекта и отображаются при повторном открытии.
Если таблица видна, но данные не сохраняются, первым делом проверьте цепочку связи: реквизит табличной части → свойство «Данные» табличного поля → свойство «Данные» каждой колонки. Разрыв на любом уровне даёт именно такой симптом. Также убедитесь, что у формы назначено свойство «Основная форма» или что объект открывается именно с этой формой, а не с автоматически сгенерированной.
Как проверить результат
Табличное поле видно на форме с колонками и заголовками
Пустая область или ошибка при открытии формы
Кнопка «Добавить» создаёт новую строку, ячейки редактируются
Кнопка неактивна или строка появляется без возможности ввода
После записи и повторного открытия строки на месте
Данные пропадают — нарушена связь с данными объекта
FAQ
Можно ли добавить табличную часть, не меняя конфигурацию?
Нет, табличная часть — это часть структуры метаданных объекта, она создаётся только в конфигураторе с последующим обновлением конфигурации базы данных. Обходной вариант без изменения метаданных — реквизит формы типа «ТаблицаЗначений», но его данные не хранятся в базе.
Почему табличное поле добавлено, но таблица на форме пустая?
Чаще всего не заполнено свойство «Данные» у табличного поля или у его колонок. Проверьте, что в свойстве указан путь к табличной части объекта, а у каждой колонки — имя конкретного реквизита этой части.
Как запретить пользователю удалять строки из таблицы?
Установите у табличного поля свойство «Только просмотр» для полного запрета редактирования, либо используйте событие «ПередУдалением» с установкой параметра «Отказ» в значение Истина — тогда добавлять и редактировать строки можно, а удалять нельзя.
Как вывести две табличные части одного объекта на одну форму?
Добавьте два табличных поля, каждое со своим значением свойства «Данные» (например, «Объект.Товары» и «Объект.Услуги»). Ограничений по количеству табличных полей на форме нет, важно только грамотно расположить их на диалоге, например на разных страницах панели.
Чем обычные формы отличаются от управляемых при работе с табличной частью?
В обычных формах элемент «Табличное поле» напрямую связывается с данными, а логика пишется в модуле формы без разделения на клиент и сервер. В управляемых формах используются реквизиты формы, директивы «&НаКлиенте» и «&НаСервере», а состав элементов формируется декларативно. Подходы несовместимы, код между ними напрямую не переносится.
Нужно ли программировать, чтобы таблица заработала?
Для базового сценария — нет. Если табличная часть существует в метаданных, достаточно разместить табличное поле через «Разместить данные» и настроить колонки мышью. Программный код понадобится только для автозаполнения, пересчётов и нестандартных проверок.
Что важно запомнить
Табличная часть выводится на обычную форму элементом «Табличное поле», связанным с данными через одноимённое свойство. Проверяйте цепочку связи на трёх уровнях: табличная часть объекта, табличное поле, колонки. Перед обновлением рабочей базы делайте резервную копию, а результат проверяйте в режиме 1С:Предприятие — добавлением строки и сохранением объекта.