Выгрузка данных в формате 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. Откройте конфигуратор (1С:Предприятие → Конфигуратор).
  2. Перейдите в Администрирование → Выгрузка/загрузка данных → Выгрузить данные.
  3. Выберите формат XML (EnterpriseData).
  4. Укажите объекты для выгрузки (можно выбрать отдельные справочники или документы).
  5. Нажмите Выгрузить и сохраните файл с расширением .xml.

Преимущество этого метода — сохранение всех связей между объектами (например, справочник Номенклатура будет корректно ссылаться на Единицы измерения). Однако файл может получиться очень крупным, если выгружать всю базу.

Убедитесь, что у вас есть права на выгрузку данных|Закройте все сеансы пользователей в базе|Проверьте свободное место на диске (файл может весить гигабайты)|Создайте резервную копию базы перед выгрузкой

-->

3. Выгрузка через конфигуратор (XDTO-пакеты)

Для программистов и администраторов, которым нужна гибкая настройка структуры XML, подойдёт выгрузка через XDTO-пакеты. Этот метод позволяет создать собственную схему данных и выгрузить информацию в строго определённом формате.

Алгоритм действий:

  1. В конфигураторе откройте Файл → Открыть и выберите свою конфигурацию.
  2. Перейдите в Объекты → XDTO-пакеты и создайте новый пакет (или используйте существующий).
  3. Определите структуру XML в виде Типов XDTO (например, для выгрузки справочника контрагентов создайте тип с полями Наименование, ИНН, Адрес).
  4. Напишите код на встроенном языке 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.

Как подключить внешнюю обработку:

  1. Скачайте файл обработки (.epf или .erf).
  2. В 1С откройте Файл → Открыть и выберите скачанный файл.
  3. Запустите обработку и следуйте инструкциям на экране (обычно требуется указать путь сохранения и параметры выгрузки).
⚠️ Внимание: Перед использованием внешних обработок проверьте их на тестовой базе. Некоторые решения могут содержать ошибки или конфликтовать с вашей конфигурацией. Особенно осторожно относитесь к обработкам с открытым кодом — в них могут быть уязвимости.

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. В 1С откройте Файл → Новый → Текстовый документ (или используйте обработку с полем для ввода кода).
  2. Напишите запрос для выборки данных. Например, для выгрузки справочника Номенклатура:
Запрос = Новый Запрос;

Запрос.Текст =

"ВЫБРАТЬ

| Номенклатура.Ссылка КАК Ссылка,

| Номенклатура.Наименование КАК Наименование,

| Номенклатура.Артикул КАК Артикул

|ИЗ

| Справочник.Номенклатура КАК Номенклатура";

Результат = Запрос.Выполнить();

Выборка = Результат.Выбрать();

  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. В 1С перейдите в Администрирование → Регламентные задания.
  2. Создайте новое задание, укажите обработку выгрузки и расписание (ежедневно, еженедельно и т. д.).
  3. Настройте сохранение файла в сетевую папку или отправку по FTP/email.

Альтернатива — использовать планировщик задач Windows для запуска 1С в фоновом режиме с параметром /Execute и указанием обработки.

Подходит ли выгруженный XML для отправки в ФНС или банк?

Не всегда. Для отчётности в ФНС или обмена с банками требуются специфические форматы (например, 5.01 для деклараций или ISO 20022 для платежей). Используйте:

  • Специализированные обработки (например, 1С:Отчётность для ФНС).
  • Готовые решения от банков (многие предоставляют обработки для 1С).
  • Сервисы-посредники (например, СБИС или Такском), которые преобразуют XML в нужный формат.

Перед отправкой проверьте файл через тестовые сервисы ФНС или банка.