Как выгрузить и загрузить документы в 1С через XML: решаем задачу восстановления данных

Программист 1С v8.3 (Обычные формы) IT и автоматизация бизнеса
← На главную

В процессе работы с программами на платформе 1С:Предприятие 8 пользователи и администраторы часто сталкиваются с ситуацией, когда документ был ошибочно удален из информационной базы, а его восстановление вручную требует огромных трудозатрат. В типовых конфигурациях, таких как Управление производственным предприятием (УПП) или Управление торговлей, в формах документов часто можно встретить кнопки выгрузки в XML. Однако попытка использовать эти кнопки для восстановления данных часто заводит в тупик.

В этой статье мы разберем, почему штатные кнопки в формах документов не всегда подходят для восстановления данных, и подробно изучим работу с универсальными инструментами, которые позволяют переносить объекты между базами с сохранением их уникальных идентификаторов.

Разбор штатных функций выгрузки: стандарт CommerceML

Рассмотрим ситуацию, с которой сталкиваются многие: в форме документа (например, РеализацияТоваровУслуг или ЗаказПокупателя) есть функция «Выгрузить в XML» или «Отправить по электронной почте». Многие полагают, что это универсальный формат обмена, но это не так. Проанализируем, для чего предназначены эти кнопки.

Чаще всего этот функционал реализует стандарт CommerceML 2. Это международный стандарт обмена коммерческой информацией. Он предназначен для взаимодействия между разными учетными системами или между базой 1С и интернет-магазином. Основные особенности этого метода:

Именно поэтому, если мы выгрузим документ таким способом, мы не найдем в типовой конфигурации простой кнопки «Загрузить XML», которая бы мгновенно восстановила этот документ в исходном виде.

Универсальный инструмент: Обработка «Выгрузка и загрузка данных XML»

Для решения задачи восстановления удаленного документа из копии базы в оригинал (при условии, что конфигурации идентичны) следует использовать специализированный инструмент — обработку ВыгрузкаЗагрузкаДанныхXML.epf. Эту обработку можно найти на диске ИТС (Информационно-Технологическое Сопровождение).

Рассмотрим подробнее механизм ее работы. В отличие от CommerceML, эта обработка использует XDTO-сериализацию. Она буквально копирует состояние объекта из базы данных «как есть», включая скрытые технические поля и ссылки.

Пошаговый алгоритм восстановления документа

Разберем по шагам, как перенести документ из копии базы в рабочую базу:

  1. Подготовка копии: Откройте копию информационной базы, где удаленный документ еще существует.
  2. Запуск обработки: Откройте через меню «Файл — Открыть» обработку ВыгрузкаЗагрузкаДанныхXML.epf.
  3. Настройка выгрузки:
    • В списке типов объектов найдите нужный вам вид документа (например, ТребованиеНакладная).
    • Используйте кнопку «Настроить отбор», чтобы выбрать конкретный документ по номеру, дате или ссылке. Это критически важно, чтобы не выгрузить все документы данного типа.
    • Важный нюанс: Обратите внимание на флаг «Выгружать с объектами по ссылкам». Если в документе есть новые элементы справочников, которых точно нет в основной базе, этот флаг поможет их перенести. Однако будьте осторожны: это может потянуть за собой большой объем лишних данных.
  4. Выполнение выгрузки: Укажите путь к файлу на диске и нажмите «Выгрузить».
  5. Загрузка в целевую базу: Откройте эту же обработку в рабочей (основной) базе, перейдите на закладку «Загрузка», выберите файл и нажмите «Загрузить».

Техническая ценность и сохранение GUID

Главное преимущество использования ВыгрузкаЗагрузкаДанныхXML.epf заключается в сохранении GUID (UUID) — уникального идентификатора объекта в базе данных. Проанализируем ситуацию: когда вы удаляете документ в 1С, во всех связанных регистрах и других документах, где на него была ссылка, появляется надпись <Объект не найден> (80:...).

Если вы создадите документ вручную заново, система присвоит ему новый GUID, и связи не восстановятся. Однако при использовании универсальной загрузки через XML:

Ограничения и важные предупреждения

Несмотря на мощь этого инструмента, выясним причины возможных неудач:

1. Идентичность конфигураций. Метод работает корректно только в том случае, если структура метаданных (имена реквизитов, типы данных в табличных частях) в обеих базах совпадает. Если вы пытаетесь перенести данные из УПП 1.3.100 в УПП 1.3.150, и за это время в документе добавились новые обязательные реквизиты, загрузка может пройти с ошибками или потерей данных.

2. Проведение документа. Выясним важный технический момент: XML-файл переносит данные самого документа, но не его движения по регистрам. После загрузки документ в базе будет числиться как «проведенный» (если он был таким при выгрузке), но записей в регистрах накопления или бухгалтерии может не быть. Поэтому после загрузки настоятельно рекомендуется:

  1. Открыть восстановленный документ.
  2. Нажать «Записать и провести», чтобы система заново сформировала движения.

Альтернативы для современных конфигураций

Если вы работаете на современных версиях платформы 1С v8.3 с использованием Библиотеки стандартных подсистем (БСП), стоит рассмотреть формат EnterpriseData. Это современный стандарт обмена, который более гибок, чем жесткая сериализация. Он позволяет передавать данные даже между существенно различающимися конфигурациями (например, из ERP в Бухгалтерию предприятия).

Для разового переноса в современных интерфейсах «Такси» часто используются встроенные помощники «Загрузка данных из файла», которые позволяют загружать данные из Excel или XML, сопоставляя поля вручную. Однако для программиста и системного администратора старая добрая обработка ВыгрузкаЗагрузкаДанныхXML остается «золотым стандартом» при аварийном восстановлении объектов.

Таким образом, мы выяснили, что стандартная кнопка в форме документа — это инструмент бизнес-коммуникации (CommerceML), а для технических задач по миграции данных следует применять специализированные обработки, работающие на уровне сериализации объектов.

← На главную