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