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

В этой статье мы разберём все актуальные способы сохранения печатных форм из 1С в XML: от ручных методов для пользователей до автоматизированных решений для разработчиков. Особое внимание уделим типичным ошибкам (например, потере форматирования при экспорте табличных документов) и способам их обхода. Материал будет полезен бухгалтерам, кадровикам, логистам и программистам 1С, работающим с версиями платформы 8.3 и новее.

Почему XML, а не PDF или Excel?

Прежде чем переходить к инструкциям, важно понять, в каких случаях XML предпочтительнее других форматов:

  • 🔄 Обмен данными: XML идеален для интеграции с внешними системами (например, ЭДО, CRM, или государственными порталами). Формат поддерживает структурированные данные с метаинформацией, что упрощает парсинг.
  • 📊 Дальнейшая обработка: В отличие от PDF, XML позволяет легко извлекать отдельные поля (номера документов, суммы, реквизиты) для анализа или загрузки в другие программы.
  • 🔒 Сохранность данных: XML хранит исходную разметку документа, тогда как Excel может искажать форматирование таблиц, а PDF — "запечатывать" данные, делая их недоступными для редактирования.
  • ⚙️ Автоматизация: XML-файлы удобно обрабатывать скриптами (например, на Python или PowerShell) для массовых операций.

Однако у формата есть и минусы: человеку сложно читать "сырой" XML, а объём файла может быть больше, чем у PDF. Если ваша задача — просто распечатать или архивировать документ, возможно, стоит рассмотреть альтернативы. Но для интеграции и обмена данными XML остаётся лучшим выбором.

📊 Для чего вам нужен экспорт печатных форм в XML?
Интеграция с другой системой
Архивирование документов
Обработка данных скриптами
Требование контрагента
Другое

Способ 1: Сохранение через "Печатную форму" (для пользователей)

Самый простой метод — использовать встроенные механизмы 1С. Он подходит для большинства типовых конфигураций (1С:Бухгалтерия, 1С:Зарплата и Управление Персоналом, 1С:Управление Торговлей):

  1. Откройте документ, печатную форму которого нужно сохранить (например, счёт на оплату или акт выполненных работ).
  2. Нажмите кнопку Печать → выберите нужную форму из списка (например, Счёт на оплату (печатная форма)).
  3. В открывшемся окне предварительного просмотра нажмите ФайлСохранить как....
  4. В диалоговом окне выберите формат XML (*.xml) и укажите путь для сохранения.

⚠️ Внимание: В некоторых конфигурациях опция сохранения в XML может отсутствовать в стандартном диалоге. В этом случае попробуйте:

  • 🖱️ Нажать правой кнопкой на печатную форму → Сохранить как....
  • 🔧 Использовать кнопку Ещё (три точки) в окне предварительного просмотра.

☑️ Подготовка к сохранению печатной формы

Выполнено: 0 / 4

Если даже после этих действий опция XML недоступна, значит, ваша конфигурация не поддерживает прямой экспорт в этот формат. В таком случае переходите к следующим способам.

Способ 2: Экспорт через "Табличный документ" (универсальный метод)

Многие печатные формы в 1С формируются как табличные документы. Их можно сохранить в XML через встроенный механизм, даже если прямой экспорт отсутствует:

  1. Откройте печатную форму документа (например, Торг-12 или Акт сверки).
  2. В окне предварительного просмотра нажмите ФайлСохранить как....
  3. В поле Тип файла выберите Табличный документ (*.mxl). Это внутренний формат 1С, основанный на XML.
  4. Сохраните файл с расширением .mxl.
  5. Переименуйте расширение файла с .mxl на .xml (или откройте в текстовом редакторе и сохраните как XML).

🔹 Преимущество метода: Работает в 90% типовых конфигураций, так как .mxl — это фактически XML с небольшими доработками для 1С. Недостаток: структура файла может содержать служебные теги 1С, которые придётся очищать вручную или скриптом.

Чем .mxl отличается от стандартного XML?

Файлы .mxl — это XML-документы с пространством имён 1С (v8:tableDocument). Они содержат метаданные о шрифтах, границах ячеек и других параметрах оформления, что делает их тяжелее "чистого" XML. Для интеграции с внешними системами такие теги обычно удаляют.

Способ 3: Программный экспорт через 1С:Предприятие (для разработчиков)

Если вам нужно автоматизировать экспорт или обрабатывать большие объёмы документов, используйте встроенный язык 1С:Предприятие. Ниже приведён универсальный код, который сохраняет печатную форму любого документа в XML:

// Получаем объект документа (пример для документа "РеализацияТоваровУслуг")

Док = Документы.РеализацияТоваровУслуг.НайтиПоНомеру("РТ-000123");

Если Док = Неопределено Тогда

Предупреждение("Документ не найден!");

Возврат;

КонецЕсли;

// Получаем печатную форму (замените "ПечатнаяФорма" на имя вашей формы)

ПечатнаяФорма = Док.ПолучитьФорму("ПечатнаяФорма");

ТабличныйДокумент = ПечатнаяФорма.ТабличныйДокумент;

// Сохраняем в XML

ИмяФайла = "C:\Temp\ПечатнаяФорма_" + Док.Номер + ".xml";

ТабличныйДокумент.Записать(ИмяФайла, ТипФайлаТабличногоДокумента.XML);

// Альтернатива: экспорт в MXL с последующим переименованием

// ТабличныйДокумент.Записать(ИмяФайла, ТипФайлаТабличногоДокумента.MXL);

🔹 Ключевые моменты:

  • 📌 Метод ПолучитьФорму() может отличаться в зависимости от конфигурации. В некоторых случаях используется ПолучитьМакет().
  • 📌 Для массового экспорта оберните код в цикл по выборке документов.
  • 📌 Если нужна "чистая" структура без тегов 1С, добавьте обработку через XSLT или регулярные выражения.

⚠️ Внимание: При работе с ТипФайлаТабличногоДокумента.XML в некоторых версиях платформы могут возникать ошибки кодировки (например, иероглифы вместо кириллицы). В этом случае используйте .mxl или явно укажите кодировку UTF-8 при сохранении.

Способ 4: Использование внешних обработок

Если стандартные методы не подходят, можно воспользоваться готовыми обработками от сообщества 1С. Популярные решения:

Обработка Назначение Ссылка (поиск) Особенности
Универсальный экспорт в XML Экспорт любых печатных форм и отчётов Инфостарт, 1С-Сообщество Поддерживает шаблоны XSLT для преобразования
Выгрузка документов в XML Массовая выгрузка документов с печатными формами Гитхаб, форумы 1С Требует доработки под конкретную конфигурацию
XML Конвертер для 1С Преобразование MXL в "чистый" XML Каталог решений 1С Удаляет служебные теги 1С автоматически

🔹 Как установить обработку:

  1. Скачайте файл обработки (.epf или .erf).
  2. В 1С перейдите в ФайлОткрыть... и выберите скачанный файл.
  3. Следуйте инструкциям обработки (обычно нужно указать документ и путь сохранения).

⚠️ Внимание: Перед использованием сторонних обработок проверьте их на тестовой базе! Некоторые решения могут содержать вредоносный код или конфликтовать с вашей конфигурацией. Особенно осторожно скачивайте файлы с непроверенных источников.

💡

Перед установкой обработки сделайте резервную копию базы 1С. Для этого в конфигураторе выберите Администрирование → Выгрузить информационную базу.

Типичные ошибки и их решения

При экспорте печатных форм в XML пользователи часто сталкиваются с следующими проблемами:

Ошибка Причина Решение
Файл сохраняется пустым Печатная форма не сформирована или документ не проведён Проверьте статус документа и права пользователя
Иероглифы вместо текста Неверная кодировка (CP1251 вместо UTF-8) Укажите кодировку явно при сохранении или конвертируйте файл
Ошибка "Недопустимый формат файла" Попытка сохранить в XML не табличный документ Используйте .mxl или программный экспорт
Потеря форматирования таблиц XML не поддерживает визуальные стили 1С Используйте XSLT для восстановления структуры

🔹 Распространённая проблема: При экспорте документов с большими таблицами (например, Торг-12 с сотнями строк) XML-файл может получиться чрезмерно объёмным. В этом случае:

  • 🗜️ Разбейте документ на несколько частей (например, по 50 строк).
  • 📖 Используйте сжатие (ZIP) для передачи файла.
  • 🔍 Настройте шаблон экспорта, чтобы исключать ненужные поля.
💡

Если XML-файл нужен для интеграции с внешней системой, уточните у её разработчиков требования к структуре. Часто достаточно передать только ключевые данные (номер, дату, сумму), а не всю печатную форму.

Дополнительные возможности: XSLT-преобразования

Часто "сырой" XML из 1С содержит избыточные данные или не подходит под требования внешних систем. Для его преобразования используйте XSLT — язык трансформации XML. Пример:

Допустим, у вас есть XML печатной формы счёта, но внешней системе нужны только реквизиты покупателя и сумма. Создайте XSLT-шаблон:

<?xml version="1.0" encoding="UTF-8"?>

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:template match="/">

<Счет>

<Номер><xsl:value-of select="v8:tableDocument/v8:area/v8:cell[1]/v8:content" /></Номер>

<Дата><xsl:value-of select="v8:tableDocument/v8:area/v8:cell[2]/v8:content" /></Дата>

<Сумма><xsl:value-of select="v8:tableDocument/v8:area/v8:cell[10]/v8:content" /></Сумма>

</Счет>

</xsl:template>

</xsl:stylesheet>

🔹 Как применить XSLT в 1С:

  1. Сохраните шаблон в файл transform.xslt.
  2. Используйте следующий код для преобразования:
    XSLT = Новый XSLТрансформация;
    

    XSLT.Загрузить("C:\Temp\transform.xslt");

    Результат = XSLT.Преобразовать(ИсходныйXML);

📌 Примечание: Для сложных трансформаций рекомендуется использовать специализированные инструменты вроде Oxygen XML Editor или Altova MapForce.

FAQ: Частые вопросы по экспорту печатных форм в XML

Можно ли сохранить в XML печатную форму из 1С:Зарплата и Управление Персоналом?

Да, но способ зависит от версии конфигурации. В 1С:ЗУП 3.1 большинстве печатных форм (например, Расчётный листок или Т-60) поддерживают сохранение в .mxl, который затем можно конвертировать в XML. Для старых версий (например, ЗУП 2.5) может потребоваться программный экспорт или внешняя обработка.

Почему при экспорте в XML теряется форматирование таблиц?

XML — это формат хранения данных, а не их визуального представления. Табличные документы 1С содержат информацию о шрифтах, границах ячеек и выравнивании, но внешние системы могут её игнорировать. Чтобы сохранить форматирование:

  • Используйте .mxl вместо .xml (он сохраняет стили 1С).
  • Примените XSLT для преобразования стилей в атрибуты XML.
  • Экспортируйте данные в Excel, а затем конвертируйте в XML с сохранением форматирования.
Как автоматизировать экспорт печатных форм в XML для сотен документов?

Для массового экспорта:

  1. Напишите скрипт на встроенном языке 1С (пример приведён в Способе 3).
  2. Используйте Планы обмена для выгрузки данных в XML (подходит для регулярного обмена).
  3. Настройте регламентное задание в 1С для автоматического экспорта по расписанию.

Для ускорения процесса можно разделить документы на партии (например, по 100 штук) и обрабатывать их параллельно.

Внешняя система требует XML с цифровой подписью. Как это сделать?

1С не поддерживает цифровую подпись XML "из коробки", но вы можете:

  • 🔐 Подписать файл после экспорта с помощью КриптоПро или VipNet.
  • 📜 Использовать внешнюю обработку с интеграцией ГОСТ Р 34.10-2012.
  • 🔗 Настроить обмен через СБИС или Диадок, которые поддерживают подпись автоматически.

⚠️ Уточните у контрагента, какой именно стандарт подписи требуется (например, XML-DSig или ГОСТ Р 34.10-2001).

Можно ли сохранить в XML печатную форму из мобильного приложения 1С?

В большинстве мобильных клиентов 1С (например, 1С:Мобильная платформа) опция экспорта в XML отсутствует. Альтернативные решения:

  • 📱 Отправьте печатную форму на email в формате PDF, а затем конвертируйте PDF в XML на ПК.
  • 🌐 Используйте веб-клиент 1С через браузер — там доступны все функции десктопной версии.
  • 🔄 Настройте синхронизацию с сервером 1С, где экспорт будет выполняться автоматически.
💡

Если вам регулярно нужен экспорт печатных форм в XML, рассмотрите создание собственной обработки или доработку конфигурации. Это сэкономит время в долгосрочной перспективе.