Отчеты и Аналитика · 14 мин
Как составить таблицу в 1С: практическое руководство
Как составить таблицу в 1С: создание табличного документа, работа с таблицей значений, печатные формы и табличные части. Пошаговые инструкции и примеры кода.
В 1С слово «таблица» означает сразу несколько разных объектов, и именно путаница между ними чаще всего мешает новичкам. Табличный документ — это визуальная таблица, похожая на лист Excel, которую можно заполнить, отформатировать и распечатать. Таблица значений — программная структура данных в памяти, с которой работает код. Табличная часть — часть документа или справочника, где хранятся строки, например перечень товаров в накладной. Наконец, есть динамические списки и отчеты на СКД, которые выводят данные в табличном виде.
Прежде чем составлять таблицу, определите задачу. Если нужно распечатать документ или показать пользователю форматированную таблицу — работайте с табличным документом. Если нужно собрать данные запросом, обработать их и передать дальше — используйте таблицу значений. Если требуется хранить строки внутри объекта базы — создавайте табличную часть в конфигураторе. От этого выбора зависят все дальнейшие действия.
Ниже разобраны все основные сценарии: от создания простой таблицы через интерфейс до программного вывода данных с оформлением. Примеры кода приведены на встроенном языке 1С и работают в типовых конфигурациях на управляемых формах.
Как выбрать тип таблицы под задачу
Главная ошибка начинающих — пытаться решить любую задачу табличным документом, потому что он визуально похож на Excel. На практике табличный документ нужен только там, где результат должен увидеть человек: печатная форма, произвольный отчет, наглядная сводка. Для промежуточных расчетов он избыточен и медленен.
Таблица значений — рабочий инструмент разработчика. В нее выгружают результаты запросов, в ней сортируют, сворачивают и фильтруют данные, ее передают между процедурами. Пользователь таблицу значений напрямую не видит: чтобы показать ее, данные выводят в табличный документ или в элемент формы.
Табличная часть — единственный вариант, когда строки должны храниться в базе как часть объекта. Например, список товаров в документе «Реализация» или перечень сотрудников в приказе. Данные табличной части сохраняются вместе с документом и доступны для запросов.
Сравнение вариантов
Подходит для печати и визуального отображения. Ограничение: не предназначен для хранения и вычислений, медленно работает с большими объемами.
Подходит для обработки данных в коде, выгрузки запросов, обмена между процедурами. Ограничение: существует только в памяти, не видна пользователю напрямую.
Подходит для хранения строк внутри документа или справочника. Ограничение: требует изменения конфигурации в конфигураторе.
Подходит для аналитических таблиц с группировками и отборами без программирования. Ограничение: менее гибкая настройка произвольной структуры строк.
Создание табличного документа вручную
Табличный документ можно создать прямо в режиме «1С:Предприятие» без конфигуратора. Откройте меню «Файл» → «Новый» → «Табличный документ». Появится пустой лист с сеткой ячеек, в который можно вводить текст и числа, объединять ячейки, задавать границы и цвета через панель форматирования.
Такой документ удобно использовать как шаблон: заполните шапку, задайте ширину колонок, сохраните файл через «Файл» → «Сохранить как» в формате MXL. Позже этот файл можно подключить к конфигурации как макет или открыть программно и заполнить данными.
Для разового заполнения вручную этот способ оправдан, но для регулярных отчетов он не подходит: данные придется вносить каждый раз заново, без связи с учетной базой. В таких случаях табличный документ формируют программно.
Программное создание табличного документа
Программно табличный документ создается объектом ТабличныйДокумент. Данные в него выводят либо напрямую в ячейки по координатам, либо через макет — заранее подготовленный шаблон с именованными областями. Второй способ предпочтительнее: оформление хранится отдельно от кода, и его может менять пользователь без правки программы.
Пример простого вывода без макета:
ТабДок = Новый ТабличныйДокумент;
// Шапка таблицы
ТабДок.Область("R1C1").Текст = "Номенклатура";
ТабДок.Область("R1C2").Текст = "Количество";
// Запрос данных
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ ПЕРВЫЕ 100
| Товары.Ссылка КАК Номенклатура,
| Товары.Остаток КАК Количество
|ИЗ
| Справочник.Номенклатура КАК Товары";
Выборка = Запрос.Выполнить().Выбрать();
НомерСтроки = 2;
Пока Выборка.Следующий() Цикл
ТабДок.Область("R" + НомерСтроки + "C1").Текст = Строка(Выборка.Номенклатура);
ТабДок.Область("R" + НомерСтроки + "C2").Текст = Выборка.Количество;
НомерСтроки = НомерСтроки + 1;
КонецЦикла;
ТабДок.Показать("Остатки товаров");
Метод Показать() открывает документ пользователю в отдельном окне, откуда его можно сохранить в Excel, PDF или распечатать. Если документ формируется на сервере, сначала верните его на клиент — напрямую показать табличный документ в серверной процедуре нельзя.
ТабДок = Новый ТабличныйДокумент;
ТабДок.Область("R1C1").Текст = "Заголовок";
ТабДок.Показать("Моя таблица");Вывод таблицы через макет
Макет табличного документа создается в конфигураторе: откройте ветку «Общие» → «Макеты», добавьте новый макет типа «Табличный документ». В редакторе выделите строки шапки, щелкните правой кнопкой и выберите «Свойства», задайте имя области, например «Шапка». Аналогично создайте область «Строка» с параметрами в ячейках.
Параметр в макете задается через свойство ячейки «Заполнение» = «Параметр» и имя параметра. В коде область получают методом ПолучитьОбласть(), заполняют через Параметры и выводят методом Вывести():
ТабДок = Новый ТабличныйДокумент;
Макет = ПолучитьОбщийМакет("МакетОтчета");
ОбластьШапка = Макет.ПолучитьОбласть("Шапка");
ТабДок.Вывести(ОбластьШапка);
ОбластьСтрока = Макет.ПолучитьОбласть("Строка");
Пока Выборка.Следующий() Цикл
ОбластьСтрока.Параметры.Номенклатура = Выборка.Номенклатура;
ОбластьСтрока.Параметры.Количество = Выборка.Количество;
ТабДок.Вывести(ОбластьСтрока);
КонецЦикла;
Такой подход позволяет менять шрифты, границы и структуру шаблона без изменения кода. Для проверки результата выведите документ и убедитесь, что все параметры заполнены: незаполненный параметр выводится как угловые скобки с именем, например «<Номенклатура>» — это сигнал, что в коде параметр не присвоен.
- 1Создайте макет типа «Табличный документ» в конфигураторе
- 2Выделите области «Шапка» и «Строка», задайте им имена
- 3В ячейках строки укажите параметры с заполнением «Параметр»
- 4В коде получите макет, выведите шапку, в цикле заполните и выведите строки
- 5Покажите документ методом Показать() и проверьте заполнение всех параметров
Работа с таблицей значений
Таблица значений создается объектом ТаблицаЗначений. Сначала описывают колонки с типами данных, затем добавляют строки и заполняют их. Типизация колонок важна: без нее сортировка и итоги могут работать непредсказуемо, а смешение строк и чисел в одной колонке приведет к ошибкам сравнения.
ТЗ = Новый ТаблицаЗначений;
ТЗ.Колонки.Добавить("Номенклатура", Новый ОписаниеТипов("Строка", , Новый КвалификаторыСтроки(150)));
ТЗ.Колонки.Добавить("Количество", Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(15, 3)));
НоваяСтрока = ТЗ.Добавить();
НоваяСтрока.Номенклатура = "Товар А";
НоваяСтрока.Количество = 10;
ТЗ.Сортировать("Номенклатура Возр");
Итог = ТЗ.Итог("Количество");
Чаще всего таблицу значений получают не вручную, а выгрузкой из запроса: ТЗ = Запрос.Выполнить().Выгрузить();. Это быстрее и надежнее, чем построчное заполнение из выборки. Полезные методы для обработки: Найти() и НайтиСтроки() для поиска, Свернуть() для группировки с суммированием, Скопировать() для отбора строк по условию.
Чтобы показать таблицу значений пользователю на форме, добавьте в форму реквизит типа «ТаблицаЗначений» с нужными колонками и перетащите его в дерево элементов формы — платформа автоматически создаст табличное поле. Заполнение реквизита выполняется методом Загрузить() из готовой таблицы значений.
Добавление табличной части к документу
Табличная часть создается в конфигураторе. Откройте нужный документ, перейдите на вкладку «Данные», в разделе «Табличные части» добавьте новую и задайте имя, например «Товары». Затем добавьте реквизиты табличной части — это колонки будущей таблицы: «Номенклатура» (ссылка на справочник), «Количество» (число), «Цена», «Сумма».
После добавления табличной части обновите конфигурацию базы данных (клавиша F7). Без этого шага изменения останутся только в конфигураторе, а в режиме «1С:Предприятие» таблица не появится. Затем откройте форму документа и перетащите табличную часть из панели реквизитов в дерево элементов формы.
Программно строки табличной части заполняются так же, как таблица значений:
НоваяСтрока = Объект.Товары.Добавить();
НоваяСтрока.Номенклатура = НайденныйТовар;
НоваяСтрока.Количество = 5;
НоваяСтрока.Цена = 1200;
НоваяСтрока.Сумма = НоваяСтрока.Количество * НоваяСтрока.Цена;
Для автоматического пересчета суммы при изменении цены или количества используйте обработчики событий ПриИзменении у соответствующих полей формы. Это стандартный прием типовых конфигураций, который избавляет пользователя от ручного пересчета.
Таблица в отчете на СКД без программирования
Если нужна аналитическая таблица с группировками, отборами и итогами, самый быстрый путь — отчет на системе компоновки данных (СКД). В конфигураторе создайте новый отчет, откройте «Основную схему компоновки данных», на вкладке «Наборы данных» напишите запрос к нужным таблицам.
На вкладке «Настройки» перетащите поля в список выбранных полей, добавьте группировку по нужному измерению — например, по контрагенту или периоду. СКД сама построит таблицу с итогами, а пользователь сможет менять отборы и порядок колонок без доработки кода. Ресурсы (суммируемые поля) укажите на вкладке «Ресурсы», иначе итоги по группировкам не посчитаются.
Этот способ покрывает большинство задач вида «вывести таблицу по данным базы» и не требует написания кода. Программное формирование табличного документа оправдано только тогда, когда структура строк формируется сложной логикой, которую запросом не выразить.
Как выбрать действие
Проверка результата и типичные проблемы
После формирования таблицы проверьте три вещи: все ли параметры макета заполнены (угловые скобки в ячейках — признак пропуска), совпадают ли итоги с контрольными значениями из базы, корректно ли документ выгружается в Excel. Для выгрузки используйте «Файл» → «Сохранить как» и формат «Лист Excel».
Если табличный документ формируется долго при большом объеме данных, отключите автоотображение на время заполнения — свойство ОтображатьСетку и вывод без промежуточного показа ускоряют работу. Для очень больших отчетов рассмотрите постраничный вывод или переход на СКД, которая оптимизирована для объемных данных.
Как проверить результат
Все ячейки содержат данные
В ячейках видны конструкции вида <ИмяПараметра>
Итог совпадает с контрольным запросом к базе
Итог расходится или равен нулю при наличии данных
Числа идут по возрастанию: 2, 10, 100
Порядок строковый: 10, 100, 2 — колонка не типизирована
Файл открывается, структура колонок сохранена
Столбцы слиплись или текст обрезан
Частые вопросы
Можно ли создать таблицу в 1С без конфигуратора?
Да. Табличный документ создается в режиме «1С:Предприятие» через «Файл» → «Новый», а многие типовые конфигурации имеют универсальный отчет, где таблицу строят настройкой без кода. Но добавить табличную часть к документу или создать новый макет можно только в конфигураторе.
Как выгрузить таблицу из 1С в Excel?
Откройте сформированный табличный документ и выберите «Файл» → «Сохранить как», указав формат «Лист Excel» (*.xlsx). Программно используется метод ТабДок.Записать(ИмяФайла, ТипФайлаТабличногоДокумента.XLSX). Динамические списки выгружаются через кнопку «Вывести список» в меню «Ещё».
Чем таблица значений отличается от табличного документа?
Таблица значений — структура данных в памяти для вычислений: ее можно сортировать, сворачивать, искать в ней строки, но пользователь ее не видит. Табличный документ — визуальный объект для отображения и печати. Типовая схема: данные собирают в таблицу значений, затем выводят в табличный документ.
Почему в таблице вместо значения выводится текст в угловых скобках?
Конструкция вида <ИмяПараметра> означает, что параметр области макета не был заполнен в коде. Проверьте, что имя параметра в макете точно совпадает с именем в строке ОбластьСтрока.Параметры.ИмяПараметра — включая регистр букв и отсутствие лишних пробелов.
Как добавить итоги в таблицу на форме?
Для элемента формы «Таблица» включите свойство «Подвал» (Footer), затем у нужной колонки в свойстве «ПутьКДаннымПодвала» укажите выражение итога, например сумму по колонке. Для таблицы значений в коде итог считается методом Итог("ИмяКолонки").
Что выбрать для отчета: табличный документ или СКД?
Если структура отчета — это группировки, отборы и итоги по данным запроса, выбирайте СКД: разработка быстрее, а пользователь получит гибкие настройки. Табличный документ с программным выводом оправдан при нестандартной структуре строк, сложном многоуровневом форматировании или специфических печатных формах.
Что важно запомнить
В 1С нет одной «таблицы» — есть табличный документ для печати, таблица значений для расчетов, табличная часть для хранения строк и СКД для аналитики. Сначала определите задачу, затем выбирайте инструмент. Типизируйте колонки, используйте макеты для оформления и проверяйте итоги контрольным запросом.