При работе в системе 1С:Документооборот 3.0 пользователи часто сталкиваются с ситуацией, когда в карточке документа на вкладке «Обзор» в окне предпросмотра файл выглядит «пустым». Речь идет не о полном отсутствии текста, а о том, что основной текст шаблона виден, но на месте полей автозаполнения (например, заголовок, сумма, контрагент) отображаются либо пустые места, либо сами технические теги вида {{Заголовок}}. Особенно остро эта проблема проявляется при использовании формата ODT (OpenDocument Text), в то время как файлы .docx могут отображаться корректно.
В данной статье мы разберем причины такого поведения системы, проанализируем технические нюансы работы движка предпросмотра и выясним, как настроить программу для корректного отображения данных.
Прежде всего, давайте разберем, как именно 1С формирует картинку, которую мы видим на вкладке «Обзор». В отличие от обычного открытия файла, где за отрисовку отвечает установленный на компьютере текстовый редактор (Word или LibreOffice), предпросмотр — это статичное изображение (превью), сгенерированное сервером или платформой. Процесс выглядит следующим образом:
Генерация изображений для предпросмотра обращается к файлу..docx, 1С часто справляется собственными механизмами или через установленные компоненты..odt, системе требуется внешний рендерер (например, LibreOffice) для того, чтобы «прочитать» документ и превратить его в набор картинок для предпросмотра.Проблема «пустых полей» возникает, когда на этапе генерации изображения система берет либо кешированную версию файла (до заполнения), либо не может корректно интерпретировать структуру XML внутри ODT-пакета после внесения в него изменений механизмом автозаполнения 1С.
Рассмотрим техническую ситуацию, которую часто называют «разрывом тегов». Формат .odt внутри представляет собой архив с XML-файлами. Механизм автозаполнения 1С ищет в этом XML строковые вхождения ваших полей, например, {{ДатаДокумента}}.
Проанализируем ситуацию: если вы при создании шаблона в LibreOffice случайно изменили шрифт внутри тега или программа применила автоматическую проверку орфографии к части слова, XML-код может выглядеть так:
<text:p>{{Дата<text:span text:style-name="T1">Документа</text:span>}}</text:p>
Для пользователя в текстовом редакторе это выглядит как единое поле, но для скрипта автозаполнения 1С это разные фрагменты текста. В результате 1С не находит тег и не заменяет его данными. Хотя при открытии файла вручную LibreOffice может «склеить» эти части и отобразить их, движок предпросмотра 1С увидит только «сырой» шаблон.
Решение: Всегда вставляйте поля в шаблон как «чистый текст» или используйте специальную очистку форматирования для тегов автозаполнения. Убедитесь, что внутри фигурных скобок нет скрытых символов форматирования.
Выясним, почему даже после ручного нажатия кнопки Заполнить файл данными документа предпросмотр может не обновляться. В 1С:Документооборот 3.0 работает фоновое задание, которое генерирует превью. Если превью было создано в тот момент, когда файл был еще пустым шаблоном, оно сохраняется в специальном кеше на сервере.
Для проверки этой гипотезы попробуйте выполнить следующие действия:
Обновить предпросмотр (если доступно в вашей версии платформы).Если ваш сервер 1С работает под управлением ОС Linux, ситуация с ODT осложняется. Для генерации изображений предпросмотра система использует пакеты libreoffice-headless или unoconv. Если эти пакеты настроены некорректно или имеют недостаточные права доступа к шрифтам, процесс визуализации может проходить с ошибками: текст шаблона отображается (так как он статичен), а динамически добавленные данные игнорируются или не прорисовываются из-за несоответствия кодировок.
Наиболее стабильным способом решения проблем с предпросмотром для формата ODT в версии 3.0 является переход на PDF-визуализацию. Это механизм, при котором система для нужд предпросмотра создает временную PDF-копию документа, которая отображается гораздо надежнее.
Разберем, как это настроить по шагам:
ODT -> PDF.Рассмотрим подробнее преимущество этого метода: когда 1С отправляет заполненный ODT файл на конвертацию в PDF, происходит полноценный рендеринг документа. Все поля, которые были заполнены, фиксируются в PDF, и предпросмотр гарантированно показывает актуальные данные.
В настройках шаблона документа в 1С:Документооборот 3.0 есть возможность прописать Скрипт после заполнения. Это мощный инструмент, позволяющий программно управлять файлом сразу после того, как 1С вставила в него данные.
Проанализируем пример логики, которую можно внедрить для принудительного обновления:
// Пример логики для принудительного обновления состояния файла
ОбъектФайл = Файлы.НайтиПоНаименованию("ВашФайл.odt");
// Вызов серверной процедуры обновления превью
Делопроизводство.ОбновитьПредставлениеФайла(ОбъектФайл);
Хотя стандартные механизмы должны работать автоматически, в некоторых конфигурациях именно принудительный вызов обновления визуализации после записи документа решает проблему «залипшего» предпросмотра.
Подводя итог, если вы столкнулись с отсутствием полей автозаполнения в предпросмотре ODT:
.docx, так как поддержка его внутреннего парсинга в 1С реализована более глубоко.Использование связки 1С:Документооборот 3.0 + LibreOffice + PDF-визуализация является промышленным стандартом, обеспечивающим корректное отображение документов любой сложности в интерфейсе системы.