Выгрузка данных из 1С:Предприятие в формат XML — одна из самых востребованных операций при интеграции с внешними системами, бухгалтерскими сервисами или государственными порталами. Несмотря на кажущуюся простоту, процесс требует учета множества нюансов: от версии платформы до структуры выгружаемых данных. Ошибки на этом этапе могут привести к некорректному импорту в целевую систему или даже потере информации.
В этой статье мы разберем все актуальные способы экспорта в XML — от стандартных механизмов 1С до программных решений для нетиповых задач. Особое внимание уделим типичным проблемам (например, кодировке или ограничениям на объем файла) и способам их решения. Если вам нужно передать данные в ФНС, Росалкогольрегулирование, ЭДО-оператора или собственную CRM — здесь вы найдете рабочие инструкции с учетом последних обновлений платформы.
Материал будет полезен как начинающим пользователям, так и опытным разработчикам, которые хотят оптимизировать процесс обмена данными. Все примеры приведены для актуальных версий 1С:Предприятие 8.3 (включая 8.3.23 и новее), но с указанием особенностей для более ранних релизов.
1. Стандартные механизмы выгрузки в XML: когда их достаточно
В большинстве типовых конфигураций (1С:Бухгалтерия, 1С:УТ, 1С:ЗУП) уже предусмотрены встроенные обработки для выгрузки данных в XML. Их преимущество — простота использования и соответствие требованиям регуляторов. Однако стандартные решения подходят не для всех задач.
Где искать встроенные обработки:
- 📁 Меню "Файл" → "Выгрузить данные" (для документов и справочников)
- 📊 Отчеты и обработки → "Регламентированная отчетность" (для ФНС, ПФР, ФСС)
- 🔄 Сервис → "Обмен данными" → "Универсальный обмен в формате XML"
Например, для выгрузки первичных документов (счета, накладные, акты) в ЭДО достаточно:
- Открыть документ в 1С.
- Нажать
Ещё → Выгрузить в XML. - Указать путь сохранения и подтвердить экспорт.
Если в меню нет пункта "Выгрузить в XML", проверьте права пользователя в Администрирование → Настройки пользователей. Часто эта опция скрыта для ролей с ограниченными правами.
Ограничения стандартных механизмов:
- 🚫 Невозможно настроить структуру XML под специфические требования (например, для интеграции с Bitrix24 или MoySklad).
- 🚫 Нет гибкой настройки кодировки (по умолчанию —
UTF-8, но некоторые системы требуютWindows-1251). - 🚫 Ограниченный список поддерживаемых объектов (например, нельзя выгрузить произвольный запрос или регистр сведений).
2. Универсальный обмен данными: настройка выгрузки через конфигуратор
Для более гибкой настройки выгрузки используется механизм "Универсальный обмен данными", доступный через Конфигуратор. Он позволяет:
- 🔧 Выбирать любые объекты метаданных (справочники, документы, регистры).
- 🔧 Настраивать правила преобразования данных.
- 🔧 Указывать кодировку и форматирование.
Пошаговая инструкция:
- Откройте 1С:Предприятие в режиме
Конфигуратор(зажмитеShiftпри запуске). - Перейдите в
Администрирование → Обмен данными → Универсальный обмен. - Создайте новый профиль обмена:
Наименование: ВыгрузкаТоваровXMLТип обмена: Выгрузка
Формат: XML
- В разделе
Правила обменадобавьте объекты для выгрузки (например, справочникНоменклатура). - Укажите путь сохранения файла и запустите выгрузку.
Важно: при выгрузке больших объемов данных (более 10 000 записей) разбейте процесс на части, чтобы избежать ошибки переполнения памяти. Это особенно актуально для конфигураций на управляемых формах.
Создать резервную копию базы|Проверить права доступа|Определить список выгружаемых объектов|Настроить кодировку (UTF-8 или Windows-1251)|Указать путь для сохранения файла-->
3. Выгрузка через запрос и XDTO: для разработчиков
Если стандартные механизмы не подходят (например, нужно выгрузить данные по сложному алгоритму или в нестандартной структуре), используйте XDTO (технологию обмена данными на основе XML). Этот метод требует знаний 1С:Предприятие на уровне программирования, но дает максимальную гибкость.
Пример кода для выгрузки справочника Контрагенты в XML:
// Создаем XDTO-пакет
Пакет = XDTOФабрика.СоздатьПакет();
Пакет.ПространстваИмен.Добавить("http://example.com/1CExchange");
// Формируем XML-документ
Документ = Пакет.СоздатьДокумент();
Корень = Документ.Корень = Пакет.СоздатьЭлемент("Контрагенты");
// Загружаем данные из 1С
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ Наименование, ИНН, КПП ИЗ Справочник.Контрагенты";
Результат = Запрос.Выполнить();
Выборка = Результат.Выбрать();
Пока Выборка.Следующий() Цикл
Контрагент = Пакет.СоздатьЭлемент("Контрагент");
Контрагент.УстановитьАтрибут("Наименование", Выборка.Наименование);
Контрагент.УстановитьАтрибут("ИНН", Выборка.ИНН);
Корень.Добавить(Контрагент);
КонецЦикла;
// Сохраняем в файл
Документ.Записать("C:\Exchange\Контрагенты.xml");
Преимущества метода:
- ✅ Полный контроль над структурой XML.
- ✅ Возможность добавления произвольных атрибутов и тегов.
- ✅ Оптимизация для больших объемов данных (можно выгружать порциями).
Как проверить корректность сформированного XML?
Используйте онлайн-валидаторы (например, XML Validation от W3C) или встроенные инструменты в Notepad++/VS Code. Обратите внимание на:
1. Закрытые теги (например, </Контрагент>).
2. Кодировку (должна совпадать с указанной в заголовке XML: <?xml version="1.0" encoding="UTF-8"?>).
3. Отсутствие специальных символов (&, <, >) без экранирования.
4. Типичные ошибки и их решения
Даже при правильной настройке выгрузки пользователи сталкиваются с ошибками. Рассмотрим самые распространенные:
| Ошибка | Причина | Решение |
|---|---|---|
Ошибка записи XML: недопустимый символ |
В данных есть символы, несовместимые с кодировкой (например, « », ©). | Используйте функцию СтрЗаменить() для замены проблемных символов или измените кодировку на UTF-8. |
Файл не найден или доступ запрещен |
Нет прав на запись в указанную папку или путь содержит кириллицу. | Укажите путь на английском (например, C:\Export\) и проверьте права доступа. |
Превышен максимальный размер файла |
Ограничение платформы 1С (по умолчанию — 2 ГБ). | Разбейте выгрузку на несколько файлов или используйте архивацию (ZipФайл). |
Особое внимание уделите кодировке:
- 🔤 Для государственных систем (ФНС, Росалкогольрегулирование) требуется
Windows-1251. - 🔤 Для международных интеграций (API, CRM) —
UTF-8. - 🔤 Проверьте кодировку в заголовке XML-файла:
<?xml version="1.0" encoding="UTF-8"?>.
Если XML не принимается целевой системой, сначала проверьте его на валидность, а затем сверьте структуру с требованиями документации. Часто проблема кроется в несовпадении имен тегов или атрибутов.
5. Выгрузка для регламентированной отчетности
При отправке отчетности в ФНС, ПФР или ФСС требуется строгое соблюдение форматов XML, утвержденных приказами ведомств. Для этого в 1С предусмотрены специализированные обработки:
Как выгрузить, например, декларацию по НДС:
- Откройте раздел
Отчеты → Регламентированные отчеты. - Выберите нужную декларацию и заполните ее.
- Нажмите
Выгрузитьи укажите форматXML (для ФНС). - Файл будет сохранен с именем вида
NDS_202605.xml.
Важные нюансы:
- 📋 Перед выгрузкой обновите форматы отчетности через
Сервис → Обновление отчетности. - 📋 Для ЭДО (электронного документооборота) может потребоваться подпись файла ЭЦП.
- 📋 Некоторые отчеты (например, 6-НДФЛ) требуют выгрузки в
ЗИП-архивс определенной структурой.
Если при загрузке отчета на портал ФНС возникает ошибка "Неверная структура XML", скачайте актуальный XSD-схему для вашего отчета на сайте налоговой и сверьте с ней свой файл.
6. Автоматизация выгрузки: планировщик и внешние обработки
Для регулярного обмена данными (например, ежедневной выгрузки каталога товаров в MoySklad) настройте автоматическую выгрузку через:
Способ 1. Планировщик задач 1С
- В Конфигураторе откройте
Администрирование → Поддержка → Планировщик задач. - Создайте новую задачу с типом
Выгрузка данных в XML. - Укажите расписание (например, ежедневно в 23:00) и параметры выгрузки.
Способ 2. Внешние обработки
Для сложных сценариев используйте готовые решения:
- 🛠️ 1С:Интеграция (для обмена с 1С:Документооборот, Bitrix24).
- 🛠️ ATOL:Обмен данными (для работы с онлайн-кассами).
- 🛠️ Универсальный обмен данными (УОД) от Инфостарт.
Пример настройки автоматической выгрузки через УОД:
// В модуле управляемого приложения
Процедура ВыгрузитьДанныеАвтоматически()
Обмен = Новый ОбменДаннымиXML;
Обмен.ПутьКФайлу = "C:\AutoExport\data.xml";
Обмен.Выгрузить(Справочники.Номенклатура);
КонецПроцедуры
Автоматизируйте выгрузку только после нескольких успешных ручных тестов. Проверяйте логи обмена в Администрирование → Журнал регистрации на предмет ошибок.
7. Оптимизация XML для больших объемов данных
При выгрузке больших справочников (например, Номенклатура с 50 000 позиций) стандартные методы могут работать медленно или завершаться ошибкой. Решения:
1. Порционная выгрузка
Разбейте данные на части по 5 000–10 000 записей и выгружайте их отдельными файлами. Пример:
Запрос.Текст = "ВЫБРАТЬ ПЕРВЫЕ 10000 Наименование, Артикул ИЗ Справочник.Номенклатура";
2. Архивация на лету
Используйте ZipФайл для сжатия XML без промежуточного сохранения:
Zip = Новый ZipФайл;
Zip.Добавить("data.xml", XMLСтрока);
Zip.Записать("C:\Export\data.zip");
3. Оптимизация структуры XML
- 📉 Уберите лишние атрибуты (например,
ПометкаУдаления, если она всегдаЛожь). - 📉 Замените повторяющиеся значения (например,
ЕдиницаИзмерения="шт") на ссылки.
Как ускорить выгрузку на 30%?
Отключите журналирование на время выгрузки:
НастройкаЖурналаРегистрации(Ложь);
Используйте прямые запросы к СУБД (только для опытных пользователей!):
Запрос = Новый Запрос("ВЫБРАТЬ * ИЗ _Reference123", Новый ПараметрыЗапроса(РежимЧтенияДанных.Прямой));
Внимание: прямой доступ к таблицам может нарушить целостность данных при некорректном использовании!
FAQ: Частые вопросы по выгрузке XML из 1С
Можно ли выгрузить в XML данные из отчета (например, оборотно-сальдовую ведомость)?
Да, но не напрямую. Сначала экспортируйте отчет в Табличный документ, затем конвертируйте его в XML через ЗаписатьXML():
ТабДок.ЗаписатьXML("C:\Reports\ОСВ.xml");
Обратите внимание, что структура XML будет табличной (строки/колонки), а не иерархической.
Почему в выгруженном XML кириллица отображается кракозябрами?
Проблема в несовпадении кодировок. Решения:
- Укажите явную кодировку при записи файла:
Файл.Открыть("data.xml", РежимЗаписиФайла.Запись, КодировкаТекста.UTF8). - Используйте Notepad++ для конвертации файла в
UTF-8 без BOM.
Как выгрузить XML с цифровой подписью для ЭДО?
Для этого:
- Сформируйте XML стандартным способом.
- Подпишите файл через КриптоПро или встроенный механизм 1С:
Подпись = Новый ПодписьXML;Подпись.Подписать("C:\Export\file.xml", Сертификат, "C:\Export\file_signed.xml");
Убедитесь, что сертификат ЭЦП действителен и установлен в хранилище Windows.
Что делать, если XML не проходит валидацию на портале ФНС?
Сверьте структуру вашего файла с XSD-схемой отчета:
- Скачайте актуальную схему на сайте ФНС (раздел "Форматы отчетности").
- Проверьте XML через валидатор (например, XML Validator в Oxygen XML Editor).
- Обратите внимание на:
- 🔹 Правильность тегов (регистр, порядок вложенности).
- 🔹 Формат дат (
ДД.ММ.ГГГГvsГГГГ-ММ-ДД). - 🔹 Наличие обязательных атрибутов (например,
СвУчредительдля юрлиц).
Можно ли выгрузить историю изменений объекта (например, кто и когда редактировал справочник)?
Да, но для этого потребуется:
- Включить версионность для справочника в конфигураторе.
- Использовать запрос к регистру
ИсторияДанных:ВЫБРАТЬОбъект.Ссылка КАК Ссылка,
Объект.ДатаИзменения КАК Дата,
Объект.Пользователь КАК Пользователь
ИЗ
РегистрСведений.ИсторияДанных КАК Объект
ГДЕ
Объект.Ссылка ССЫЛКА Справочник.Номенклатура
- Выгрузить результат в XML через
XDTO.
Учтите, что история хранится ограниченное время (настраивается в Администрирование → Настройки системы).