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

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

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

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

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

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

Элемент встречается и в обычных формах (режим «обычное приложение»), и в управляемых формах. Концептуально это одно и то же, но свойства и способы программной работы отличаются. В современных конфигурациях на платформе 8.3 используются управляемые формы, поэтому дальнейший материал ориентирован прежде всего на них.

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

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

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

Основные виды источников данных для табличного поля

Выбор источника определяет поведение поля: можно ли редактировать строки, работает ли автоматическая сортировка, сохраняются ли изменения в базе. Ниже сопоставлены четыре типовых варианта.

ИсточникГде применяетсяРедактированиеОсобенности
Динамический списокСписки документов, справочниковОбычно через форму объектаАвтоматические сортировка и отбор, чтение порциями
Табличная частьСтроки документов и справочниковДа, напрямуюИзменения попадают в объект, пишутся при записи
Таблица значенийРезультаты запросов, промежуточные данныеДа, в памятиНе связана с базой, нужна ручная обработка
Дерево значенийИерархические структурыДа, в памятиОтображает вложенность строк

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

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

Динамический список

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

Табличная часть

Подходит для строк внутри объекта. Ограничение: данные существуют только как часть владельца, отдельно не хранятся.

Таблица значений

Подходит для произвольных наборов данных и отчётов. Ограничение: всё заполнение и сохранение — только программно.

Как добавить табличное поле на форму

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

После добавления проверьте ключевое свойство — «ПутьКДанным». Именно оно связывает элемент формы с источником. Если свойство пустое или указывает на несуществующий реквизит, поле отобразится пустым либо форма выдаст ошибку при открытии.

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

Настройка колонок, сортировки и отбора

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

Сортировка и отбор для динамического списка настраиваются в его свойствах: произвольный запрос, отбор по умолчанию, порядок. Пользователь в режиме предприятия может менять сортировку кликом по заголовку колонки, а отбор — через стандартную команду «Ещё → Настроить список». Для таблицы значений сортировка выполняется программно методом «Сортировать».

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

Не задавайте фиксированную ширину всем колонкам «впритык» под текущие данные. При смене разрешения экрана или масштаба интерфейса заголовки обрежутся. Оставьте хотя бы одной текстовой колонке возможность растягиваться.
ПЗ
Практическое замечание

Программная работа с табличным полем: типовые приёмы

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

1c
// Обход строк табличной части документа
Для Каждого Строка Из Объект.Товары Цикл
    Строка.Сумма = Строка.Количество * Строка.Цена;
КонецЦикла;

// Заполнение таблицы значений запросом
Запрос = Новый Запрос("ВЫБРАТЬ Номенклатура, Остаток ИЗ РегистрОстатки");
ТаблицаДанных.Загрузить(Запрос.Выполнить().Выгрузить());

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

Типичные ошибки и как их избежать

Самая частая проблема — пустое табличное поле при открытии формы. Причины: не заполнен источник (забыли вызвать «Загрузить»), неверный «ПутьКДанным», либо отбор динамического списка отсекает все записи. Проверяйте по порядку: сначала данные в источнике, потом связь элемента с источником, потом отборы.

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

Типичные ошибки
01
Связь табличного поля с таблицей значений без кода сохранения — изменения пользователя теряются при закрытии формы.
02
Запрос к базе в обработчике ПриАктивизацииСтроки — форма тормозит при каждом перемещении курсора.
03
Отбор в динамическом списке, заданный и в настройках, и в коде, — условия конфликтуют, список пустой.
04
Изменение типовой формы без расширения или копии — доработки слетают при обновлении конфигурации.

Как проверить, что табличное поле настроено правильно

После настройки пройдите короткий контрольный маршрут в режиме предприятия: откройте форму, проверьте отображение данных, сортировку, редактирование и сохранение. Ниже — контрольные точки, отличающие норму от проблемы.

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

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

Отображение данных
Норма

Строки видны сразу после открытия формы, колонки читаемы

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

Поле пустое, хотя данные в базе есть — проверяйте ПутьКДанным и отбор

Сортировка
Норма

Клик по заголовку колонки меняет порядок строк

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

Сортировка не работает или сбрасывает отбор

Редактирование
Норма

Изменённая строка сохраняется после записи объекта

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

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

Скорость
Норма

Прокрутка и выбор строк происходят без заметных пауз

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

Каждый клик по строке вызывает задержку — ищите запросы в обработчиках

Часто задаваемые вопросы

Чем табличное поле отличается от динамического списка?

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

Можно ли редактировать данные прямо в табличном поле списка?

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

Почему табличное поле пустое, хотя запрос возвращает данные?

Чаще всего результат запроса не загружен в реквизит формы: нужен вызов «ЗначениеВДанныеФормы» или метод «Загрузить» у таблицы значений. Также проверьте, что «ПутьКДанным» табличного поля указывает именно на тот реквизит, который вы заполняете.

Как добавить итог по колонке под табличным полем?

У колонки табличного поля есть свойство отображения итога в подвале: включите у самого поля показ подвала, а у нужной колонки установите «ОтображатьВПодвале» и путь к данным итога. Для табличной части итог можно вычислить методом «Итог» по колонке.

Работает ли табличное поле в веб-клиенте и мобильном клиенте?

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

Что выбрать для произвольного набора данных: таблицу значений или динамический список?

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

Итог

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

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