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

Документы и Печать · 9 мин

Как создать макет договора в 1С

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

Макет договора в 1С — это шаблон печатной формы, в который программа автоматически подставляет данные из документа или справочника: наименование контрагента, реквизиты, суммы, даты. Вместо ручного заполнения Word-файла пользователь нажимает одну кнопку и получает готовый договор с актуальными данными из базы. Такой подход исключает опечатки в реквизитах и ускоряет подготовку документов в разы.

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

Ниже разобран полный цикл: от подготовки структуры договора до проверки готовой печатной формы. Материал ориентирован на конфигурации на платформе 1С:Предприятие 8.3 с использованием табличного документа — самого распространённого формата макетов печати.

Подготовка: что должно быть в макете договора

Прежде чем открывать конфигуратор, определите структуру будущего договора. Возьмите действующий образец, который использует компания, и разбейте его на две части: статичный текст (преамбула, формулировки пунктов, подписи) и изменяемые данные (номер договора, дата, наименование контрагента, ИНН, КПП, адрес, банковские реквизиты, сумма, ФИО подписантов).

Изменяемые данные станут параметрами макета. Важно понять, откуда каждое значение будет браться: из реквизитов документа, из карточки контрагента, из сведений об организации или вычисляться программно (например, сумма прописью). Если какого-то поля нет в базе, его придётся либо вводить вручную при печати, либо добавлять реквизит в конфигурацию.

Создание макета в конфигураторе

Откройте конфигурацию в конфигураторе и найдите объект, к которому относится договор — чаще всего это справочник «Договоры контрагентов» или документ «Реализация товаров и услуг». В дереве объекта перейдите в ветку «Макеты», нажмите «Добавить» и выберите тип «Табличный документ». Задайте понятное имя, например «МакетДоговора».

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

Длинные тексты договора удобнее размещать в объединённых ячейках с включённым переносом строк. Если договор содержит таблицу с перечнем товаров или услуг, выделите её в отдельную именованную область — так программа сможет выводить строки в цикле.

Порядок создания макета
  1. 1
    Откройте конфигуратор и найдите нужный объект (справочник или документ)
  2. 2
    Добавьте макет типа «Табличный документ» с понятным именем
  3. 3
    Перенесите структуру договора: заголовок, текст, таблицы, подписи
  4. 4
    Настройте параметры в квадратных скобках для изменяемых данных
  5. 5
    Выделите именованные области для шапки, строк таблицы и подвала
  6. 6
    Сохраните макет и обновите конфигурацию базы данных

Работа с областями и параметрами

Именованные области — ключевой механизм макетов. Выделите строки шапки договора, затем через меню «Таблица — Имена — Назначить имя» создайте область «Шапка». Аналогично создайте области «СтрокаТаблицы» для одной строки перечня и «Подвал» для подписей сторон. Программный код будет получать эти области по имени и выводить их последовательно.

Параметры бывают двух типов: обычные ([Имя]) подставляют значение как текст, а шаблоны (<%Имя%> в ячейках с заполнением «Шаблон») позволяют встраивать значение прямо внутрь предложения, например: «Покупатель обязуется оплатить сумму в размере <%СуммаПрописью%> рублей». Для договоров шаблоны удобнее, так как данные встроены в юридические формулировки.

Программное заполнение макета

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

bsl
Макет = ПолучитьМакет("МакетДоговора");
ОбластьШапка = Макет.ПолучитьОбласть("Шапка");
ОбластьШапка.Параметры.НомерДоговора = ДанныеДокумента.Номер;
ОбластьШапка.Параметры.Контрагент = ДанныеДокумента.Контрагент.НаименованиеПолное;
ТабДокумент.Вывести(ОбластьШапка);

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

Альтернатива: внешняя печатная форма без изменения конфигурации

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

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

Способы добавления макета

Макет в конфигураторе

Подходит при снятой поддержке и наличии разработчика; риск — доработка усложнит обновление типовой конфигурации

Внешняя печатная форма (.epf)

Подходит для типовых конфигураций на поддержке; ограничение — требуется соответствие интерфейсу подсистемы печати

Печать из Word через COM-объект

Подходит для сложной вёрстки договора; ограничение — работает только на клиенте с установленным MS Office и медленнее табличного документа

Проверка результата и типичные ошибки

После подключения макета сформируйте печатную форму на тестовом документе с полностью заполненными реквизитами. Проверьте каждый параметр: номер и дату договора, полное наименование сторон, ИНН/КПП, адреса, банковские реквизиты, сумму цифрами и прописью, ФИО и должности подписантов. Особое внимание уделите переносам строк в длинных юридических формулировках и разрывам страниц — подписи не должны «отрываться» от текста договора.

Контрольные точки

Как проверить готовый макет

Подстановка параметров
Норма

Все поля заполнены данными из документа

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

Пустые квадратные скобки или пустые места в тексте

Сумма прописью
Норма

Сумма совпадает с цифровой и склоняется корректно

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

Несовпадение суммы или неверные окончания

Вёрстка при печати
Норма

Подписи на одной странице с концовкой текста, нет обрезанных строк

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

Разрыв таблицы, «висячие» подписи, обрезанный текст

Данные контрагента
Норма

Берутся актуальные реквизиты из карточки

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

Подставляются устаревшие или неполные сведения

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

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

Можно ли сделать макет договора без программирования?

Частично — через внешнюю печатную форму с уже готовым шаблоном кода, где нужно только отредактировать макет. Полностью без кода обойтись не получится: параметры макета должен кто-то заполнить, а это делается только программно.

Чем макет табличного документа лучше макета Word?

Табличный документ работает на сервере и в веб-клиенте без установленного Office, быстрее формируется и надёжнее контролирует разрывы страниц. Макет Word оправдан только при очень сложной вёрстке, которую трудно воспроизвести в табличном редакторе.

Как вывести в договор реквизиты, которых нет в документе?

Реквизиты контрагента и организации берутся из соответствующих справочников по ссылке из документа. Если нужного поля нет вообще (например, «Действующий на основании»), его добавляют в справочник или хранят в регистре сведений, а в коде печати читают запросом.

Почему при печати параметр остаётся пустым?

Чаще всего имя параметра в макете не совпадает с именем в коде (опечатка, лишний пробел) либо источник данных пуст — например, у контрагента не заполнен КПП. Проверьте имя параметра и заполненность карточки контрагента.

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

Номер берётся из реквизита документа или справочника договоров, где действует автонумерация. Если нужен особый формат (например, с префиксом подразделения), настраивается нумератор или код формирования номера при записи объекта.

Можно ли вывести договор сразу в PDF?

Да. Сформированный табличный документ сохраняется в PDF программно методом записи с типом файла PDF или вручную из формы предварительного просмотра через «Файл — Сохранить» с выбором формата PDF.

Итог

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

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