Справочники и Данные · 11 мин
Как выгрузить данные из 1С в XML
Как выгрузить данные из 1С в XML: типовые механизмы, обработка «Выгрузка и загрузка данных XML», выгрузка справочников и документов, проверка результата и типичные ошибки.
Выгрузка данных из 1С в XML — стандартная задача при переносе информации между базами, обмене с внешними системами, резервном копировании отдельных участков учёта и подготовке данных к миграции. XML выбран в платформе 1С:Предприятие как один из основных форматов обмена: он читаем человеком, поддерживается встроенными механизмами сериализации и подходит как для отдельных справочников, так и для целых информационных баз.
Способ выгрузки зависит от цели. Для переезда между идентичными конфигурациями используется типовая обработка «Выгрузка и загрузка данных XML». Для обмена между разными конфигурациями применяются правила обмена через «Конвертацию данных». Для разовой выгрузки произвольных данных программист пишет код с использованием объекта «ЗаписьXML». Ниже разобраны все три сценария с конкретными действиями и проверками результата.
Какой способ выгрузки выбрать под свою задачу
Прежде чем открывать обработки, определите, что именно нужно получить на выходе. От этого зависит инструмент, объём подготовки и риски. Ошибка на этом этапе — самая частая причина «нечитаемых» файлов и неудачных загрузок.
Если базы-источник и приёмник имеют одинаковую конфигурацию и версию (например, перенос данных из рабочей базы в тестовую или в чистую копию), подходит типовая обработка выгрузки/загрузки XML. Она сериализует объекты «как есть», поэтому структура метаданных должна совпадать. Если конфигурации разные (например, из «Управления торговлей» в «Бухгалтерию»), нужны правила обмена, созданные в «Конвертации данных», либо типовые планы обмена, уже встроенные в конфигурацию.
Сравнение вариантов
Перенос между идентичными конфигурациями. Простой запуск, но требует совпадения структуры метаданных.
Регулярный обмен между типовыми конфигурациями. Требует первоначальной настройки, дальше работает автоматически.
Обмен между разными конфигурациями. Нужны правила из «Конвертации данных» или готовые правила поставщика.
Произвольная структура файла под внешнюю систему. Требует навыков программирования на встроенном языке 1С.
Для интеграции с внешними системами (сайт, складская программа, банк-клиент) чаще всего требуется файл строго определённой структуры, и тогда без программной выгрузки или настройки правил не обойтись. Типовая сериализация создаёт файл во внутреннем формате платформы, который сторонняя система, скорее всего, не поймёт.
Выгрузка через типовую обработку «Выгрузка и загрузка данных XML»
Обработка поставляется на диске ИТС и входит в состав многих типовых конфигураций. В конфигурациях на «Библиотеке стандартных подсистем» аналогичный механизм доступен в разделе администрирования. Файл обработки обычно называется «ВыгрузкаЗагрузкаДанныхXML.epf».
- 1Сделайте архивную копию базы (Конфигуратор → Администрирование → Выгрузить информационную базу).
- 2Откройте обработку: Файл → Открыть → ВыгрузкаЗагрузкаДанныхXML.epf.
- 3На закладке «Выгрузка» укажите имя файла для сохранения данных.
- 4Отметьте в дереве метаданных объекты, которые нужно выгрузить (или все).
- 5При необходимости включите выгрузку движений документов вместе с документами.
- 6Нажмите «Выгрузить данные» и дождитесь сообщения о завершении.
- 7Откройте полученный файл в текстовом редакторе и убедитесь, что он содержит XML-структуру, а не пустой документ.
Обратите внимание на флажки в настройках обработки. Опция выгрузки «в режиме обмена данными» отключает проверки ссылочной целостности при последующей загрузке — это ускоряет процесс, но требует, чтобы приёмник был структурно идентичен источнику. Флажок «Продолжить загрузку в случае возникновения ошибки» полезен при больших объёмах, но маскирует частичные сбои, поэтому после загрузки нужно сверять итоги.
Ограничение способа принципиально: файл, созданный этой обработкой, корректно загрузится только в конфигурацию с той же структурой метаданных. Если в источнике добавлены реквизиты, которых нет в приёмнике, загрузка завершится ошибкой либо данные будут потеряны без предупреждения — зависит от настроек.
Выгрузка справочников и документов через планы обмена
Если обмен нужен регулярно — например, синхронизация номенклатуры и контрагентов между торговой и бухгалтерской базами — разовая обработка неудобна. Для этого в типовых конфигурациях предусмотрены планы обмена, которые формируют XML-сообщения автоматически и отслеживают, какие объекты изменились с прошлой выгрузки.
Настройка начинается с раздела «Синхронизация данных» (в разных конфигурациях он может находиться в «Администрировании» или на панели функций). Нужно включить функциональную опцию синхронизации, создать настройку обмена с указанием префикса базы и правил выгрузки, затем выполнить первоначальную выгрузку. Платформа сформирует XML-файл сообщения обмена, который загружается в базу-корреспондент.
Преимущество планов обмена — регистрация изменений: в файл попадают только новые и изменённые объекты, а не вся база целиком. Это существенно сокращает размер файлов при регулярной работе. Недостаток — требование совместимости правил: план обмена работает только для тех пар конфигураций и версий, для которых он предусмотрен поставщиком.
Программная выгрузка произвольных данных через ЗаписьXML
Когда файл нужен в формате, заданном внешней системой, пишут собственную выгрузку. Встроенный язык 1С предоставляет объект «ЗаписьXML», который последовательно формирует элементы и атрибуты документа.
Запись = Новый ЗаписьXML;
Запись.ОткрытьФайл("C:\Обмен\Номенклатура.xml", "UTF-8");
Запись.ЗаписатьОбъявлениеXML();
Запись.ЗаписатьНачалоЭлемента("Товары");
Выборка = Справочники.Номенклатура.Выбрать();
Пока Выборка.Следующий() Цикл
Если Выборка.ЭтоГруппа Тогда Продолжить; КонецЕсли;
Запись.ЗаписатьНачалоЭлемента("Товар");
Запись.ЗаписатьАтрибут("Код", Строка(Выборка.Код));
Запись.ЗаписатьНачалоЭлемента("Наименование");
Запись.ЗаписатьТекст(Выборка.Наименование);
Запись.ЗаписатьКонецЭлемента();
Запись.ЗаписатьКонецЭлемента();
КонецЦикла;
Запись.ЗаписатьКонецЭлемента();
Запись.Закрыть();Ключевые правила при программной выгрузке: каждый открытый элемент должен быть закрыт, текстовые значения с спецсимволами платформа экранирует автоматически, а кодировку лучше явно указывать UTF-8 — большинство внешних систем ожидают именно её. Для больших объёмов запись ведут порциями и периодически проверяют промежуточный результат, чтобы не ждать завершения многочасовой операции ради обнаружения ошибки в первой строке.
Альтернатива ручной записи — сериализация объектов средствами XDTO через «СериализаторXDTO». Она удобна, когда нужно выгрузить объект целиком со всеми табличными частями, но формирует файл во внутренней схеме платформы, что опять же подходит только для обмена между базами 1С.
Как проверить результат выгрузки
Файл создан — это ещё не результат. Перед передачей или загрузкой нужно убедиться, что данные полные, читаемые и структурно корректные. Базовая проверка занимает несколько минут и отсекает большинство проблем.
Как проверить результат
Отображается иерархическая структура элементов
Ошибка разбора XML, указание на строку с проблемой
UTF-8, кириллица читается корректно
Крякозябры вместо русских букв
Совпадает с количеством записей в источнике (по отчёту или счётчику)
Файл заметно меньше ожидаемого, часть данных отсутствует
Объекты создаются, ссылки не битые
Ошибки загрузки, объекты с незаполненными реквизитами
Размер файла — быстрый индикатор: если выгружали 50 тысяч элементов номенклатуры, а файл весит несколько килобайт, выборка явно пустая. Проверьте отбор, права доступа пользователя, под которым выполнялась выгрузка, и признаки пометки на удаление — типовые обработки по умолчанию могут выгружать помеченные объекты, а могут пропускать их, в зависимости от настроек.
Типичные ошибки и ограничения
Отдельного упоминания заслуживают права доступа. Если выгрузка выполняется под пользователем с ограничениями на уровне записей (RLS), платформа молча отфильтрует недоступные объекты — никаких предупреждений в журнале может не быть. Для полной выгрузки используйте учётную запись с полными правами, а само действие выполняйте в нерабочее время, чтобы пользователи не изменяли данные в процессе.
Ещё одно ограничение — объём. Файловые базы и 32-разрядные клиенты при выгрузке очень больших объёмов могут упираться в память. В таких случаях данные выгружают порциями (по периодам, по видам объектов) или используют клиент-серверный режим работы.
Перед первым реальным переносом сделайте «сухой прогон» на копии базы: выгрузите данные, загрузите в тестовый приёмник и сравните контрольные цифры — количество элементов ключевых справочников, остатки по паре складов и счетов. Расхождения на этом этапе стоят ничего, в рабочей базе — дорого.
Частые вопросы
Можно ли выгрузить из 1С в XML без конфигуратора и программирования?
Да. Типовая обработка «Выгрузка и загрузка данных XML» запускается в режиме предприятия через меню «Файл → Открыть» и не требует изменения конфигурации. Также многие типовые конфигурации содержат встроенные команды выгрузки в разделе синхронизации данных.
Чем XML-выгрузка отличается от выгрузки в Excel или CSV?
XML сохраняет иерархию и связи объектов: табличные части документов, ссылки между справочниками, состав типов. CSV и Excel подходят только для плоских таблиц — например, списка номенклатуры с ценами, — и теряют структуру ссылочных данных.
Почему файл выгрузился, но не загружается в другую базу?
Наиболее вероятные причины: различия в версиях конфигураций источника и приёмника, повреждение файла при передаче (обрезанный файл), несовпадение формата — например, файл создан программной выгрузкой в произвольной структуре, а загружается типовой обработкой, ожидающей внутренний формат платформы.
Как выгрузить только данные за определённый период?
В типовой обработке выгрузки отбор по периоду для документов обычно доступен в настройках. При программной выгрузке период задаётся в запросе или параметрах выборки. Планы обмена позволяют ограничивать состав выгрузки правилами и отборами по дате.
Безопасно ли передавать XML-файл с данными третьим лицам?
XML — открытый текстовый формат, вся информация читается без специальных средств. Если файл содержит персональные данные или коммерческую тайну, передавайте его по защищённым каналам и при необходимости шифруйте архив с файлом отдельно от канала передачи пароля.
Что делать, если выгрузка обрывается с ошибкой памяти?
Разбейте выгрузку на части: по видам объектов, по периодам или по организациям. Используйте 64-разрядный клиент или серверный контекст для выполнения операции. Для очень больших баз рассмотрите прямую выгрузку средствами СУБД с последующим преобразованием.
Что важно запомнить
Способ выгрузки выбирается по задаче: типовая обработка — для идентичных конфигураций, планы обмена — для регулярной синхронизации, ЗаписьXML — для произвольного формата. Всегда делайте резервную копию перед загрузкой, проверяйте полноту файла и выполняйте пробный прогон на тестовой копии.