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