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