При формировании печатных форм договоров и коммерческих предложений в формате Microsoft Word из программы 1С:Управление нашей фирмой пользователи часто сталкиваются с тем, что подставляемые реквизиты (наименование клиента, сумма, реквизиты организации) отображаются на сером фоне. На бумажной печати этот фон, как правило, отсутствует, однако при отправке файла клиенту по электронной почте серые подложки остаются видны и портят внешний вид документа. Разберем причины такого поведения и рассмотрим все способы устранения этой проблемы.
Проанализируем техническую сторону формирования шаблона. В 1С:УНФ подставляемые параметры по умолчанию вставляются в макет как поля формы предыдущих версий (Legacy Form Fields или wdFieldFormTextInput). В Microsoft Word для таких элементов включен специальный режим визуального выделения — затенение полей формы. Он предназначен для того, чтобы при ручном заполнении пользователь видел редактируемые области.
Важно понимать, что обычное отключение затенения в общих параметрах Word на конкретном компьютере решает проблему только локально. Если передать такой файл клиенту, на его компьютере серый фон снова появится в соответствии с его локальными настройками программы. Чтобы фон исчез у всех получателей, необходимо отключить затенение на уровне самого макета или перевести поля в статический текст.
Рассмотрим основной способ, который позволяет сохранить настройку непосредственно в структуре файла макета, благодаря чему документ будет корректно открываться у всех клиентов.
Разберем штатные возможности программы 1С:Управление нашей фирмой. При редактировании шаблонов документов непосредственно в интерфейсе системы предусмотрена специальная опция, управляющая визуальным стилем реквизитов.
Иногда серый фон возникает не из-за полей формы, а из-за скопированного форматирования текста или маркера выделения. Выясним, как быстро убрать такое оформление:
Если печатная форма формируется программно через COM-объект Microsoft Word, лучшим решением будет преобразование всех полей формы в обычный статичный текст (операция Unlink), либо отключение затенения на уровне документа. Посмотрим на пример кода на встроенном языке 1С:
// Отключение затенения полей формы во всем документе
ДокументWord.FormFields.Shaded = Ложь;
// Преобразование полей формы в обычный плоский текст
// После разрыва связей поля перестают быть объектами формы, серый фон гарантированно пропадает
ДокументWord.Fields.Unlink();
Использование метода Unlink() полностью исключает появление серого фона на любых устройствах и в любых версиях офисных пакетов, так как динамические поля заменяются на обычные текстовые строки.
Если шаблон уже сформирован и требуется быстро отправить коммерческое предложение без изменения макета, рассмотрим альтернативные варианты:
{v8 ИмяПараметра}, где подстановка выполняется на уровне XML-структуры файла без использования устаревших полей формы Word.