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

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

Как сделать таблицу в 1С Предприятие

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

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

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

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

Определяем, какой тип таблицы нужен

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

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

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

Как выбрать тип таблицы

Нужен отчёт для печати или сохранения в Excel/PDFИспользуйте табличный документ
Нужно обработать данные в памяти: свернуть, отсортировать, посчитать итогиСоздайте таблицу значений программно
Строки должны храниться внутри документа или справочникаДобавьте табличную часть в конфигураторе
Нужен интерактивный список записей на форме с отборомИспользуйте динамический список

Создаём табличный документ для печати

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

Готовый документ сохраняется через «Файл» → «Сохранить как» в формате MXL, а также может быть выгружен в Excel или PDF. Такой способ подходит для разовых документов, но данные в него придётся вносить вручную.

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

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

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

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

ТабДок.Показать();

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

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

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

Минимальный порядок: объявить таблицу, описать колонки, заполнить строками. Типы колонок лучше задавать явно через описание типов — это избавит от проблем при сортировке и сравнении значений, когда в одной колонке окажутся и строки, и числа.

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

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

ТЗ.Свернуть("Номенклатура", "Количество");
ТЗ.Сортировать("Количество Убыв");

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

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

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

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

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

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

Выводим данные через динамический список

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

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

Для отбора записей без изменения запроса используются параметры компоновки данных: например, отбор по периоду или контрагенту задаётся через ЭлементыОтбора динамического списка. Это безопаснее, чем подстановка значений прямо в текст запроса, и не требует переписывать запрос при каждом новом отборе.

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

Проверяем результат и исправляем типичные проблемы

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

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

Типичные ошибки
01
Имя параметра в макете не совпадает с именем в коде — ячейка выводится пустой
02
Колонки таблицы значений созданы без типа — сортировка и сравнение работают непредсказуемо
03
Данные хранятся в таблице значений вместо табличной части — после закрытия сеанса всё теряется
04
Обновление конфигурации без резервной копии — при сбое реструктуризации данные можно потерять
05
В динамическом списке произвольный запрос без отбора — форма открывается медленно на больших объёмах
Контрольные точки

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

Табличный документ
Норма

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

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

Пустые ячейки, разрывы строк, ошибка «Параметр не найден»

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

Количество строк и итоги по колонкам совпадают с ожидаемыми

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

Строк нет или после свёртки пропали нужные колонки

Табличная часть
Норма

Строки сохраняются после записи и переоткрытия объекта

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

Строки вводятся, но исчезают после записи

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

Записи отображаются, отбор и сортировка работают

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

Пустой список при наличии данных или ошибка запроса при открытии формы

Итог

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

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

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

Можно ли создать таблицу в 1С без программирования?

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

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

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

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

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

Почему после добавления табличной части старые документы открываются с пустой таблицей?

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

Что выбрать для отчёта: табличный документ или СКД?

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

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

Установите точку останова после заполнения таблицы, запустите отладку, выделите переменную и нажмите Shift+F9 («Вычислить выражение»). Таблица значений откроется в виде сетки, где можно просмотреть все строки и колонки.