Загрузка XML в 1С 8.3: какой обработкой открыть файл и как не задвоить данные

· 10 мин

Содержание

Загрузить файл XML в 1С можно четырьмя путями, и выбор зависит от того, кто и чем этот файл сформировал. Выгрузку из такой же конфигурации грузят обработкой ВыгрузкаЗагрузкаДанныхXML. Файл обмена по правилам Конвертации данных 2.0 — обработкой «Универсальный обмен данными в формате XML». Файл EnterpriseData — через Администрирование → Синхронизация данных. Электронный документ поставщика (УПД, накладная) — командой загрузки в списке документов поступления.

Универсальной кнопки «Загрузить любой XML» в 1С:Предприятии нет. Поэтому первое действие — не открывать обработку, а заглянуть внутрь файла и понять его формат. На это уходит минута, а ошибка с выбором способа стоит дубликатов справочников и неверных остатков.

1. Подготовка: определяем формат XML-файла

Откройте файл в браузере или в Notepad++ (обычный Блокнот на файле в сотни мегабайт зависнет). Смотрите на две вещи: первую строку и имя корневого элемента.

Первая строка — пролог: <?xml version="1.0" encoding="UTF-8"?>. Атрибут encoding говорит, в какой кодировке файл. Если там windows-1251, а файл на деле сохранён в UTF-8, 1С выдаст ошибку разбора уже на первых символах.

Корневой элемент подсказывает способ загрузки:

Корневой элементЧто за файлЧем загружать
V8ExpВыгрузка обработкой «Выгрузка и загрузка данных XML»Той же обработкой в базе той же конфигурации
ФайлОбменаОбмен по правилам Конвертации данных 2.0Обработка «Универсальный обмен данными в формате XML»
Message с пространством имён EnterpriseDataУниверсальный формат обменаСинхронизация данных или обработка EnterpriseData
Файл с атрибутом ИдФайлЭлектронный документ по формату ФНС (УПД, счёт-фактура, акт)Загрузка электронного документа в списке поступлений
Любой другойВыгрузка из сайта, маркетплейса, внешней системыСвоя обработка на ЧтениеXML или XDTO

Перед любой загрузкой, кроме УПД, проверьте ещё три момента:

  • 📌 Версия конфигурации. Для V8Exp источник и приёмник должны совпадать по конфигурации и, желательно, по релизу. Иначе в файле окажутся реквизиты, которых в базе нет.
  • 📌 Права. Пользователю нужна роль с правом интерактивного открытия внешних обработок. В типовых — «Администратор» или «Открытие внешних отчётов и обработок».
  • 📌 Копия базы. Сделайте выгрузку .dt или копию каталога файловой базы до загрузки. Отменить загрузку XML кнопкой нельзя: тысячи созданных объектов придётся удалять вручную.

Сначала прогоните файл на копии базы. Открыть копию можно, добавив её в список баз как отдельную информационную базу. Когда результат устроит, повторите на рабочей.

2. Загрузка XML из такой же базы: ВыгрузкаЗагрузкаДанныхXML

Это самый простой случай. Файл получен обработкой ВыгрузкаЗагрузкаДанныхXML83.epf (в описаниях её зовут «Выгрузка и загрузка данных XML»), и загружается он ей же. Обработка не входит в состав конфигураций, её берут из комплекта поставки или дисков ИТС.

Порядок действий:

  1. Запустите 1С в режиме «Предприятие» под администратором.
  2. Откройте главное меню (кнопка с тремя полосками слева вверху) → Файл → Открыть и выберите файл .epf.
  3. Если появится предупреждение о безопасности, подтвердите открытие: обработка из доверенного источника.
  4. Перейдите на вкладку «Загрузка».
  5. Укажите путь к XML-файлу и нажмите «Загрузить данные».

Обработка переносит объекты вместе с уникальными идентификаторами (GUID). Если объект с таким идентификатором уже есть в базе, он будет перезаписан. Если нет — создан новый. Дубликатов при этом не возникает, но и «слияния» тоже: данные в приёмнике заменяются данными из файла.

Обработка пишет данные в режиме обмена: проверки заполнения и проведение не выполняются. Документы приходят в том состоянии, в котором были выгружены. Движения регистров переносятся, только если их выгружали отдельно.

Используйте этот способ для переноса справочников между копиями одной базы, восстановления удалённых элементов из старой копии, частичного переноса документов. Между разными конфигурациями он не работает .

3. Файл обмена по правилам КД 2.0 и КД 3.0

Если базы разные (например, УТ 11 и Бухгалтерия 3.0, или доработанная конфигурация и типовая), нужны правила конвертации. Их готовят в конфигурации «Конвертация данных ».

Правила КД 2.0

В файле обмена КД 2.0 под корнем ФайлОбмена лежат сами правила и данные. Поэтому для загрузки отдельный файл правил не нужен: приёмник читает их из того же XML.

  1. Откройте внешнюю обработку «Универсальный обмен данными в формате XML» (V8Exchan83.epf из поставки Конвертации данных 2.0) через Файл → Открыть.
  2. На вкладке загрузки выберите файл данных.
  3. Для первой пробы включите вывод информационных сообщений и запись протокола в файл.
  4. Нажмите «Загрузить данные».

Сопоставление объектов идёт так, как задал автор правил: по GUID, по коду, по ИНН, по наименованию. Если правило ищет контрагента по наименованию, а в приёмнике он записан иначе, обработка создаст второго. Поэтому до загрузки откройте правила в КД 2.0 и посмотрите поля поиска для ключевых справочников.

Правила КД 3.0

Конвертация данных 3.0 работает иначе. Она не кладёт правила в файл, а генерирует программный модуль — менеджер обмена. Типовые конфигурации на БСП содержат такие модули для формата EnterpriseData. Свой модуль разработчик встраивает в конфигурацию или в расширение.

Поэтому «загрузить XML по правилам КД 3.0» в чистом виде — значит загрузить файл EnterpriseData через механизм синхронизации, в котором эти правила уже прошиты. Об этом следующий раздел.

Что сравниваемКД 2.0КД 3.0
Где правилаВнутри файла обменаВ модуле конфигурации или расширения
Формат данныхСвой для каждой пары базЕдиный EnterpriseData
Чем грузитьУниверсальный обмен данными XMLСинхронизация данных, обработка EnterpriseData
Кому подходитНетиповые и старые конфигурацииСовременные типовые на БСП

4. Импорт XML в универсальном формате EnterpriseData

EnterpriseData — общий формат обмена для типовых конфигураций: Бухгалтерии 3.0, УТ 11, Комплексной автоматизации, ERP, УНФ, Розницы. Файл начинается с элемента Message, в заголовке указана версия формата, например 1.8 или 1.11.

Регулярный обмен настраивают здесь:

КонфигурацияГде настройки
Бухгалтерия предприятия 3.0Администрирование → Синхронизация данных
ЗУП 3.1Администрирование → Синхронизация данных
УТ 11, КА 2, ERPНСИ и администрирование → Синхронизация данных

Порядок настройки с обменом через файлы:

  1. Включите флажок «Синхронизация данных» и задайте префикс информационной базы — две буквы, разные для каждой базы.
  2. Откройте «Настройки синхронизации данных» и создайте новую. Выберите программу-источник из списка или вариант через универсальный формат.
  3. В способе связи укажите обмен через каталог: локальный или сетевой, к которому есть доступ у обеих баз.
  4. Настройте правила отправки: с какой даты, по каким организациям, какие документы.
  5. Положите файл источника в каталог и нажмите «Синхронизировать».

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

Для разовой загрузки файла EnterpriseData без настройки обмена в конфигурациях на БСП есть обработка «Выгрузка и загрузка EnterpriseData». Найти её можно через меню «Все функции» → «Обработки», если это меню включено в параметрах. Она удобна для отладки: видно, какие объекты загрузились, а какие нет.

5. Загрузка УПД и накладных из XML поставщика

Частый вопрос бухгалтера: контрагент прислал по почте XML-файл УПД, а ЭДО с ним не настроен. Такой файл сформирован по формату ФНС, и 1С умеет создать по нему документ поступления.

  1. Откройте список документов поступления. В Бухгалтерии 3.0 это Покупки → Поступление (акты, накладные, УПД).
  2. В командной панели списка найдите меню ЭДО и в нём команду загрузки электронного документа из файла.
  3. Выберите полученный XML.
  4. Программа покажет документ поставщика и предложит сопоставить контрагента, договор и номенклатуру.
  5. Сопоставьте товары с карточками вашей номенклатуры. Связь запомнится, и при следующей загрузке её не придётся повторять.
  6. Создайте документ поступления и проверьте суммы и НДС до проведения.

Если в файле несколько документов (например, архив с УПД и подписью), загружайте сам XML, а не файл подписи .sig или .p7s. Подпись к загруженному так документу 1С не проверяет — юридически значимым он становится только при получении через оператора ЭДО.

Загрузка из файла — не замена ЭДО. Бумажный экземпляр или документ, полученный через оператора, всё равно нужен для подтверждения вычета НДС.

6. Ошибки при загрузке XML и протокол

Сначала о том, где искать подробности. Любая обработка обмена пишет в журнал регистрации: Администрирование → Обслуживание → Журнал регистрации в БП 3.0 и ЗУП 3.1, НСИ и администрирование → Обслуживание в УТ 11. Отберите события за время загрузки и уровень «Ошибка». У синхронизации данных есть ещё свой монитор с результатами последнего обмена по каждой настройке.

Типичные сообщения и что с ними делать:

Диагностика: выберите симптом

Для больших файлов (от сотен мегабайт) добавьте ещё одну проверку: хватает ли памяти клиенту. В 32-разрядном клиенте загрузка может упасть по нехватке памяти. Запустите 64-разрядный клиент или грузите на сервере.

7. Свой XML и автоматическая загрузка по расписанию

Когда XML приходит из сайта, маркетплейса или складской системы, типовой обработки под него нет. Пишут свою: внешнюю обработку или расширение. Короткий пример чтения файла, где товары лежат в элементах Товар с атрибутами:

Чтение = Новый ЧтениеXML;
Чтение.ОткрытьФайл(ПутьКФайлу);
Пока Чтение.Прочитать() Цикл
    Если Чтение.ТипУзла = ТипУзлаXML.НачалоЭлемента И Чтение.Имя = "Товар" Тогда
        Артикул = Чтение.ЗначениеАтрибута("Артикул");
        Количество = Число(Чтение.ЗначениеАтрибута("Количество"));
        Сообщить(Артикул + ": " + Формат(Количество, "ЧГ=0"));
    КонецЕсли;
КонецЦикла;
Чтение.Закрыть();

Для файлов со сложной структурой и XSD-схемой удобнее XDTO: схему загружают в пакет XDTO конфигурации, а файл читают через ФабрикаXDTO.ПрочитатьXML(Чтение) и обращаются к свойствам как к полям объекта.

Автоматизация

Повторяющуюся загрузку лучше не делать руками. Варианты по возрастанию сложности:

  • ⏱ Расписание синхронизации. В настройке синхронизации данных включите выполнение по расписанию. 1С сама заберёт файл из каталога, FTP или почты. Для файловой базы регламентные задания выполняются, только когда кто-то в ней работает.
  • ⏱ Регламентное задание в расширении. Своя процедура загрузки, которую сервер 1С запускает по расписанию. Подходит для клиент-серверного варианта.
  • ⏱ Запуск из планировщика Windows. Батник открывает базу и выполняет внешнюю обработку параметром /Execute.

Пример батника для файловой базы:

"C:\Program Files\1cv8\common\1cestart.exe" ENTERPRISE /F"D:\Bases\Torg" /N"Обмен" /P"пароль" /Execute"D:\Obmen\ZagruzkaXML.epf" /DisableStartupMessages

Обработка в этом случае должна сама начать загрузку при открытии формы и закрыть программу по завершении.

Пароль в батнике лежит открытым текстом. Заведите для обмена отдельного пользователя с минимальными правами и закройте папку со скриптом от посторонних.

  • ⏱ HTTP-сервис. Внешняя система отправляет XML прямо в опубликованную на веб-сервере базу. Файлы не нужны вовсе, но требуется публикация базы и доработка конфигурации.
Перед первой автоматической загрузкой
Выполнено: 0 / 5

8. Частые вопросы о загрузке XML в 1С

Можно ли загрузить XML в 1С без программиста?
Да, если файл выгружен из такой же конфигурации, из типовой через EnterpriseData или это УПД поставщика. Для XML из сторонней системы без готовых правил нужна доработка.
Чем XML-выгрузка отличается от файла .dt?
Файл .dt заменяет всю базу целиком, включая конфигурацию. XML переносит только выбранные данные и добавляет их к уже существующим.
Почему загруженные документы не видны в отчётах?
Обмен записывает документы без проведения, поэтому движений по регистрам нет. Проведите документы за нужный период, и данные попадут в отчёты.
Можно ли загрузить XML из 1С 7.7 в 1С 8.3?
Да, но через правила переноса из 7.7 в 8.3, которые входят в поставку типовой конфигурации. Выгрузка выполняется обработкой в 7.7, загрузка — в базе 8.3 из состава этой поставки.
Как загрузить XML-файл, если он весит несколько гигабайт?
Используйте 64-разрядный клиент или загрузку на сервере, а сам файл по возможности делите на части по периодам при выгрузке.