При работе в 1С:Бухгалтерии пользователи часто сталкиваются с необходимостью кастомизации печатных форм договоров. Одной из самых востребованных задач является вставка таблиц — например, для спецификаций товаров, графиков платежей или перечня оказываемых услуг. Однако стандартный встроенный редактор шаблонов договоров часто ставит в тупик даже опытных специалистов. В этой статье мы подробно разберем, почему возникают сложности, и рассмотрим все доступные способы решения этой задачи.
Для начала проанализируем техническую составляющую. В типовых решениях 1С (в частности, в 1С:Бухгалтерии 3.0) для редактирования текста договора используется объект ФорматированныйДокумент. Этот объект представляет собой упрощенный HTML-редактор, который вендор разработал для обеспечения кроссплатформенности.
Как показывает практика и обсуждения экспертов, при попытке вставить HTML-код таблицы (теги <table>, <tr>, <td>) в макет, система в режиме «1С:Предприятие» часто игнорирует структуру таблицы, превращая её в последовательный набор текста из ячеек. Это происходит из-за того, что ФорматированныйДокумент поддерживает лишь ограниченный набор тегов (стандарт HTML 1.0 с сокращениями). Поэтому классический путь «скопировать из Excel и вставить в 1С» в данном случае не работает напрямую.
Рассмотрим наиболее современный и профессиональный метод, который предоставляет Библиотека стандартных подсистем (БСП). В актуальных версиях 1С:Бухгалтерии реализована возможность работы с внешними файлами шаблонов.
Разберем алгоритм действий по шагам:
.docx (MS Word) или .odt (OpenOffice).{Цена}, {Количество}, {Сумма}.{СписокТоваров}, а конец — {/СписокТоваров}. Система автоматически размножит строку таблицы столько раз, сколько позиций указано в документе 1С.Преимущество этого метода в том, что нам не нужно снимать конфигурацию с поддержки. Мы работаем с внешним файлом, который 1С использует как «болванку» для заполнения данных.
Если функционала обычных шаблонов недостаточно, проанализируем ситуацию с точки зрения разработки. Для того чтобы сохранить возможность обновления программы и при этом получить сложную таблицу в договоре, идеально подходят внешние печатные формы. Для автоматизации их создания без работы в конфигураторе можно использовать конструктор внешних печатных форм.
В этом случае вместо ФорматированногоДокумента используется объект ТабличныйДокумент. Это собственный формат 1С, который по своим возможностям сопоставим с Excel. Мы можем программно управлять каждой ячейкой, объединять их, рисовать рамки любой толщины и даже вставлять штрихкоды или QR-коды.
Пример логики программного формирования таблицы в ВПФ:
// Пример заполнения области таблицы в макете
ОбластьСтрока = Макет.ПолучитьОбласть("СтрокаТоваров");
Для Каждого ТекущаяСтрока Из Объект.Товары Цикл
ОбластьСтрока.Параметры.Номенклатура = ТекущаяСтрока.Номенклатура;
ОбластьСтрока.Параметры.Количество = ТекущаяСтрока.Количество;
ТабличныйДокумент.Вывести(ОбластьСтрока);
КонецЦикла;
Такой подход позволяет пользователю перед печатью нажать кнопку «Редактировать» в окне предпросмотра и внести изменения прямо в таблицу, если это необходимо.
Выясним причину, по которой некоторые пользователи выбирают более простой, хотя и менее гибкий путь. Если таблица статична (например, реквизиты сторон или фиксированный график платежей, не меняющийся от договора к договору), её можно подготовить в стороннем редакторе.
Процесс выглядит так: создаем таблицу в Excel, делаем её скриншот или сохраняем как рисунок, а затем вставляем этот рисунок в редактор шаблона 1С. ФорматированныйДокумент корректно работает с объектами типа «Картинка». Однако помните, что данные в такой таблице нельзя будет автоматически заполнить из базы 1С, и текст внутри картинки не будет индексироваться для поиска.
Если стоит задача сделать редактируемую таблицу прямо внутри интерфейса 1С, рассмотрим альтернативу ФорматированномуДокументу — использование объекта ПолеHTMLДокумента. В отличие от стандартного редактора шаблонов, это поле использует полноценный движок браузера.
Рассмотрим преимущества этого метода:
<table> и стилей CSS.Для реализации этого метода потребуется создание небольшой обработки, которая будет собирать HTML-текст договора, вставлять в него данные из информационной базы и выводить в поле на форме для финальной правки пользователем.
Иногда проблему можно решить организационными методами. В 1С:Бухгалтерии предусмотрена возможность распечатать приложение к договору, используя данные из документа «Счет на оплату покупателю». В счете уже есть табличная часть с товарами и услугами. Многие компании предпочитают в основном тексте договора делать ссылку: «Перечень и стоимость услуг определяются в Приложении №1 (Спецификации)», которое печатается как отдельный лист с таблицей. Это избавляет от необходимости мучиться с версткой таблиц внутри сложного текстового блока договора. Для быстрого вывода такого приложения можно использовать готовую печатную форму спецификации для 1С:Бухгалтерии.
Проанализировав все варианты, подведем итог:
1. Стандартный редактор шаблонов: Быстро, но таблицы не поддерживает (только через имитацию табуляцией, что крайне неудобно).
2. Шаблоны Word/OpenOffice: Оптимальный выбор для большинства задач. Позволяет создавать красивые таблицы, поддерживает параметры 1С и не требует программирования конфигурации.
3. Внешние печатные формы: Выбор профессионалов. Дает максимальный контроль над результатом, позволяет реализовать любую логику расчетов внутри таблицы.
Мы рекомендуем начинать именно с освоения шаблонов в формате .docx, так как это штатный механизм БСП, который поддерживается фирмой «1С» и постоянно развивается, обеспечивая корректную работу таблиц без снятия базы с поддержки.