Загрузка XML в 1С 8.3: какой обработкой открыть файл и как не задвоить данные
Содержание
Загрузить файл 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С в режиме «Предприятие» под администратором.
- Откройте главное меню (кнопка с тремя полосками слева вверху) →
Файл → Открытьи выберите файл.epf. - Если появится предупреждение о безопасности, подтвердите открытие: обработка из доверенного источника.
- Перейдите на вкладку «Загрузка».
- Укажите путь к XML-файлу и нажмите «Загрузить данные».
Обработка переносит объекты вместе с уникальными идентификаторами (GUID). Если объект с таким идентификатором уже есть в базе, он будет перезаписан. Если нет — создан новый. Дубликатов при этом не возникает, но и «слияния» тоже: данные в приёмнике заменяются данными из файла.
Обработка пишет данные в режиме обмена: проверки заполнения и проведение не выполняются. Документы приходят в том состоянии, в котором были выгружены. Движения регистров переносятся, только если их выгружали отдельно.
Используйте этот способ для переноса справочников между копиями одной базы, восстановления удалённых элементов из старой копии, частичного переноса документов. Между разными конфигурациями он не работает .
3. Файл обмена по правилам КД 2.0 и КД 3.0
Если базы разные (например, УТ 11 и Бухгалтерия 3.0, или доработанная конфигурация и типовая), нужны правила конвертации. Их готовят в конфигурации «Конвертация данных ».
Правила КД 2.0
В файле обмена КД 2.0 под корнем ФайлОбмена лежат сами правила и данные. Поэтому для загрузки отдельный файл правил не нужен: приёмник читает их из того же XML.
- Откройте внешнюю обработку
«Универсальный обмен данными в формате XML» (
V8Exchan83.epfиз поставки Конвертации данных 2.0) черезФайл → Открыть. - На вкладке загрузки выберите файл данных.
- Для первой пробы включите вывод информационных сообщений и запись протокола в файл.
- Нажмите «Загрузить данные».
Сопоставление объектов идёт так, как задал автор правил: по 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 | НСИ и администрирование → Синхронизация данных |
Порядок настройки с обменом через файлы:
- Включите флажок «Синхронизация данных» и задайте префикс информационной базы — две буквы, разные для каждой базы.
- Откройте «Настройки синхронизации данных» и создайте новую. Выберите программу-источник из списка или вариант через универсальный формат.
- В способе связи укажите обмен через каталог: локальный или сетевой, к которому есть доступ у обеих баз.
- Настройте правила отправки: с какой даты, по каким организациям, какие документы.
- Положите файл источника в каталог и нажмите «Синхронизировать».
Версия формата у двух сторон должна совпадать хотя бы по одной из поддерживаемых. Типовая конфигурация знает несколько версий и при настройке выбирает общую. Если источник выгрузил формат, который приёмник не знает, загрузка остановится с ошибкой о версии.
Для разовой загрузки файла EnterpriseData без настройки обмена в конфигурациях на БСП есть обработка «Выгрузка и загрузка EnterpriseData». Найти её можно через меню «Все функции» → «Обработки», если это меню включено в параметрах. Она удобна для отладки: видно, какие объекты загрузились, а какие нет.
5. Загрузка УПД и накладных из XML поставщика
Частый вопрос бухгалтера: контрагент прислал по почте XML-файл УПД, а ЭДО с ним не настроен. Такой файл сформирован по формату ФНС, и 1С умеет создать по нему документ поступления.
- Откройте список документов поступления. В Бухгалтерии 3.0 это
Покупки → Поступление (акты, накладные, УПД). - В командной панели списка найдите меню ЭДО и в нём команду загрузки электронного документа из файла.
- Выберите полученный XML.
- Программа покажет документ поставщика и предложит сопоставить контрагента, договор и номенклатуру.
- Сопоставьте товары с карточками вашей номенклатуры. Связь запомнится, и при следующей загрузке её не придётся повторять.
- Создайте документ поступления и проверьте суммы и НДС до проведения.
Если в файле несколько документов (например, архив с УПД и подписью), загружайте сам 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 прямо в опубликованную на веб-сервере базу. Файлы не нужны вовсе, но требуется публикация базы и доработка конфигурации.