К статье
Практический материал

Разработка и Конфигурация · 11 мин

Как изменить табличный документ в 1С

Как изменить табличный документ в 1С: редактирование вручную, программное заполнение, параметры, макеты и типичные ошибки. Практическая инструкция для пользователей и разработчиков.

Табличный документ в 1С — это универсальный объект, который используется для печатных форм, отчётов и вывода данных в табличном виде. Изменить его можно двумя принципиально разными способами: вручную через интерфейс (если включён режим редактирования) или программно на встроенном языке. Выбор способа зависит от задачи: разовая правка печатной формы делается вручную, а регулярное формирование документов с подстановкой данных — только кодом.

Прежде чем что-то менять, важно понять, откуда взялся табличный документ. Если он сформирован отчётом или печатной формой, ручные правки исчезнут при следующем формировании. Если документ сохранён в файл формата MXL, изменения сохраняются в самом файле. Эта разница определяет всю дальнейшую логику работы.

Ниже разобраны оба подхода: ручное редактирование через интерфейс и программное изменение через объект ТабличныйДокумент. Отдельно рассмотрены работа с макетами, параметрами, областями и типичные ошибки, из-за которых изменения теряются или не применяются.

Как включить режим редактирования табличного документа

По умолчанию табличный документ открывается в режиме просмотра: ячейки нельзя редактировать, чтобы случайно не испортить печатную форму. Чтобы включить редактирование в типовых конфигурациях, откройте табличный документ и нажмите кнопку «Ещё» — «Изменить» (в некоторых конфигурациях — «Изменить форму» или отдельная кнопка с карандашом на панели инструментов).

В тонком клиенте и в управляемых формах путь может отличаться: меню «Таблица» — «Вид» — «Редактирование». После включения режима ячейки становятся доступны для ввода, появляется возможность менять текст, форматирование, границы и ширину колонок. Признак включённого режима — активный курсор в ячейках и доступность команд форматирования.

Если кнопка редактирования неактивна или отсутствует, причины обычно две: либо у пользователя нет прав на изменение, либо форма, в которой открыт документ, программно запрещает редактирование (свойство ТолькоПросмотр у поля табличного документа). Во втором случае вопрос решается настройкой формы в конфигураторе.

Что можно изменить вручную и как сохранить результат

В режиме редактирования доступны все стандартные операции: изменение текста ячеек, объединение и разъединение ячеек, настройка шрифта, цвета, границ, выравнивания, ширины колонок и высоты строк. Работает вставка и удаление строк и колонок, копирование диапазонов, вставка картинок и примечаний.

Чтобы сохранить отредактированный документ, используйте «Файл» — «Сохранить» или «Сохранить копию». Табличный документ сохраняется в формате MXL — это родной формат 1С, который можно потом открыть в любой другой базе. Также доступен экспорт в Excel (XLSX), PDF, HTML и другие форматы через «Файл» — «Сохранить копию» с выбором типа файла.

Практический сценарий: бухгалтеру нужно разово поправить печатную форму акта (например, добавить примечание), не меняя макет. Правильный порядок — сформировать печатную форму, включить редактирование, внести правку, распечатать или сохранить в PDF. Менять макет в конфигураторе ради одной правки не нужно.

Ручное изменение печатной формы
  1. 1
    Сформируйте печатную форму или откройте табличный документ
  2. 2
    Нажмите «Ещё» — «Изменить» или включите «Таблица» — «Вид» — «Редактирование»
  3. 3
    Внесите правки: текст, форматирование, размеры колонок
  4. 4
    Сохраните результат через «Файл» — «Сохранить копию» (MXL, PDF или Excel)
  5. 5
    При необходимости распечатайте документ

Программное изменение табличного документа

Программная работа строится вокруг объекта ТабличныйДокумент. Типовой цикл выглядит так: создаётся новый объект, из макета получаются области, в параметры областей подставляются данные, области выводятся в документ. После этого документ показывается пользователю, сохраняется в файл или отправляется на печать.

Базовый пример заполнения документа из макета:

ТабДок = Новый ТабличныйДокумент;

Макет = ПолучитьМакет("МакетАкта");

ОбластьШапка = Макет.ПолучитьОбласть("Шапка");

ОбластьШапка.Параметры.НомерДокумента = "АКТ-101";

ОбластьШапка.Параметры.ДатаДокумента = ТекущаяДата();

ТабДок.Вывести(ОбластьШапка);

ОбластьСтрока = Макет.ПолучитьОбласть("Строка");

Для Каждого ТекСтрока Из Товары Цикл

ОбластьСтрока.Параметры.Заполнить(ТекСтрока);

ТабДок.Вывести(ОбластьСтрока);

КонецЦикла;

Метод Вывести() добавляет область ниже уже выведенного содержимого, а Присоединить() — справа от него. Комбинация этих методов позволяет строить документы со сложной структурой: например, выводить колонки показателей горизонтально или формировать матричные отчёты.

Изменение уже выведенных ячеек

Если документ уже сформирован, отдельные ячейки меняются через метод Область(). Можно обратиться по адресу (ТабДок.Область("R5C2")), по имени именованной области или по координатам строк и колонок. У найденной области меняют текст, формат или параметры:

ОбластьЯчейки = ТабДок.Область("R10C3");

ОбластьЯчейки.Текст = "Итого с НДС";

ОбластьЯчейки.Шрифт = Новый Шрифт(, , Истина);

Также доступны методы НайтиТекст() для поиска ячеек по содержимому, ВставитьОбласть() и УдалитьОбласть() для структурных изменений, свойства ВысотаТаблицы и ШиринаТаблицы для определения границ данных.

bsl
ТабДок = Новый ТабличныйДокумент;
ТабДок.Прочитать("C:\Формы\акт.mxl");
Область = ТабДок.Область("R3C2");
Область.Текст = "Новое значение";
ТабДок.Записать("C:\Формы\акт_испр.mxl");

Как изменить макет, чтобы правки применялись всегда

Если печатную форму нужно изменить постоянно — добавить колонку, поменять заголовок, вставить логотип, — правится макет, а не готовый документ. Макеты хранятся в конфигураторе: либо в ветке «Общие» — «Макеты», либо в составе конкретного объекта (документа, справочника, отчёта) на закладке «Макеты».

Порядок изменения: откройте конфигуратор, найдите нужный макет, откройте его двойным щелчком. Макет табличного документа редактируется как обычная таблица: меняются ячейки, оформление, имена областей. Ячейки, в которые подставляются данные, оформлены как параметры — в свойствах ячейки установлено заполнение «Параметр», а в тексте указано имя параметра в квадратных скобках, например [НомерДокумента].

Чтобы добавить новый параметр, создайте в макете ячейку с текстом [ИмяПараметра], установите ей заполнение «Параметр» и в коде формирования задайте значение: Область.Параметры.ИмяПараметра = Значение;. Если параметр в коде не заполнен, на печать выводится пустое место — это частая причина «дырок» в печатных формах.

В типовых конфигурациях на управляемых формах многие печатные формы вынесены во внешние или переопределяемые макеты, а некоторые поддерживают редактирование макета прямо из пользовательского режима (кнопка «Изменить макет» в форме печати). Это безопаснее, чем снимать конфигурацию с поддержки.

Какой способ изменения выбрать

Критерий выбора прост: как часто повторяется правка и кто её делает. Разовые корректировки перед печатью — ручное редактирование. Постоянные изменения структуры формы — правка макета. Динамическое заполнение данными, условное форматирование, вычисляемые итоги — программное формирование.

Маршрут решения

Как выбрать действие

Нужно один раз поправить готовую печатную форму перед печатьюВключите режим редактирования и измените документ вручную
Правка должна применяться ко всем будущим печатным формамИзмените макет в конфигураторе или через пользовательский макет
Содержимое зависит от данных и условий (скидки, итоги, разные шаблоны)Формируйте документ программно через ТабличныйДокумент и параметры
Нет доступа к конфигуратору, а форму менять нужноИспользуйте внешнюю печатную форму или механизм пользовательских макетов
Документ нужно отдать наружу в привычном видеСохраните копию в PDF или Excel через «Файл» — «Сохранить копию»

Типичные ошибки и как их проверить

Самая частая ошибка — правка результата вместо источника. Пользователь изменяет сформированный табличный документ, а потом обнаруживает, что при следующем формировании всё вернулось как было. Вторая по частоте — несовпадение имён: параметр в макете называется [НомерДок], а в коде заполняется НомерДокумента. В результате ячейка выходит пустой без всякого сообщения об ошибке.

Третья группа ошибок связана с областями: попытка получить область, которой нет в макете, вызывает исключение; вывод областей в неправильном порядке ломает структуру документа; метод Присоединить() без предварительного Вывести() даёт пустой результат, потому что присоединять не к чему.

Типичные ошибки
01
Ручная правка сформированного документа вместо макета — изменения теряются при повторном формировании
02
Несовпадение имени параметра в макете и в коде — ячейка выходит пустой без ошибки
03
Использование Присоединить() до первого Вывести() — область не появляется в документе
04
Изменение типового макета без копии базы — риск потери правок при обновлении конфигурации
05
Обращение к несуществующей области макета — исключение и прерывание формирования
Контрольные точки

Как проверить результат

Заполнение параметров
Норма

Все данные из источника выведены, пустых параметров нет

Тревожный признак

На форме пустые места там, где должны быть значения

Структура документа
Норма

Области идут в правильном порядке, итоги под строками

Тревожный признак

Разрывы, съехавшие колонки, итоги выше детальных строк

Сохранение правок
Норма

После повторного формирования изменения из макета на месте

Тревожный признак

Правки исчезли — значит, меняли документ, а не макет

Печатная форма
Норма

Документ помещается на страницы, колонтитулы корректны

Тревожный признак

Обрезанные колонки, лишние пустые страницы

Частые вопросы

Почему кнопка «Изменить» в табличном документе неактивна?

Обычно причина в том, что поле табличного документа на форме имеет свойство «Только просмотр», либо у пользователя недостаточно прав. Проверьте права и настройки формы. В некоторых конфигурациях редактирование включается через меню «Таблица» — «Вид» — «Редактирование», а не отдельной кнопкой.

Как сохранить изменённый табличный документ в Excel?

Через «Файл» — «Сохранить копию» с выбором типа файла XLSX. Программно — методом ТабДок.Записать(ИмяФайла, ТипФайлаТабличногоДокумента.XLSX). Учтите, что сложное форматирование (объединённые ячейки, картинки) при экспорте может отображаться в Excel иначе.

Чем отличаются методы Вывести и Присоединить?

Вывести() добавляет область ниже уже выведенного содержимого, то есть вертикально. Присоединить() добавляет область справа, горизонтально. Присоединить() работает только после того, как в документ что-то выведено методом Вывести().

Можно ли изменить табличный документ без конфигуратора?

Да, тремя способами: ручное редактирование готового документа, пользовательские макеты в типовых конфигурациях (если механизм поддерживается) и внешние печатные формы, подключаемые через «Дополнительные отчёты и обработки». Внешняя печатная форма — самый безопасный путь, она не затрагивает конфигурацию.

Почему параметр в макете не заполняется, хотя код написан?

Проверьте три вещи: точное совпадение имени параметра в макете и в коде (включая регистр букв в некоторых случаях), что у ячейки в макете установлено заполнение «Параметр», а не «Текст», и что заполнение происходит до вызова Вывести(), а не после.

Как найти нужную ячейку в большом табличном документе программно?

Используйте метод НайтиТекст(ИскомыйТекст) — он возвращает область с первой найденной ячейкой, содержащей текст. Для обхода всего документа перебирайте строки и колонки в цикле по ВысотаТаблицы и ШиринаТаблицы с обращением Область(НомерСтроки, НомерКолонки).

Итог

Что важно запомнить

Разовые правки делайте вручную через режим редактирования, постоянные — в макете, динамические — программно через ТабличныйДокумент. Правки макета типовой конфигурации делайте только после резервной копии, а там где возможно, используйте внешние печатные формы. Проверяйте совпадение имён параметров — это главная причина пустых ячеек.