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