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

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

Как заполнить табличное поле в 1С

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

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

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

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

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

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

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

Ручное заполнение табличной части документа

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

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

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

Если табличная часть большая, обратите внимание на кнопку «Ещё» над таблицей: там часто скрыты команды «Сортировать», «Перенести строку», «Заполнить» и другие групповые операции, которые экономят время при десятках позиций.

Заполнение через подбор и загрузку из файла

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

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

Если штатной загрузки в конфигурации нет, используйте типовую обработку «Загрузка данных из табличного документа» (доступна в конфигурациях на БСП через «Администрирование» → «Перенос данных») или обратитесь к специалисту по 1С для написания обработки.

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

Разработчику для заполнения табличной части объекта достаточно методов Добавить() и присвоения значений реквизитам строки. Типовой код в модуле объекта или формы выглядит так:

Для Каждого СтрокаДанных Из ДанныеДляЗаполнения Цикл

НоваяСтрока = Объект.Товары.Добавить();

НоваяСтрока.Номенклатура = СтрокаДанных.Номенклатура;

НоваяСтрока.Количество = СтрокаДанных.Количество;

НоваяСтрока.Цена = СтрокаДанных.Цена;

НоваяСтрока.Сумма = НоваяСтрока.Количество * НоваяСтрока.Цена;

КонецЦикла;

Чтобы очистить табличную часть перед заполнением, используйте Объект.Товары.Очистить(). Для поиска существующей строки вместо добавления дубликата применяйте Найти() или НайтиСтроки() с отбором по ключевым реквизитам.

Если заполнение выполняется на форме управляемого приложения, помните о разделении контекста: код с директивой &НаСервере работает с данными объекта, а &НаКлиенте — с интерфейсом. Запросы к базе и обращения к менеджерам объектов допустимы только на сервере.

Программное заполнение таблицы значений на форме

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

&НаСервере

Процедура ЗаполнитьТаблицу()

ТаблицаДанных.Очистить();

Запрос = Новый Запрос("ВЫБРАТЬ Ссылка, Наименование ИЗ Справочник.Номенклатура");

Выборка = Запрос.Выполнить().Выбрать();

Пока Выборка.Следующий() Цикл

Строка = ТаблицаДанных.Добавить();

Строка.Номенклатура = Выборка.Ссылка;

Строка.Наименование = Выборка.Наименование;

КонецЦикла;

КонецПроцедуры

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

Частые ошибки и проверка результата

Типичные ошибки
01
Не заполнено свойство «ПутьКДанным» у табличного поля — данные в реквизите есть, но на форме их не видно.
02
Заполнение выполняется на клиенте с обращением к запросам — возникает ошибка, так как запросы доступны только на сервере.
03
Строки добавлены в табличную часть, но объект не записан — после закрытия формы данные теряются.
04
Используется Добавить() вместо поиска существующей строки — в таблице накапливаются дубликаты при повторном запуске.
05
Несовпадение типов: в колонку с типом «Число» подставляется строка из файла — получаются нулевые или пустые значения.

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

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

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

Количество строк в табличной части
Норма

Совпадает с числом позиций в источнике данных

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

Строк меньше или появились дубликаты

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

Сходится с суммой по строкам и исходными данными

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

Сумма нулевая или расходится — проверяйте цены и количество

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

Все добавленные строки видны сразу после заполнения

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

Таблица пустая — проверяйте ПутьКДанным и контекст выполнения

Что выбрать в разных ситуациях

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

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

Нужно внести несколько позиций в документ вручнуюИспользуйте кнопку «Добавить» и ввод по строке
Позиций много и они есть в справочникеОткройте «Подбор» и переносите позиции списком
Данные находятся в Excel или CSVИспользуйте «Загрузить из файла» или обработку загрузки, предварительно проверив на копии
Заполнение должно выполняться автоматически по алгоритмуРеализуйте программное заполнение через Добавить() на сервере
Табличное поле показывает динамический списокНе заполняйте его напрямую — измените исходные данные или запрос списка

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

Итог

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

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

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

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

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

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

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

Можно ли заполнить табличное поле, скопировав данные из Excel через буфер обмена?

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

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

Программно — методом Объект.Товары.Очистить(). Вручную — выделите все строки (Ctrl+A в таблице) и нажмите Delete или кнопку «Удалить». Учтите, что очистка необратима: после записи документа восстановить строки можно только из копии базы.

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

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

Чем отличается заполнение табличной части от заполнения регистра сведений?

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