Документы и Печать · 9 мин
Как создать макет договора в 1С
Как создать макет договора в 1С: добавление макета в конфигураторе, работа с параметрами и областями, вывод печатной формы и типичные ошибки при настройке.
Макет договора в 1С — это шаблон печатной формы, в который программа автоматически подставляет данные из документа или справочника: наименование контрагента, реквизиты, суммы, даты. Вместо ручного заполнения Word-файла пользователь нажимает одну кнопку и получает готовый договор с актуальными данными из базы. Такой подход исключает опечатки в реквизитах и ускоряет подготовку документов в разы.
Создать макет можно двумя путями: в конфигураторе (для доработки типовой конфигурации) или через механизм внешних печатных форм, если конфигурация работает в режиме управляемого приложения и поддерживает подключение дополнительных обработок. Выбор зависит от того, есть ли у вас доступ к конфигуратору и стоит ли конфигурация на поддержке.
Ниже разобран полный цикл: от подготовки структуры договора до проверки готовой печатной формы. Материал ориентирован на конфигурации на платформе 1С:Предприятие 8.3 с использованием табличного документа — самого распространённого формата макетов печати.
Подготовка: что должно быть в макете договора
Прежде чем открывать конфигуратор, определите структуру будущего договора. Возьмите действующий образец, который использует компания, и разбейте его на две части: статичный текст (преамбула, формулировки пунктов, подписи) и изменяемые данные (номер договора, дата, наименование контрагента, ИНН, КПП, адрес, банковские реквизиты, сумма, ФИО подписантов).
Изменяемые данные станут параметрами макета. Важно понять, откуда каждое значение будет браться: из реквизитов документа, из карточки контрагента, из сведений об организации или вычисляться программно (например, сумма прописью). Если какого-то поля нет в базе, его придётся либо вводить вручную при печати, либо добавлять реквизит в конфигурацию.
Создание макета в конфигураторе
Откройте конфигурацию в конфигураторе и найдите объект, к которому относится договор — чаще всего это справочник «Договоры контрагентов» или документ «Реализация товаров и услуг». В дереве объекта перейдите в ветку «Макеты», нажмите «Добавить» и выберите тип «Табличный документ». Задайте понятное имя, например «МакетДоговора».
В открывшемся редакторе перенесите структуру договора: заголовок, реквизиты сторон, основной текст, таблицу условий, блок подписей. Ячейки с изменяемыми данными оформляйте как параметры: выделите ячейку, в свойствах установите «Заполнение» — «Параметр», а текст укажите в квадратных скобках, например [НаименованиеКонтрагента]. Для повторяющихся значений вроде суммы используйте один и тот же параметр в разных местах макета.
Длинные тексты договора удобнее размещать в объединённых ячейках с включённым переносом строк. Если договор содержит таблицу с перечнем товаров или услуг, выделите её в отдельную именованную область — так программа сможет выводить строки в цикле.
- 1Откройте конфигуратор и найдите нужный объект (справочник или документ)
- 2Добавьте макет типа «Табличный документ» с понятным именем
- 3Перенесите структуру договора: заголовок, текст, таблицы, подписи
- 4Настройте параметры в квадратных скобках для изменяемых данных
- 5Выделите именованные области для шапки, строк таблицы и подвала
- 6Сохраните макет и обновите конфигурацию базы данных
Работа с областями и параметрами
Именованные области — ключевой механизм макетов. Выделите строки шапки договора, затем через меню «Таблица — Имена — Назначить имя» создайте область «Шапка». Аналогично создайте области «СтрокаТаблицы» для одной строки перечня и «Подвал» для подписей сторон. Программный код будет получать эти области по имени и выводить их последовательно.
Параметры бывают двух типов: обычные ([Имя]) подставляют значение как текст, а шаблоны (<%Имя%> в ячейках с заполнением «Шаблон») позволяют встраивать значение прямо внутрь предложения, например: «Покупатель обязуется оплатить сумму в размере <%СуммаПрописью%> рублей». Для договоров шаблоны удобнее, так как данные встроены в юридические формулировки.
Программное заполнение макета
Макет сам по себе ничего не печатает — нужен код, который получит область, заполнит параметры и выведет результат в табличный документ. В типовых конфигурациях это делается в модуле менеджера объекта в процедуре печати. Упрощённая логика выглядит так: получить макет, получить область «Шапка», присвоить параметрам значения из данных документа, вывести область в результирующий табличный документ, затем в цикле вывести строки таблицы и в конце — подвал.
Макет = ПолучитьМакет("МакетДоговора");
ОбластьШапка = Макет.ПолучитьОбласть("Шапка");
ОбластьШапка.Параметры.НомерДоговора = ДанныеДокумента.Номер;
ОбластьШапка.Параметры.Контрагент = ДанныеДокумента.Контрагент.НаименованиеПолное;
ТабДокумент.Вывести(ОбластьШапка);Для суммы прописью используйте типовые функции работы со строками и числами — в большинстве конфигураций есть готовый механизм формирования суммы прописью с учётом валюты. Реквизиты контрагента (ИНН, КПП, адрес, банковский счёт) берите из карточки контрагента; учитывайте, что часть сведений может храниться в табличных частях или регистрах сведений, и потребуется запрос.
Альтернатива: внешняя печатная форма без изменения конфигурации
Если конфигурация находится на полной поддержке или у вас нет доступа к конфигуратору, используйте механизм дополнительных отчётов и обработок (в типовых решениях на БСП он включён в разделе «Администрирование»). Внешняя печатная форма — это файл обработки .epf, внутри которого лежит тот же табличный макет и код заполнения, но конфигурация при этом не изменяется.
Преимущество подхода — безопасность обновлений: типовые релизы не затронут внешнюю обработку. Ограничение — обработку нужно писать по правилам подсистемы печати (функция СведенияОВнешнейОбработке, экспортная процедура Печать), что требует базовых навыков разработки на встроенном языке.
Способы добавления макета
Подходит при снятой поддержке и наличии разработчика; риск — доработка усложнит обновление типовой конфигурации
Подходит для типовых конфигураций на поддержке; ограничение — требуется соответствие интерфейсу подсистемы печати
Подходит для сложной вёрстки договора; ограничение — работает только на клиенте с установленным MS Office и медленнее табличного документа
Проверка результата и типичные ошибки
После подключения макета сформируйте печатную форму на тестовом документе с полностью заполненными реквизитами. Проверьте каждый параметр: номер и дату договора, полное наименование сторон, ИНН/КПП, адреса, банковские реквизиты, сумму цифрами и прописью, ФИО и должности подписантов. Особое внимание уделите переносам строк в длинных юридических формулировках и разрывам страниц — подписи не должны «отрываться» от текста договора.
Как проверить готовый макет
Все поля заполнены данными из документа
Пустые квадратные скобки или пустые места в тексте
Сумма совпадает с цифровой и склоняется корректно
Несовпадение суммы или неверные окончания
Подписи на одной странице с концовкой текста, нет обрезанных строк
Разрыв таблицы, «висячие» подписи, обрезанный текст
Берутся актуальные реквизиты из карточки
Подставляются устаревшие или неполные сведения
Частые вопросы
Можно ли сделать макет договора без программирования?
Частично — через внешнюю печатную форму с уже готовым шаблоном кода, где нужно только отредактировать макет. Полностью без кода обойтись не получится: параметры макета должен кто-то заполнить, а это делается только программно.
Чем макет табличного документа лучше макета Word?
Табличный документ работает на сервере и в веб-клиенте без установленного Office, быстрее формируется и надёжнее контролирует разрывы страниц. Макет Word оправдан только при очень сложной вёрстке, которую трудно воспроизвести в табличном редакторе.
Как вывести в договор реквизиты, которых нет в документе?
Реквизиты контрагента и организации берутся из соответствующих справочников по ссылке из документа. Если нужного поля нет вообще (например, «Действующий на основании»), его добавляют в справочник или хранят в регистре сведений, а в коде печати читают запросом.
Почему при печати параметр остаётся пустым?
Чаще всего имя параметра в макете не совпадает с именем в коде (опечатка, лишний пробел) либо источник данных пуст — например, у контрагента не заполнен КПП. Проверьте имя параметра и заполненность карточки контрагента.
Как сделать, чтобы номер договора формировался автоматически?
Номер берётся из реквизита документа или справочника договоров, где действует автонумерация. Если нужен особый формат (например, с префиксом подразделения), настраивается нумератор или код формирования номера при записи объекта.
Можно ли вывести договор сразу в PDF?
Да. Сформированный табличный документ сохраняется в PDF программно методом записи с типом файла PDF или вручную из формы предварительного просмотра через «Файл — Сохранить» с выбором формата PDF.
Что важно запомнить
Макет договора создаётся как табличный документ с параметрами в квадратных скобках и именованными областями, а заполняется программным кодом. Для типовых конфигураций безопаснее использовать внешнюю печатную форму. Перед запуском в работу проверьте все параметры, сумму прописью и вёрстку на тестовом документе.