Многие программисты и системные администраторы сталкиваются с необходимостью переноса данных между разными конфигурациями 1С. Проанализируем ситуацию, когда необходимо перенести справочник Контрагенты из стандартной базы «1С:Бухгалтерия 8.3» в чистую базу некоммерческой организации «1С:Бухгалтерия НКО».
Часто при использовании стандартной обработки «Выгрузка и загрузка данных XML» процесс прерывается и система выдает сообщение:
Ошибка преобразования данных XDTO:
НачалоСвойства: {http://v8.1c.ru/8.1/data/enterprise/current-config}ИсправлятьУстаревшиеАдреса Форма: Элемент Тип: {http://www.w3.org/2001/XMLSchema} anyType
Выясним причину такого поведения системы и разберем по шагам, как можно успешно завершить перенос контрагентов.
Стандартная обработка «Выгрузка и загрузка данных XML» предназначена для работы с абсолютно идентичными структурами метаданных. В нашем случае конфигурация-источник (БП 3.0.87) новее, чем конфигурация-приемник (НКО 3.0.86), и сами конфигурации отличаются архитектурно.
В релизе 3.0.87 разработчики 1С добавили новое свойство или константу ИсправлятьУстаревшиеАдреса. Приемник версии 3.0.86 просто не имеет в своей структуре такого тега. Когда XML-парсер натыкается на неизвестное свойство, происходит крах загрузки XDTO-пакета. Рассмотрим подробнее способы решения этой проблемы.
Если нет возможности писать сложные правила конвертации, воспользуемся типовым функционалом программы. Начиная с версий 3.0.61 в 1С:Бухгалтерии встроен удобный механизм загрузки справочников из табличных файлов.
Контрагенты.Контрагенты.Если вам нужно перенести не только контрагентов, но и сохранить максимальную совместимость, посмотрим на пример с использованием официальных релизов для перехода. Фирма 1С выпускает специальные дистрибутивы для перехода с БП 3.0 на НКО 3.0.
В результате у вас получится готовая рабочая база НКО, в которой уже будут все контрагенты и корректная структура метаданных.
Если база приемника должна быть абсолютно чистой и нам нужны только элементы, мы можем написать простую кастомную обработку или скрипт. Однако, как верно отмечают специалисты, главная сложность при ручном переносе справочника — это адресные объекты. Контактная информация хранится в виде сложного XML-представления.
Разберем обходной путь:
1С:Контрагент.Контрагенты.При наличии сервиса автозаполнения, все остальные данные (КПП, полное название, юридический адрес, данные о руководителе) платформа подтянет автоматически из ЕГРЮЛ. Это избавит нас от необходимости вручную парсить адреса по форматам ФИАС/КЛАДР.
Если объемы данных большие, а использование сервиса по ИНН невозможно (например, нет подписки ИТС), правильным архитектурным подходом будет создание правил обмена.
Поскольку конфигурации разные, применять обычную выгрузку XML ВыгрузкаЗагрузкаДанныхXML нельзя. Нам потребуется обработка Универсальный обмен данными в формате XML. С помощью конфигурации «1С:Конвертация данных 2.1» мы создаем правила конвертации (файл .xml), в которых четко прописываем сопоставление свойств БП 3.0 и НКО 3.0. Свойство ИсправлятьУстаревшиеАдреса просто исключается из правил выгрузки, и перенос проходит без ошибок XDTO.
Подведем итог: Несовпадение релизов всегда ведет к ошибкам сериализации XDTO. Для решения задачи лучше всего подходит штатный механизм загрузки из Excel, либо использование файла переходной конфигурации, который корректно трансформирует структуру данных под стандарты некоммерческих организаций.