Как организовать автоматическую конвертацию файлов MXL из 1С 7.7 в PDF с помощью 1С 8?

Программист 1С v8.3 (Обычные формы) IT и автоматизация бизнеса
← На главную

При автоматизации документооборота в системе 1С:Предприятие 7.7 часто возникает необходимость отправки печатных форм по электронной почте в формате PDF. Однако штатные средства 1С 7.7 не позволяют сохранять табличные документы в PDF напрямую с высоким качеством. Сторонние библиотеки, такие как Yoksel, формируют PDF путем преобразования страниц в растровые картинки, из-за чего теряется качество шрифтов, возникают сложности с масштабированием и разбиением на страницы.

В платформе 1С:Предприятие 8 реализована встроенная поддержка сохранения табличных документов в формат PDF с векторным сохранением текста. Рассмотрим, как настроить автоматическую конвертацию файлов .mxl из 1С 7.7 с помощью 1С 8 и альтернативных инструментов.

Способ 1. Конвертация файлов на стороне 1С 8 по расписанию или событию

Рассмотрим вариант, когда 1С 7.7 сохраняет сформированный документ .mxl в общую сетевую папку, а сеанс 1С 8 считывает его и преобразует в .pdf. Для работы с файлами используется объект ТабличныйДокумент и его метод Прочитать().

Разберем пример кода на языке 1С 8 для обработки всех файлов .mxl в заданной директории:


Функция ОбработатьФайл(псИмяФайла, псИмяФайлаПдф)
    вФайл2 = Новый Файл(псИмяФайлаПдф);
    Если Не вФайл2.Существует() Тогда        
        вТабла = Новый ТабличныйДокумент;
        вТабла.Прочитать(псИмяФайла);
        вТабла.АвтоМасштаб = Истина;
        вТабла.Записать(псИмяФайлаПдф, ТипФайлаТабличногоДокумента.PDF);    
    КонецЕсли; 
    Возврат вФайл2.Существует();
КонецФункции

Функция ЗапускКонвертера() Экспорт 
    вМассивФайлов = НайтиФайлы(глКаталогИБКонвертации, "*.mxl", Ложь);
    Для Каждого вФайл Из вМассивФайлов Цикл
        вПдфИмя = вФайл.Путь + вФайл.ИмяБезРасширения + ".pdf";
        ОбработатьФайл(вФайл.ПолноеИмя, вПдфИмя);
    КонецЦикла;
    Возврат Истина;
КонецФункции

При использовании этого метода обратите внимание на следующие нюансы:

  1. Настройки страницы: Бинарный формат файлов .mxl в 7.7 и 8 отличается. При прочтении файла 7.7 через ТабличныйДокумент.Прочитать() свойства страницы (ориентация, поля, масштаб) могут сбрасываться. Перед вызовом метода Записать() рекомендуется явно задавать свойства АвтоМасштаб = Истина или регулировать параметры печати.
  2. Шрифты на сервере: Если конвертация выполняется в фоновом задании на сервере 1С, убедитесь, что служба сервера работает под учетной записью с доступом к установленным в системе шрифтам TrueType.

Способ 2. Прямой вызов 1С 8 из 1С 7.7 через COM-соединение

Чтобы избежать задержек при разборе каталога и не ожидать выполнения регламентного задания, разберем подход с использованием COM-соединителя. В этом случае 1С 7.7 напрямую вызывает функцию базы 1С 8 и мгновенно получает готовый файл.

Проанализируем порядок действий:

  1. В 1С 7.7 выгружаем табличный документ в каталог во временный файл .mxl.
  2. Создаем объект COM-соединения: v8 = СоздатьОбъект("V83.COMConnector");.
  3. Подключаемся к информационной базе 1С 8 и вызываем экспортную функцию обработки, передавая путь к файлу.
  4. 1С 8 выполняет метод ТабличныйДокумент.Записать(..., ТипФайлаТабличногоДокумента.PDF) и возвращает статус выполнения.

Этот способ экономит ресурсы сервера, так как COM-соединение не запускает полноценный клиентский интерфейс 1С 8.

Способ 3. Использование веб-сервисов 1С 8

Если базы 1С 7.7 и 1С 8 находятся в разных сегментах сети или на разных серверах, наиболее универсальным решением будет публикация SOAP или REST веб-сервиса на стороне 1С 8.

Пример схемы взаимодействия:

  1. 1С 7.7 отправляет HTTP-запрос (например, с помощью объекта WinHttp.WinHttpRequest.5.1) на веб-сервис 1С 8, передавая тело файла .mxl в виде двоичных данных или строки Base64.
  2. Веб-сервис 1С 8 принимает данные, загружает их в ТабличныйДокумент, выполняет запись в PDF и возвращает готовый документ в ответе.
  3. 1С 7.7 получает готовый PDF-файл из ответа и сразу прикрепляет его к письму.

Способ 4. Использование виртуального PDF-принтера

Если поднимать и поддерживать базу 1С 8 нецелесообразно, проанализируем вариант с использованием специализированных программных PDF-принтеров (PDFCreator, Bullzip PDF Printer, doPDF).

Основные преимущества такого решения:

  1. Тихий режим (Autosave): В настройках виртуального принтера или через его COM-интерфейс (например, PDFCreator.JobQueue или com.bullzip.PdfSettings) можно отключить показ диалоговых окон. Принтер автоматически сохранит печатную форму в указанную папку с заданным именем.
  2. Сетевой доступ: Виртуальный принтер можно установить на сервере и расшарить по сети. Пользователям на рабочих станциях не потребуется ставить сторонний софт — печать выполняется на сетевое устройство \\Server\PDFPrinter.
← На главную