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

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

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

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

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

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

Материал ориентирован на платформу 1С:Предприятие 8.3 в режиме управляемого приложения. В обычном приложении (8.2 и ранние конфигурации) действия похожи, но расположение команд интерфейса отличается.

Какие «таблицы» существуют в 1С и какую выбрать

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

ОбъектНазначениеГде создаётся
Табличный документПечатные формы, отчёты, вывод на экранМакет в конфигураторе + код
Таблица значенийВременные данные в оперативной памятиТолько программный код
Табличная частьСтроки внутри документа или справочникаКонфигуратор, структура объекта
Макет табличного документаШаблон печатной формыКонфигуратор → Макеты
Динамический списокОтображение данных из базы на формеРеквизит формы, настройка запроса

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

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

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

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

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

Табличный документ — основной способ сделать печатную форму в 1С. Создаётся он в два этапа: сначала рисуется макет (шаблон), затем код заполняет его данными и выводит пользователю.

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

Выделите диапазон строк, которые образуют логический блок (шапка, строка таблицы, подвал), и задайте имя области через меню «Таблица → Имена → Назначить имя» или сочетанием Ctrl+Shift+N. Именованные области позволяют выводить фрагменты макета многократно — это ключевой приём при печати таблиц с переменным числом строк.

В ячейках, куда должны подставляться данные, укажите параметры. Для этого в свойствах ячейки установите «Заполнение» = «Параметр», а в тексте ячейки напишите имя параметра, например «Номенклатура». Затем в модуле объекта напишите процедуру печати.

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

Код вывода табличного документа

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

Макет = ЭтотОбъект.ПолучитьМакет("ПечатнаяФорма");

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

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

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

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

Для Каждого СтрокаТовара Из Товары Цикл

ОбластьСтрока.Параметры.Заполнить(СтрокаТовара);

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

КонецЦикла;

Метод Параметры.Заполнить() автоматически подставляет значения по совпадению имён параметров и колонок строки. Если имена не совпадают, задавайте каждый параметр явно: ОбластьСтрока.Параметры.Наименование = СтрокаТовара.Номенклатура;.

Создание таблицы значений в коде

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

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

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

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

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

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

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

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

НоваяСтрока.Сумма = 1250;

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

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

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

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

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

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

Вывод таблицы значений на форму

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

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

Программно создать реквизит формы можно методом ИзменитьРеквизиты() в обработчике ПриСозданииНаСервере. Это нужно, когда состав колонок заранее неизвестен и определяется в момент открытия формы. Учтите, что элементы формы для динамических колонок тоже придётся создавать кодом.

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

Типичные ошибки при работе с таблицами

Большинство проблем при создании таблиц в 1С связаны не с синтаксисом, а с путаницей между объектами и с пропущенными деталями настройки макета или формы.

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

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

Проверка результата

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

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

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

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

Все параметры подставлены, строки таблицы выводятся по числу записей, рамки отображаются

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

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

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

Метод Количество() возвращает ожидаемое число строк, итоги считаются

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

Ошибка «Поле объекта не обнаружено» — опечатка в имени колонки

Табличная часть документа
Норма

Строки сохраняются вместе с документом и видны после повторного открытия

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

Таблица на форме пустая после записи — данные не переносятся в объект

Таблица на форме
Норма

Колонки соответствуют данным, сортировка работает

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

Таблица пустая — реквизит не связан с элементом формы или не заполнен на сервере

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

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

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

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

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

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

Почему при выводе печатной формы возникает ошибка «Область не найдена»?

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

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

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

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

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

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

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

Итог

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

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