Работа с печатными формами в 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 остаётся лучшим выбором.
Способ 1: Сохранение через "Печатную форму" (для пользователей)
Самый простой метод — использовать встроенные механизмы 1С. Он подходит для большинства типовых конфигураций (1С:Бухгалтерия, 1С:Зарплата и Управление Персоналом, 1С:Управление Торговлей):
- Откройте документ, печатную форму которого нужно сохранить (например, счёт на оплату или акт выполненных работ).
- Нажмите кнопку
Печать→ выберите нужную форму из списка (например,Счёт на оплату (печатная форма)). - В открывшемся окне предварительного просмотра нажмите
Файл→Сохранить как.... - В диалоговом окне выберите формат
XML (*.xml)и укажите путь для сохранения.
⚠️ Внимание: В некоторых конфигурациях опция сохранения в XML может отсутствовать в стандартном диалоге. В этом случае попробуйте:
- 🖱️ Нажать правой кнопкой на печатную форму →
Сохранить как.... - 🔧 Использовать кнопку
Ещё(три точки) в окне предварительного просмотра.
☑️ Подготовка к сохранению печатной формы
Если даже после этих действий опция XML недоступна, значит, ваша конфигурация не поддерживает прямой экспорт в этот формат. В таком случае переходите к следующим способам.
Способ 2: Экспорт через "Табличный документ" (универсальный метод)
Многие печатные формы в 1С формируются как табличные документы. Их можно сохранить в XML через встроенный механизм, даже если прямой экспорт отсутствует:
- Откройте печатную форму документа (например,
Торг-12илиАкт сверки). - В окне предварительного просмотра нажмите
Файл→Сохранить как.... - В поле
Тип файлавыберитеТабличный документ (*.mxl). Это внутренний формат 1С, основанный на XML. - Сохраните файл с расширением
.mxl. - Переименуйте расширение файла с
.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С автоматически |
🔹 Как установить обработку:
- Скачайте файл обработки (
.epfили.erf). - В 1С перейдите в
Файл→Открыть...и выберите скачанный файл. - Следуйте инструкциям обработки (обычно нужно указать документ и путь сохранения).
⚠️ Внимание: Перед использованием сторонних обработок проверьте их на тестовой базе! Некоторые решения могут содержать вредоносный код или конфликтовать с вашей конфигурацией. Особенно осторожно скачивайте файлы с непроверенных источников.
Перед установкой обработки сделайте резервную копию базы 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С:
- Сохраните шаблон в файл
transform.xslt. - Используйте следующий код для преобразования:
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С (пример приведён в Способе 3).
- Используйте
Планы обменадля выгрузки данных в XML (подходит для регулярного обмена). - Настройте регламентное задание в 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, рассмотрите создание собственной обработки или доработку конфигурации. Это сэкономит время в долгосрочной перспективе.