Разработка и Конфигурация · 12 мин
Как создать таблицу в 1С: все рабочие способы
Способы создать таблицу в 1С: табличный документ для печати, таблица значений в коде, макет с областями. Пошаговые инструкции, примеры кода и типичные ошибки.
Под словом «таблица» в 1С скрывается сразу несколько разных объектов: табличный документ для печати и отчётов, таблица значений для обработки данных в коде, табличная часть документа, динамический список и макет табличного документа. У каждого своё назначение, и ошибка выбора приводит к лишней работе: например, пытаться «распечатать» таблицу значений напрямую нельзя — её сначала нужно вывести в табличный документ.
Чаще всего запрос «создать таблицу в 1С» означает одну из трёх задач: сделать печатную форму с таблицей, наполнить данными таблицу значений в программном коде или добавить табличную часть в документ. Ниже разобраны все основные сценарии с конкретными действиями, примерами кода и проверкой результата.
Материал ориентирован на платформу 1С:Предприятие 8.3 в режиме управляемого приложения. В обычном приложении (8.2 и ранние конфигурации) действия похожи, но расположение команд интерфейса отличается.
Какие «таблицы» существуют в 1С и какую выбрать
Прежде чем создавать таблицу, определите её назначение. Платформа предлагает несколько объектов с похожим названием, и они не взаимозаменяемы: у каждого свой способ создания, хранения и вывода на экран.
| Объект | Назначение | Где создаётся |
|---|---|---|
| Табличный документ | Печатные формы, отчёты, вывод на экран | Макет в конфигураторе + код |
| Таблица значений | Временные данные в оперативной памяти | Только программный код |
| Табличная часть | Строки внутри документа или справочника | Конфигуратор, структура объекта |
| Макет табличного документа | Шаблон печатной формы | Конфигуратор → Макеты |
| Динамический список | Отображение данных из базы на форме | Реквизит формы, настройка запроса |
Простое правило выбора: если результат нужно напечатать или показать пользователю как готовую «картинку» с рамками и шапкой — это табличный документ. Если нужно что-то посчитать, отсортировать, свернуть или передать между процедурами — таблица значений. Если данные должны храниться в базе вместе с документом — табличная часть.
Как выбрать действие
Создание табличного документа через макет
Табличный документ — основной способ сделать печатную форму в 1С. Создаётся он в два этапа: сначала рисуется макет (шаблон), затем код заполняет его данными и выводит пользователю.
Откройте конфигуратор, найдите нужный объект (например, документ «Реализация товаров и услуг»), перейдите на вкладку «Макеты» и нажмите «Добавить». Выберите тип макета «Табличный документ». Откроется редактор, похожий на электронную таблицу: ячейки можно объединять, задавать границы, шрифты и ширину колонок.
Выделите диапазон строк, которые образуют логический блок (шапка, строка таблицы, подвал), и задайте имя области через меню «Таблица → Имена → Назначить имя» или сочетанием Ctrl+Shift+N. Именованные области позволяют выводить фрагменты макета многократно — это ключевой приём при печати таблиц с переменным числом строк.
В ячейках, куда должны подставляться данные, укажите параметры. Для этого в свойствах ячейки установите «Заполнение» = «Параметр», а в тексте ячейки напишите имя параметра, например «Номенклатура». Затем в модуле объекта напишите процедуру печати.
- 1В конфигураторе откройте объект и добавьте макет типа «Табличный документ»
- 2Нарисуйте шапку, строку таблицы и подвал, задайте границы ячеек
- 3Назначьте имена областям: Шапка, Строка, Подвал (Ctrl+Shift+N)
- 4В ячейках с данными установите заполнение «Параметр» и имена параметров
- 5В модуле объекта напишите процедуру печати с циклом вывода области «Строка»
- 6Проверьте результат: сформируйте печатную форму из пользовательского режима
Код вывода табличного документа
ТабДок = Новый ТабличныйДокумент;
Макет = ЭтотОбъект.ПолучитьМакет("ПечатнаяФорма");
ОбластьШапка = Макет.ПолучитьОбласть("Шапка");
ОбластьШапка.Параметры.НомерДокумента = Номер;
ТабДок.Вывести(ОбластьШапка);
ОбластьСтрока = Макет.ПолучитьОбласть("Строка");
Для Каждого СтрокаТовара Из Товары Цикл
ОбластьСтрока.Параметры.Заполнить(СтрокаТовара);
ТабДок.Вывести(ОбластьСтрока);
КонецЦикла;
Метод Параметры.Заполнить() автоматически подставляет значения по совпадению имён параметров и колонок строки. Если имена не совпадают, задавайте каждый параметр явно: ОбластьСтрока.Параметры.Наименование = СтрокаТовара.Номенклатура;.
Создание таблицы значений в коде
Таблица значений — универсальный инструмент для промежуточной обработки данных: выгрузки результатов запроса, сортировки, группировки итогов, обмена данными между процедурами. Она существует только в оперативной памяти и не сохраняется в базе.
ТЗ = Новый ТаблицаЗначений;
ТЗ.Колонки.Добавить("Номенклатура", Новый ОписаниеТипов("СправочникСсылка.Номенклатура"));
ТЗ.Колонки.Добавить("Количество", Новый ОписаниеТипов("Число", , , Новый КвалификаторыЧисла(15, 3)));
ТЗ.Колонки.Добавить("Сумма", Новый ОписаниеТипов("Число"));
НоваяСтрока = ТЗ.Добавить();
НоваяСтрока.Номенклатура = ТекущийТовар;
НоваяСтрока.Количество = 5;
НоваяСтрока.Сумма = 1250;
Указывать тип колонки не обязательно, но желательно: типизированные колонки ускоряют сортировку и свёртку и защищают от случайного смешения строк и чисел в одной колонке. Для добавления большого объёма данных быстрее сначала заполнить таблицу, а типизацию задать заранее — при добавлении колонки в уже заполненную таблицу платформа приводит значения всех существующих строк.
Полезные методы таблицы значений: Сортировать("Сумма Убыв") — сортировка, Свернуть("Номенклатура", "Количество,Сумма") — группировка с суммированием, Итог("Сумма") — общий итог, Найти(Значение, "Номенклатура") — поиск строки, НайтиСтроки(СтруктураОтбора) — выборка нескольких строк по условию.
Добавление табличной части в документ
Табличная часть — это таблица, жёстко привязанная к объекту конфигурации и хранящаяся в базе данных вместе с ним. Классический пример — список товаров в накладной. Добавляется она только в конфигураторе, программно изменить структуру нельзя.
Откройте объект конфигурации (документ, справочник), перейдите на вкладку «Данные» и в разделе «Табличные части» нажмите «Добавить». Задайте имя, например «Товары». Затем добавьте реквизиты табличной части — это её колонки: «Номенклатура» (тип СправочникСсылка), «Количество» (Число), «Цена», «Сумма».
После обновления конфигурации базы данных табличная часть появится на форме объекта. Если форма создавалась раньше, добавьте таблицу на форму вручную: перетащите реквизит объекта из панели реквизитов в дерево элементов формы. Платформа автоматически создаст таблицу с колонками.
Вывод таблицы значений на форму
Частая задача: показать пользователю произвольную таблицу, которой нет в структуре конфигурации — например, результат обработки или данные из внешнего файла. Для этого таблица значений создаётся как реквизит формы.
Откройте форму в конфигураторе, в правой панели реквизитов добавьте реквизит типа «ТаблицаЗначений». Затем раскройте его и добавьте колонки с нужными типами. Перетащите реквизит в дерево элементов формы — появится таблица с колонками. В коде обращайтесь к ней по имени реквизита и заполняйте методом Добавить(), как обычную таблицу значений.
Программно создать реквизит формы можно методом ИзменитьРеквизиты() в обработчике ПриСозданииНаСервере. Это нужно, когда состав колонок заранее неизвестен и определяется в момент открытия формы. Учтите, что элементы формы для динамических колонок тоже придётся создавать кодом.
Если таблица на форме предназначена только для просмотра, установите у элемента свойство «ТолькоПросмотр» — это исключит случайное изменение данных пользователем и упростит проверку заполнения.
Типичные ошибки при работе с таблицами
Большинство проблем при создании таблиц в 1С связаны не с синтаксисом, а с путаницей между объектами и с пропущенными деталями настройки макета или формы.
Ещё одна распространённая ситуация: печатная форма «обрезает» длинные наименования. Причина — в свойствах ячейки макета не включено свойство «АвтоВысотаСтроки» или задана фиксированная высота строки. Проверьте также свойство «РазмещениеТекста» — для многострочного вывода должно быть установлено «Переносить».
Проверка результата
После создания таблицы любого типа проверьте её в пользовательском режиме, а не только в конфигураторе. Ниже — контрольные точки для основных сценариев.
Как проверить результат
Все параметры подставлены, строки таблицы выводятся по числу записей, рамки отображаются
В ячейках видны имена параметров или пустые значения, строки дублируются
Метод Количество() возвращает ожидаемое число строк, итоги считаются
Ошибка «Поле объекта не обнаружено» — опечатка в имени колонки
Строки сохраняются вместе с документом и видны после повторного открытия
Таблица на форме пустая после записи — данные не переносятся в объект
Колонки соответствуют данным, сортировка работает
Таблица пустая — реквизит не связан с элементом формы или не заполнен на сервере
Для отладки таблицы значений удобно использовать окно «Вычислить выражение» (Shift+F9) в режиме отладки: оно показывает содержимое таблицы построчно, включая типы значений в колонках. Это быстрее, чем выводить данные сообщениями в цикле.
Частые вопросы
Можно ли создать таблицу в 1С без программирования?
Да, частично. Макет табличного документа рисуется в конфигураторе мышью, как в электронной таблице, но для вывода данных всё равно потребуется минимальный код. В пользовательском режиме без конфигуратора таблицы структуры создать нельзя — можно только заполнять существующие табличные части и пользоваться отчётами.
Чем таблица значений отличается от результата запроса?
Результат запроса — это выборка, которую можно только последовательно обойти. Таблица значений — полноценная структура в памяти: её можно сортировать, сворачивать, искать строки и менять данные. Запрос выгружается в таблицу значений методом Выгрузить(), после чего доступны все её методы.
Почему при выводе печатной формы возникает ошибка «Область не найдена»?
Имя области в коде не совпадает с именем, назначенным в макете. Проверьте регистр букв, лишние пробелы и то, что область назначена именно на строки, а не на отдельные ячейки. Имена областей задаются через меню «Таблица → Имена → Назначить имя».
Как вывести в табличный документ данные из таблицы значений?
Обойдите таблицу значений циклом «Для Каждого Строка Из ТЗ Цикл» и на каждой итерации заполняйте параметры области «Строка» макета, затем выводите её методом Вывести(). Совпадающие имена колонок и параметров позволяют использовать Параметры.Заполнить(Строка) в одну строку.
Можно ли изменить состав колонок табличной части без потери данных?
Добавление новых колонок безопасно — существующие данные сохранятся. Удаление реквизита или смена его типа на несовместимый приведёт к очистке значений в этой колонке при реструктуризации. Перед такими изменениями делайте резервную копию базы и сначала проверяйте обновление на копии.
Как распечатать таблицу значений для отладки?
Быстрый способ — создать табличный документ и в цикле выводить значения колонок в ячейки. В типовых конфигурациях часто есть универсальные процедуры вывода таблицы значений в табличный документ. Для разовой проверки проще использовать отладчик и окно «Вычислить выражение» — оно покажет таблицу без написания кода.
Что важно запомнить
В 1С нет единой «таблицы»: для печати используйте табличный документ с макетом, для обработки в коде — таблицу значений, для хранения строк в документе — табличную часть. Выбирайте объект по назначению, проверяйте совпадение имён областей, параметров и колонок, а перед изменением структуры конфигурации делайте резервную копию базы.