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

Отчеты и Аналитика · 14 мин

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

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

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

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

Ниже разобраны все основные сценарии: от создания простой таблицы через интерфейс до программного вывода данных с оформлением. Примеры кода приведены на встроенном языке 1С и работают в типовых конфигурациях на управляемых формах.

Как выбрать тип таблицы под задачу

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

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

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

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

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

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

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

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

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

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

Отчет на СКД

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

Создание табличного документа вручную

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

Такой документ удобно использовать как шаблон: заполните шапку, задайте ширину колонок, сохраните файл через «Файл» → «Сохранить как» в формате MXL. Позже этот файл можно подключить к конфигурации как макет или открыть программно и заполнить данными.

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

Программное создание табличного документа

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

Пример простого вывода без макета:

ТабДок = Новый ТабличныйДокумент;

// Шапка таблицы

ТабДок.Область("R1C1").Текст = "Номенклатура";

ТабДок.Область("R1C2").Текст = "Количество";

// Запрос данных

Запрос = Новый Запрос;

Запрос.Текст = "ВЫБРАТЬ ПЕРВЫЕ 100

| Товары.Ссылка КАК Номенклатура,

| Товары.Остаток КАК Количество

|ИЗ

| Справочник.Номенклатура КАК Товары";

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

НомерСтроки = 2;

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

ТабДок.Область("R" + НомерСтроки + "C1").Текст = Строка(Выборка.Номенклатура);

ТабДок.Область("R" + НомерСтроки + "C2").Текст = Выборка.Количество;

НомерСтроки = НомерСтроки + 1;

КонецЦикла;

ТабДок.Показать("Остатки товаров");

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

bsl
ТабДок = Новый ТабличныйДокумент;
ТабДок.Область("R1C1").Текст = "Заголовок";
ТабДок.Показать("Моя таблица");

Вывод таблицы через макет

Макет табличного документа создается в конфигураторе: откройте ветку «Общие» → «Макеты», добавьте новый макет типа «Табличный документ». В редакторе выделите строки шапки, щелкните правой кнопкой и выберите «Свойства», задайте имя области, например «Шапка». Аналогично создайте область «Строка» с параметрами в ячейках.

Параметр в макете задается через свойство ячейки «Заполнение» = «Параметр» и имя параметра. В коде область получают методом ПолучитьОбласть(), заполняют через Параметры и выводят методом Вывести():

ТабДок = Новый ТабличныйДокумент;

Макет = ПолучитьОбщийМакет("МакетОтчета");

ОбластьШапка = Макет.ПолучитьОбласть("Шапка");

ТабДок.Вывести(ОбластьШапка);

ОбластьСтрока = Макет.ПолучитьОбласть("Строка");

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

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

ОбластьСтрока.Параметры.Количество = Выборка.Количество;

ТабДок.Вывести(ОбластьСтрока);

КонецЦикла;

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

Порядок действий
  1. 1
    Создайте макет типа «Табличный документ» в конфигураторе
  2. 2
    Выделите области «Шапка» и «Строка», задайте им имена
  3. 3
    В ячейках строки укажите параметры с заполнением «Параметр»
  4. 4
    В коде получите макет, выведите шапку, в цикле заполните и выведите строки
  5. 5
    Покажите документ методом Показать() и проверьте заполнение всех параметров

Работа с таблицей значений

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

ТЗ = Новый ТаблицаЗначений;

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

ТЗ.Колонки.Добавить("Количество", Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(15, 3)));

НоваяСтрока = ТЗ.Добавить();

НоваяСтрока.Номенклатура = "Товар А";

НоваяСтрока.Количество = 10;

ТЗ.Сортировать("Номенклатура Возр");

Итог = ТЗ.Итог("Количество");

Чаще всего таблицу значений получают не вручную, а выгрузкой из запроса: ТЗ = Запрос.Выполнить().Выгрузить();. Это быстрее и надежнее, чем построчное заполнение из выборки. Полезные методы для обработки: Найти() и НайтиСтроки() для поиска, Свернуть() для группировки с суммированием, Скопировать() для отбора строк по условию.

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

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

Добавление табличной части к документу

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

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

Программно строки табличной части заполняются так же, как таблица значений:

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

НоваяСтрока.Номенклатура = НайденныйТовар;

НоваяСтрока.Количество = 5;

НоваяСтрока.Цена = 1200;

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

Для автоматического пересчета суммы при изменении цены или количества используйте обработчики событий ПриИзменении у соответствующих полей формы. Это стандартный прием типовых конфигураций, который избавляет пользователя от ручного пересчета.

Таблица в отчете на СКД без программирования

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

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

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

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

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

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

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

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

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

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

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

Заполнение параметров макета
Норма

Все ячейки содержат данные

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

В ячейках видны конструкции вида <ИмяПараметра>

Итоги по числовым колонкам
Норма

Итог совпадает с контрольным запросом к базе

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

Итог расходится или равен нулю при наличии данных

Сортировка числовой колонки
Норма

Числа идут по возрастанию: 2, 10, 100

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

Порядок строковый: 10, 100, 2 — колонка не типизирована

Выгрузка в Excel
Норма

Файл открывается, структура колонок сохранена

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

Столбцы слиплись или текст обрезан

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

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

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

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

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

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

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

Почему в таблице вместо значения выводится текст в угловых скобках?

Конструкция вида <ИмяПараметра> означает, что параметр области макета не был заполнен в коде. Проверьте, что имя параметра в макете точно совпадает с именем в строке ОбластьСтрока.Параметры.ИмяПараметра — включая регистр букв и отсутствие лишних пробелов.

Как добавить итоги в таблицу на форме?

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

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

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

Итог

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

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