При работе с шаблонами договоров в формате Microsoft Word (.docx) часто возникает необходимость менять текст в зависимости от типа контрагента (Юрлицо или ИП), наличия НДС или других условий. Разберем по шагам, как это можно реализовать, учитывая, что сам файл Word не умеет исполнять программный код 1С.
Проанализируем самый надежный способ. Мы создаем в макете Word произвольный параметр, например, [КтоЭто], а логику его заполнения описываем в коде системы. Это позволяет динамически формировать строку любой сложности.
Рассмотрим пример кода, который определяет преамбулу договора в зависимости от типа контрагента:
Если Контрагент.ЮрФизЛицо = Перечисления.ЮрФизЛицо.ЮрЛицо Тогда
СтрокаКонтрагент = "в лице Генерального директора";
ИначеЕсли Контрагент.ЮрФизЛицо = Перечисления.ЮрФизЛицо.ФизЛицо Тогда
СтрокаКонтрагент = "в лице индивидуального предпринимателя";
Иначе
СтрокаКонтрагент = "в лице представителя";
КонецЕсли;
// Передаем сформированное значение в структуру данных для печати
Данные.Вставить("КтоЭто", СтрокаКонтрагент);
После внесения изменений в код, вам останется только вписать [КтоЭто] в нужное место вашего документа Word. Важно: этот метод требует внесения изменений в конфигурацию или создания расширения.
Выясним причину, по которой этот способ часто оказывается эффективнее. Договоры с физическими и юридическими лицами могут отличаться не одной строкой, а целыми разделами (реквизиты, ответственность, условия оплаты). В таком случае проще создать два отдельных макета:
Это избавит вас от необходимости перегружать один файл сложной логикой, которую трудно отлаживать.
Посмотрим на ситуацию, когда доступа к конфигуратору нет. В типовых решениях (БП 3.0, УТ 11, УНФ) можно использовать механизм Дополнительных реквизитов:
Контрагенты новый реквизит (например, "ТекстДляДоговора").Если ваша конфигурация позволяет редактировать схему компоновки данных (СКД) для печати, мы можем использовать Вычисляемые поля. Разберем по шагам:
В схеме данных добавьте новое поле и в колонке "Выражение" пропишите стандартную функцию 1С:
ВЫБОР КОГДА ЮрФизЛицо = ЗНАЧЕНИЕ(Перечисление.ЮрФизЛицо.ФизЛицо) ТОГДА "ИП Иванов И.И." ИНАЧЕ "ООО Вектор" КОНЕЦ
Это поле станет доступным для вставки в Word как обычный параметр, и система сама вычислит его значение в момент формирования файла.
Проанализируем специализированные инструменты. В 1С:Документооборот реализован механизм "Настройки заполнения файлов", где условия можно писать на встроенном языке прямо в пользовательском режиме. В 1С:УНФ шаблоны более гибкие и позволяют вставлять таблицы и связанные данные через конструктор, что значительно упрощает работу без привлечения программиста.
Резюме: Если вам нужно простое условие в типовой бухгалтерии, используйте два разных шаблона или дополнительные реквизиты. Если требуется сложная автоматизация — используйте параметры в коде через расширение конфигурации.