При формировании и отправке печатных форм из 1С в формате PDF пользователи часто сталкиваются с неприятной проблемой: вместо привычного кириллического текста в документе отображаются непонятные символы, квадраты, знаки вопроса или «кракозябры». Особенно остро эта проблема проявляется при обновлении операционной системы до Windows 10 или Windows 11, а также при массовой рассылке документов контрагентам, которые открывают файлы через обычные веб-браузеры.
В этой статье мы подробно разберем, почему возникает этот сбой, проанализируем техническую сторону проблемы и рассмотрим все возможные методы ее решения — от простых пользовательских настроек до изменения кода в конфигурации 1С и администрирования операционной системы.
Главная техническая причина искажения текста заключается в отсутствии внедрения шрифтов (Font Embedding) при сохранении табличного документа средствами платформы 1С по умолчанию.
Когда мы сохраняем печатную форму в стандартный PDF, платформа 1С записывает в файл только ссылки на используемые шрифты (например, Arial, Calibri или Times New Roman), но не упаковывает сами файлы шрифтов внутрь документа. Дальнейшее отображение текста полностью зависит от программы, в которой открывается файл:
Переход на Windows 10 усугубляет ситуацию из-за обновленных механизмов работы с системными шрифтами GDI+ и измененных системных кодировок по умолчанию.
---
Если мы хотим, чтобы отправленные из 1С файлы PDF гарантированно и корректно открывались на любых устройствах, в любых браузерах и почтовых клиентах, необходимо заставить платформу внедрять шрифты прямо в тело файла. Для этого вместо стандартного формата PDF следует использовать международные архивные стандарты семейства PDF/A.
Спецификация стандартов PDF/A на уровне правил требует обязательного внедрения абсолютно всех используемых в документе шрифтов. Файл при этом станет весить немного больше, но проблема с отображением кириллицы исчезнет навсегда.
Рассмотрим пример кода, который необходимо использовать при программном сохранении табличного документа:
// Создаем объект табличного документа
ТабДок = Новый ТабличныйДокумент;
// ... (здесь происходит заполнение и формирование печатной формы) ...
// Путь для сохранения файла
ПутьКФайлу = "C:\Temp\Invoice.pdf";
// Вместо стандартного ТипФайлаТабличногоДокумента.PDF
// используем формат PDF/A-1, который принудительно внедрит шрифты
ТабДок.Записать(ПутьКФайлу, ТипФайлаТабличногоДокумента.PDF_A_1);
Платформа 1С поддерживает несколько вариантов этого стандарта:
PDF_A_1 — базовый архивный формат (оптимально для большинства задач);PDF_A_2 — более современная версия стандарта, поддерживающая сжатие JPEG 2000 и прозрачность;PDF_A_3 — позволяет прикреплять к PDF-документу другие файлы (например, XML-данные).Для решения проблемы с кракозябрами достаточно использовать ТипФайлаТабличногоДокумента.PDF_A_1. Для дальнейшей модификации готовых файлов можно использовать инструмент для программного нанесения штампов и текста на PDF-страницы штатными средствами платформы.
---
Очень часто искажение кодировки при экспорте документов из 1С происходит из-за одной скрытой настройки региональных стандартов Windows. В новых версиях Windows 10 и 11 по умолчанию может быть активирована экспериментальная поддержка UTF-8, которая нарушает работу механизмов генерации файлов в 1С.
Проанализируем, как ее отключить по шагам:
---
Если предыдущие шаги не помогли, можно прибегнуть к проверенному системному трюку. Он заставляет операционную систему принудительно обрабатывать западноевропейскую кодировку (ANSI 1252), которую часто ошибочно используют генераторы PDF, как кириллическую (ANSI 1251).
Рассмотрим пошаговый алгоритм изменения реестра:
Win + R, введите команду regedit и нажмите Enter для запуска Редактора реестра.HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\CodePagec_1252.nls на c_1251.nls.---
Если база данных работает в клиент-серверном режиме, а отправка почты и генерация PDF происходят в фоновом задании на сервере, кодировка может «слетать» из-за банального отсутствия прав доступа к системным шрифтам у службы сервера 1С.
Выясним, как настроить серверную часть:
USR1CV8), имеет полные права на чтение содержимого папки со шрифтами C:\Windows\Fonts. Без этих прав серверная часть платформы не сможет прочитать файлы шрифтов при экспорте табличного документа и запишет пустые метаданные.ttf-mscorefonts-installer и обязательно обновите кэш системных шрифтов с помощью выполнения консольной команды:
fc-cache -f -v
Если этого не сделать, Linux попытается заменить кириллические шрифты стандартными свободными аналогами (например, Liberation Sans), у которых при конвертации в PDF часто ломается таблица символов кириллицы.---
Если вам нужно срочно отправить или открыть документ, а времени на изменение кода или настроек реестра нет, воспользуйтесь обходными путями, которые гарантируют корректный результат:
Применяя данные методы в комплексе, мы сможем полностью избавить пользователей от проблемы с отображением кракозябр при формировании PDF-документов в 1С.