Выгрузка данных в формате XML из 1С:Предприятие — одна из самых востребованных операций при интеграции с внешними системами, бухгалтерской отчётности или миграции информации. Несмотря на кажущуюся простоту, процесс часто вызывает вопросы: где найти нужные обработки, как избежать ошибок кодировки, и почему выгруженный файл не читается получателем.
В этой статье мы разберём все актуальные способы выгрузки XML из 1С, включая стандартные механизмы платформы, универсальные форматы обмена (например, EnterpriseData), а также ручные методы для нетиповых конфигураций. Особое внимание уделим типичным ошибкам — от неверных параметров выгрузки до проблем с правами доступа, которые тормозят работу даже опытных пользователей.
Материал будет полезен бухгалтерам, программистам 1С и IT-специалистам, которые занимаются интеграцией систем. Все инструкции проверены на актуальных версиях платформы 1С:Предприятие 8.3 (включая 8.3.23), но большинство методов работают и в более ранних редакциях.
1. Стандартная выгрузка через обработки 1С
Самый простой способ получить XML — использовать встроенные обработки выгрузки, которые есть в большинстве типовых конфигураций (Бухгалтерия 3.0, УТ 11, ЗУП 3.1 и др.). Эти инструменты оптимизированы под конкретные задачи: отправку отчётности в ФНС, обмен с банками или миграцию данных между базами.
Чтобы найти обработку:
- 📂 Перейдите в раздел
Администрирование → Обмен данными → Обмен с внешними системами(путь может отличаться в зависимости от конфигурации). - 🔍 В списке доступных обработок ищите названия с упоминанием XML,
ВыгрузкаилиЭкспорт. Например, в Бухгалтерии 3.0 это может бытьВыгрузка данных в XML для ФНС. - ⚙️ Запустите обработку и укажите параметры: период выгрузки, типы документов (счета, накладные, платежки) и путь сохранения файла.
Важно: некоторые обработки требуют предварительной настройки правил обмена. Если в списке нет нужного варианта, проверьте, подключены ли дополнительные модули (например, 1С:Отчётность или 1С:ДиректБанк).
Если обработка выгрузки отсутствует в меню, попробуйте найти её через строку поиска (сочетание клавиш Ctrl+Shift+F в большинстве конфигураций).
2. Универсальный формат EnterpriseData
Для обмена данными между разными конфигурациями 1С (например, при миграции из УТ 10.3 в УТ 11) используется универсальный формат EnterpriseData. Он позволяет выгрузить не только документы, но и справочники, регистры и другие объекты метаданных в структурированном виде.
Инструкция по выгрузке:
- Откройте конфигуратор (
1С:Предприятие → Конфигуратор). - Перейдите в
Администрирование → Выгрузка/загрузка данных → Выгрузить данные. - Выберите формат
XML (EnterpriseData). - Укажите объекты для выгрузки (можно выбрать отдельные справочники или документы).
- Нажмите
Выгрузитьи сохраните файл с расширением.xml.
Преимущество этого метода — сохранение всех связей между объектами (например, справочник Номенклатура будет корректно ссылаться на Единицы измерения). Однако файл может получиться очень крупным, если выгружать всю базу.
Убедитесь, что у вас есть права на выгрузку данных|Закройте все сеансы пользователей в базе|Проверьте свободное место на диске (файл может весить гигабайты)|Создайте резервную копию базы перед выгрузкой
-->
3. Выгрузка через конфигуратор (XDTO-пакеты)
Для программистов и администраторов, которым нужна гибкая настройка структуры XML, подойдёт выгрузка через XDTO-пакеты. Этот метод позволяет создать собственную схему данных и выгрузить информацию в строго определённом формате.
Алгоритм действий:
- В конфигураторе откройте
Файл → Открытьи выберите свою конфигурацию. - Перейдите в
Объекты → XDTO-пакетыи создайте новый пакет (или используйте существующий). - Определите структуру XML в виде
Типов XDTO(например, для выгрузки справочника контрагентов создайте тип с полямиНаименование,ИНН,Адрес). - Напишите код на встроенном языке 1С для заполнения пакета данными. Пример:
Процедура ВыгрузитьКонтрагентовВXML()
Пакет = XDTOФабрика.XDTOПакет("http://example.com/Контрагенты");
Контрагенты = Справочники.Контрагенты.Выбрать();
Пока Контрагенты.Следующий() Цикл
Элемент = Пакет.XDTOОбъект("Контрагент");
Элемент.Наименование = Контрагенты.Наименование;
Элемент.ИНН = Контрагенты.ИНН;
Пакет.Добавить(Элемент);
КонецЦикла;
Пакет.Записать("C:\Export\Контрагенты.xml");
КонецПроцедуры
Этот способ требует знания 1С:Предприятие 8 и XDTO, но даёт максимальную гибкость. Например, вы можете:
- 🔄 Преобразовывать данные перед выгрузкой (например, заменять коды номенклатуры на артикулы).
- 🔒 Шифровать чувствительную информацию.
- 📊 Группировать данные по произвольным критериям.
Стандартные обработки|EnterpriseData|XDTO-пакеты|Внешние обработки|Другой способ-->
4. Использование внешних обработок
Если в типовой конфигурации нет подходящей обработки, можно воспользоваться внешними решениями. Многие разработчики выкладывают готовые обработки для выгрузки XML на форумах (например, Инфостарт) или в каталоге 1С:Галлерея решений.
Примеры популярных обработок:
- 📄
Универсальная выгрузка в XML— позволяет гибко настраивать структуру файла через интерфейс без программирования. - 📊
Выгрузка документов по шаблону— подходит для формирования XML по заданным XSD-схемам (например, для интеграции с Диадок или СБИС). - 🔄
Конвертация данных 2.0— мощный инструмент для сложных преобразований, включая выгрузку в XML.
Как подключить внешнюю обработку:
- Скачайте файл обработки (
.epfили.erf). - В 1С откройте
Файл → Открытьи выберите скачанный файл. - Запустите обработку и следуйте инструкциям на экране (обычно требуется указать путь сохранения и параметры выгрузки).
⚠️ Внимание: Перед использованием внешних обработок проверьте их на тестовой базе. Некоторые решения могут содержать ошибки или конфликтовать с вашей конфигурацией. Особенно осторожно относитесь к обработкам с открытым кодом — в них могут быть уязвимости.
5. Выгрузка через API и HTTP-сервисы
Для автоматизированного обмена данными (например, с веб-сервисами или другими информационными системами) удобно использовать HTTP-сервисы или REST API. В современных версиях 1С (начиная с 8.3.15) есть встроенные механизмы для работы с HTTP-запросами.
Пример кода для выгрузки данных в XML через POST-запрос:
Процедура ОтправитьДанныеНаСервер()
URL = "https://api.example.com/upload";
Заголовки = Новый Соответствие();
Заголовки.Вставить("Content-Type", "application/xml");
// Формируем XML-данные
Данные = Новый ЗаписьXML();
Данные.ЗаписатьОбъявлениеXML();
Данные.ЗаписатьНачалоЭлемента("Документы");
// ... заполняем данные
Данные.ЗаписатьКонецЭлемента();
ТекстXML = Данные.Закрыть();
// Отправляем запрос
HTTPСоединение = Новый HTTPСоединение(URL);
Ответ = HTTPСоединение.Постить(ТекстXML, Заголовки);
Если Ответ.КодСостояния <> 200 Тогда
Сообщить("Ошибка отправки: " + Ответ.Текст);
Иначе
Сообщить("Данные успешно отправлены!");
КонецЕсли;
КонецПроцедуры
Этот метод подходит для:
- 🔗 Интеграции с CRM-системами (например, Bitrix24 или АмоCRM).
- 📦 Автоматической отправки заказов на складские системы (WMS).
- 📈 Передачи данных в аналитические сервисы.
⚠️ Внимание: При работе с API убедитесь, что соединение защищено протоколом HTTPS, а данные аутентификации (токены, логин/пароль) не хранятся в открытом виде в коде 1С. Используйте ХранилищеЗначений или внешние конфигурационные файлы.
6. Ручная выгрузка через запросы и файлы
Если вам нужно выгрузить данные в XML одноразово и без сложных преобразований, можно обойтись без программирования — достаточно использовать Запросы и ЗаписьXML.
Пошаговая инструкция:
- В 1С откройте
Файл → Новый → Текстовый документ(или используйте обработку с полем для ввода кода). - Напишите запрос для выборки данных. Например, для выгрузки справочника
Номенклатура:
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Номенклатура.Ссылка КАК Ссылка,
| Номенклатура.Наименование КАК Наименование,
| Номенклатура.Артикул КАК Артикул
|ИЗ
| Справочник.Номенклатура КАК Номенклатура";
Результат = Запрос.Выполнить();
Выборка = Результат.Выбрать();
- Создайте объект
ЗаписьXMLи запишите данные:
Запись = Новый ЗаписьXML();
Запись.ЗаписатьОбъявлениеXML();
Запись.ЗаписатьНачалоЭлемента("Номенклатура");
Пока Выборка.Следующий() Цикл
Запись.ЗаписатьНачалоЭлемента("Товар");
Запись.ЗаписатьАтрибут("Артикул", Выборка.Артикул);
Запись.ЗаписатьТекст(Выборка.Наименование);
Запись.ЗаписатьКонецЭлемента();
КонецЦикла;
Запись.ЗаписатьКонецЭлемента();
ТекстXML = Запись.Закрыть();
// Сохраняем файл
ТекстXML.Записать("C:\Export\Номенклатура.xml", КодировкаТекста.UTF8);
Этот способ универсален и работает в любой конфигурации, но требует ручного написания кода для каждого типа данных.
Как проверить корректность XML-файла?
Откройте файл в текстовом редакторе (например, Notepad++) и проверьте:
1. Наличие объявления XML в первой строке (<?xml version="1.0" encoding="utf-8"?>).
2. Корректность закрывающих тегов (например, на каждый <Товар> должен быть </Товар>).
3. Отсутствие спецсимволов, которые могут сломать структуру (например, & или < без экранирования).
Для валидации можно использовать онлайн-сервисы вроде XML Validator (например, на сайте freeformatter.com).
7. Типичные ошибки и их решения
При выгрузке XML из 1С пользователи часто сталкиваются с одними и теми же проблемами. Мы собрали самые распространённые ошибки и способы их исправления:
| Ошибка | Причина | Решение |
|---|---|---|
Ошибка при записи XML: недопустимый символ |
В данных есть символы, несовместимые с XML (например, &, <, >). |
Используйте функцию СтрЗаменить() для экранирования или настройте кодировку UTF-8. |
Файл не читается получателем |
Несовпадение структуры XML с ожидаемой схемой (XSD). | Проверьте требования к формату у получателя и скорректируйте обработку выгрузки. |
Недостаточно прав для выгрузки |
У пользователя нет роли Администратор или Полные права. |
Запросите права у администратора 1С или выполните выгрузку из-под другой учётной записи. |
Файл пустой или повреждён |
Ошибка в коде выгрузки или прерванный процесс записи. | Проверьте логи 1С (Журнал регистрации) и повторите выгрузку. |
Ошибка кодировки (иероглифы вместо текста) |
Неверно указана кодировка при сохранении файла. | Явно укажите КодировкаТекста.UTF8 при записи XML. |
Если ошибка не указана в таблице, проверьте:
- 📋 Журнал регистрации 1С (
Администрирование → Журнал регистрации) — там могут быть подробности. - 🔍 Права доступа — иногда проблема кроется в ограничениях RLS (разграничение доступа на уровне записей).
- 🖥️ Обновления платформы — в старых версиях 1С (ниже 8.3.10) могут отсутствовать некоторые функции работы с XML.
Перед выгрузкой крупных объёмов данных всегда делайте резервную копию базы. Это поможет быстро восстановить работу, если что-то пойдёт не так (например, при ошибке транзакции или сбое диска).
FAQ: Частые вопросы по выгрузке XML из 1С
Можно ли выгрузить XML из 1С без прав администратора?
Да, но с ограничениями. Пользователь должен иметь роль, позволяющую читать выгружаемые данные (например, Чтение для справочников или документов). Однако для выгрузки через конфигуратор или XDTO-пакеты обычно требуются права Администрирование. В этом случае можно:
- Попросить администратора выгрузить данные за вас.
- Использовать внешнюю обработку с ограниченным функционалом (если она не требует расширенных прав).
Как выгрузить XML с данными за определённый период?
В большинстве обработок выгрузки есть поле Период, где можно указать дату начала и конца. Если выгружаете данные через запрос, добавьте условие отбора:
Запрос.Текст =
"ВЫБРАТЬ
| Документ.Ссылка,
| Документ.Дата
|ИЗ
| Документ.РеализацияТоваровУслуг КАК Документ
|ГДЕ
| Документ.Дата МЕЖДУ &НачалоПериода И &КонецПериода";
Затем передайте параметры &НачалоПериода и &КонецПериода при выполнении запроса.
Что делать, если XML-файл слишком большой (не открывается в редакторе)?
Крупные XML-файлы (от 50 МБ) могут не открываться в стандартных редакторах. Решения:
- Используйте специализированные инструменты: XML Notepad, Oxygen XML Editor или Notepad++ с плагином XML Tools.
- Разбейте выгрузку на части (например, по месяцам или типам документов).
- Проверяйте файл через валидаторы, которые работают с большими файлами (например,
xmllintв Linux).
Как автоматизировать выгрузку XML по расписанию?
Для регулярной выгрузки настройте регламентное задание:
- В 1С перейдите в
Администрирование → Регламентные задания. - Создайте новое задание, укажите обработку выгрузки и расписание (ежедневно, еженедельно и т. д.).
- Настройте сохранение файла в сетевую папку или отправку по FTP/email.
Альтернатива — использовать планировщик задач Windows для запуска 1С в фоновом режиме с параметром /Execute и указанием обработки.
Подходит ли выгруженный XML для отправки в ФНС или банк?
Не всегда. Для отчётности в ФНС или обмена с банками требуются специфические форматы (например, 5.01 для деклараций или ISO 20022 для платежей). Используйте:
- Специализированные обработки (например, 1С:Отчётность для ФНС).
- Готовые решения от банков (многие предоставляют обработки для 1С).
- Сервисы-посредники (например, СБИС или Такском), которые преобразуют XML в нужный формат.
Перед отправкой проверьте файл через тестовые сервисы ФНС или банка.