Как перенести справочник «Контрагенты» из обычной 1С:Бухгалтерия в 1С:НКО при ошибке XDTO?

Программист 1С v8.3 (Управляемые формы) 1C:Бухгалтерия Бухгалтерский учет Сфера услуг, туризм и социальный сектор
← На главную

Многие программисты и системные администраторы сталкиваются с необходимостью переноса данных между разными конфигурациями 1С. Проанализируем ситуацию, когда необходимо перенести справочник Контрагенты из стандартной базы «1С:Бухгалтерия 8.3» в чистую базу некоммерческой организации «1С:Бухгалтерия НКО».

Часто при использовании стандартной обработки «Выгрузка и загрузка данных XML» процесс прерывается и система выдает сообщение:


Ошибка преобразования данных XDTO:
НачалоСвойства: {http://v8.1c.ru/8.1/data/enterprise/current-config}ИсправлятьУстаревшиеАдреса    Форма: Элемент    Тип: {http://www.w3.org/2001/XMLSchema} anyType

Выясним причину такого поведения системы и разберем по шагам, как можно успешно завершить перенос контрагентов.

Почему возникает ошибка преобразования XDTO?

Стандартная обработка «Выгрузка и загрузка данных XML» предназначена для работы с абсолютно идентичными структурами метаданных. В нашем случае конфигурация-источник (БП 3.0.87) новее, чем конфигурация-приемник (НКО 3.0.86), и сами конфигурации отличаются архитектурно.

В релизе 3.0.87 разработчики 1С добавили новое свойство или константу ИсправлятьУстаревшиеАдреса. Приемник версии 3.0.86 просто не имеет в своей структуре такого тега. Когда XML-парсер натыкается на неизвестное свойство, происходит крах загрузки XDTO-пакета. Рассмотрим подробнее способы решения этой проблемы.

Способ 1: Использование штатной загрузки из табличного документа (Excel)

Если нет возможности писать сложные правила конвертации, воспользуемся типовым функционалом программы. Начиная с версий 3.0.61 в 1С:Бухгалтерии встроен удобный механизм загрузки справочников из табличных файлов.

  1. Откроем базу-источник (обычную БП).
  2. Сформируем Универсальный отчет по справочнику Контрагенты.
  3. Выведем в настройки отчета все необходимые колонки: ИНН, КПП, Наименование, Полное наименование, Юридический и Фактический адреса, телефоны.
  4. Сохраним получившийся отчет в формат Excel (.xls или .xlsx).
  5. Перейдем в чистую базу НКО. Откроем справочник Контрагенты.
  6. Нажмем кнопку Загрузить (или Загрузить из файла).
  7. В открывшемся окне вставим данные из нашего Excel-файла. Штатный механизм позволит на лету сопоставить колонки с реквизитами справочника и автоматически загрузит контактную информацию в нужные табличные части без ошибок.

Способ 2: Накатывание переходной конфигурации

Если вам нужно перенести не только контрагентов, но и сохранить максимальную совместимость, посмотрим на пример с использованием официальных релизов для перехода. Фирма 1С выпускает специальные дистрибутивы для перехода с БП 3.0 на НКО 3.0.

  1. Сделаем полную копию исходной базы «1С:Бухгалтерия».
  2. На копии выполним свертку базы на нужную дату (например, на 31.12.2020), если нам нужны только остатки и справочники.
  3. Пометим на удаление и физически удалим все ненужные документы и операции (не забудем предварительно снять дату запрета редактирования).
  4. Выполним Тестирование и исправление (ТиИ) со сжатием информационный базы.
  5. Скачаем переходный релиз конфигурации «1С:НКО» (версия должна соответствовать вашему текущему релизу БП).
  6. Через конфигуратор выполним обновление конфигурации на скачанный cf-файл переходной НКО.

В результате у вас получится готовая рабочая база НКО, в которой уже будут все контрагенты и корректная структура метаданных.

Способ 3: Написание собственной обработки и сервис «1С:Контрагент»

Если база приемника должна быть абсолютно чистой и нам нужны только элементы, мы можем написать простую кастомную обработку или скрипт. Однако, как верно отмечают специалисты, главная сложность при ручном переносе справочника — это адресные объекты. Контактная информация хранится в виде сложного XML-представления.

Разберем обходной путь:

  1. Выгрузим из старой базы только простой список ИНН контрагентов в текстовый файл.
  2. В новой базе подключим интернет-поддержку и сервис 1С:Контрагент.
  3. Напишем небольшую обработку, которая будет читать файл с ИНН и программно создавать элементы справочника Контрагенты.

При наличии сервиса автозаполнения, все остальные данные (КПП, полное название, юридический адрес, данные о руководителе) платформа подтянет автоматически из ЕГРЮЛ. Это избавит нас от необходимости вручную парсить адреса по форматам ФИАС/КЛАДР.

Способ 4: Правила обмена через «1С:Конвертация данных 2.1»

Если объемы данных большие, а использование сервиса по ИНН невозможно (например, нет подписки ИТС), правильным архитектурным подходом будет создание правил обмена.

Поскольку конфигурации разные, применять обычную выгрузку XML ВыгрузкаЗагрузкаДанныхXML нельзя. Нам потребуется обработка Универсальный обмен данными в формате XML. С помощью конфигурации «1С:Конвертация данных 2.1» мы создаем правила конвертации (файл .xml), в которых четко прописываем сопоставление свойств БП 3.0 и НКО 3.0. Свойство ИсправлятьУстаревшиеАдреса просто исключается из правил выгрузки, и перенос проходит без ошибок XDTO.

Подведем итог: Несовпадение релизов всегда ведет к ошибкам сериализации XDTO. Для решения задачи лучше всего подходит штатный механизм загрузки из Excel, либо использование файла переходной конфигурации, который корректно трансформирует структуру данных под стандарты некоммерческих организаций.

← На главную