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

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

Как сделать таблицы в 1С: инструкция для пользователей и разработчиков

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

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

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

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

Какие виды таблиц существуют в 1С и что выбрать

Прежде чем создавать таблицу, ответьте на вопрос: где эти данные должны жить и кто с ними будет работать? От ответа зависит выбор объекта. Ошибка на этом этапе приводит к тому, что данные либо не сохраняются, либо их невозможно вывести на печать.

ОбъектНазначениеГде создаётся
Табличная частьХранение строк документа или справочника в базе данныхКонфигуратор, ветка объекта
Таблица значенийВременные данные в памяти для обработки в кодеПрограммно, в модуле
Табличный документПечатные формы, отчёты, вывод на экранКонфигуратор (макет) или программно
Динамический списокОтображение данных базы на форме с отборомФорма в Конфигураторе

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

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

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

Нужно, чтобы строки сохранялись вместе с документом и участвовали в проводкахСоздавайте табличную часть объекта в Конфигураторе
Данные нужны только на время расчёта или для передачи между процедурамиИспользуйте таблицу значений в коде
Требуется печатная форма или файл для выгрузкиСтройте табличный документ по макету
Пользователь должен видеть и фильтровать существующие данные базыДобавьте на форму динамический список

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

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

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

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

Порядок действий
  1. 1
    Сделайте резервную копию базы перед изменением структуры
  2. 2
    Откройте Конфигуратор и найдите нужный документ или справочник
  3. 3
    Добавьте табличную часть и задайте ей имя
  4. 4
    Добавьте реквизиты-колонки с корректными типами данных
  5. 5
    Обновите конфигурацию базы данных (F7)
  6. 6
    Проверьте результат в режиме «Предприятие»: создайте документ и добавьте строки

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

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

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

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

bsl
&НаКлиенте
Процедура ТоварыКоличествоПриИзменении(Элемент)
    Строка = Элементы.Товары.ТекущиеДанные;
    Если Строка <> Неопределено Тогда
        Строка.Сумма = Строка.Количество * Строка.Цена;
    КонецЕсли;
КонецПроцедуры

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

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

Базовый шаблон: объявите переменную, создайте объект конструктором Новый ТаблицаЗначений, добавьте колонки через Колонки.Добавить() с указанием имени и типа, затем заполняйте строки методом Добавить(). Типы колонок задавайте явно через Новый ОписаниеТипов("Число") или строковый тип — это ускоряет работу и упрощает сортировку.

bsl
ТЗ = Новый ТаблицаЗначений;
ТЗ.Колонки.Добавить("Номенклатура", Новый ОписаниеТипов("СправочникСсылка.Номенклатура"));
ТЗ.Колонки.Добавить("Количество", Новый ОписаниеТипов("Число"));

НоваяСтрока = ТЗ.Добавить();
НоваяСтрока.Номенклатура = СсылкаНаТовар;
НоваяСтрока.Количество = 5;

ТЗ.Сортировать("Количество Убыв");

Полезные методы, которые стоит знать: Свернуть() — группировка с суммированием (аналог GROUP BY), Найти() и НайтиСтроки() — поиск по значению, Скопировать() — выборка части таблицы по отбору, Итог() — сумма по колонке. Для передачи таблицы между сервером и клиентом в управляемых формах используйте ЗначениеВДанныеФормы(), иначе таблицу нельзя отобразить на форме напрямую.

Ограничение: таблица значений живёт в памяти сервера или клиента. На больших объёмах (сотни тысяч строк) она заметно расходует оперативную память и работает медленнее запроса. Если данные можно получить запросом — используйте запрос, а таблицу значений применяйте для того, что запросом сделать неудобно.

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

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

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

Чтобы создать макет, откройте объект в Конфигураторе, перейдите на ветку «Макеты» и нажмите «Добавить» → «Табличный документ». В редакторе макета нарисуйте шапку и строки как в Excel: объединяйте ячейки, задавайте границы и шрифты. Ячейки, куда будут подставляться данные, оформите как параметры: в свойствах ячейки установите «Заполнение» = «Параметр» и задайте имя, например «Номенклатура».

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

bsl
ТабДок = Новый ТабличныйДокумент;
Макет = ПолучитьМакет("МакетНакладной");
ОбластьСтрока = Макет.ПолучитьОбласть("СтрокаТовары");

Для Каждого СтрокаТовары Из Товары Цикл
    ОбластьСтрока.Параметры.Заполнить(СтрокаТовары);
    ТабДок.Вывести(ОбластьСтрока);
КонецЦикла;

ТабДок.Показать("Накладная");

Как проверить результат и где чаще всего ошибаются

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

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

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

Табличная часть в режиме «Предприятие»
Норма

Строки добавляются, сохраняются после записи и перепроведения документа

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

Колонки не видны, данные пропадают после записи — табличная часть не выведена на форму или конфигурация БД не обновлена

Таблица значений в коде
Норма

Отладчик показывает заполненные строки, сортировка и итоги работают

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

Пустая таблица или ошибка «Поле не обнаружено» — проверьте имена колонок и заполнение

Печатная форма
Норма

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

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

В ячейках видны имена параметров угловыми скобками или пусто — имена параметров в макете и коде не совпадают

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

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

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

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

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

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

Почему печатная форма выводит имена параметров вместо значений?

Имена параметров в макете и в коде не совпадают, либо параметр не заполнен перед выводом области. Проверьте, что имя в свойствах ячейки макета («Заполнение» = «Параметр») в точности равно имени, которое вы передаёте в Параметры.Заполнить() или присваиваете напрямую. Регистр букв значения не имеет, но лишние пробелы и опечатки — частая причина.

Как выгрузить таблицу из 1С в Excel?

Табличный документ сохраняется командой ТабДок.Записать(ИмяФайла, ТипФайлаТабличногоДокумента.XLSX). Пользователю проще: в открытой печатной форме или отчёте нажмите «Файл → Сохранить как» и выберите формат Excel. Табличную часть документа можно выгрузить через обработку «Выгрузка и загрузка данных» или скопировать выделенные строки в буфер обмена.

Почему после добавления табличной части она не видна в режиме «Предприятие»?

Чаще всего не выполнено обновление конфигурации базы данных (F7) — изменения в Конфигураторе не применяются к рабочей базе автоматически. Вторая причина: табличная часть создана, но не выведена на форму документа. Третья — у роли пользователя нет прав на просмотр соответствующих реквизитов.

Итог

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

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