Как перенести данные за период между базами 1С и решить ошибку "Тип не определен" при обмене?

Программист 1С v8.3 (Управляемые формы) 1С:Управление торговлей Торговля и дистрибуция
← На главную

При работе с программными продуктами 1С часто возникает необходимость перенести данные за определенный период из одной информационной базы в другую. Это может быть вызвано различными причинами: восстановление из резервной копии, объединение данных, разделение учета или исправление ошибок в одной из баз. В нашем случае, пользователь столкнулся с задачей переноса всех документов за неделю из «запоротой» базы в новую, восстановленную из резервной копии, чтобы избежать ручного ввода.

Использование обработки "Универсальный обмен данными в формате XML"

Для решения задачи переноса данных между базами 1С чаще всего используется стандартная обработка «Универсальный обмен данными в формате XML». Эта обработка представляет собой мощный инструмент для выгрузки и загрузки информации, который позволяет гибко настраивать процесс обмена.

В начале обсуждения на форуме было предложено использовать именно эту обработку. Однако, при первой попытке пользователь столкнулся с неожиданной проблемой: из 3000 выгруженных документов удалось загрузить только 12. Это указывало на наличие серьезной ошибки в процессе обмена.

Диагностика ошибки "Тип не определен"

При загрузке остальных 2988 документов возникла ошибка «Тип не определен(Справочник.ССылка.УдалитьТерриротиальныеУсловия)». Эта ошибка является одним из самых распространенных индикаторов проблем при обмене данными и требует внимательного анализа.

Рассмотрим возможные причины возникновения такой ошибки и шаги по их устранению:

  1. Различные версии конфигураций и платформы: Первое, на что следует обратить внимание, это идентичность версий платформы 1С и конфигураций баз данных (источника и приемника). Даже незначительные различия в релизах или установленных патчах могут привести к тому, что в одной базе присутствует объект метаданных (например, справочник, документ, реквизит), который отсутствует или имеет другое название в другой базе. В таком случае система не может найти соответствующий тип данных и выдает ошибку «Тип не определен». В нашем случае, версии конфигураций УТ 11.4 были идентичны, что исключило эту причину. Всегда убедитесь, что обе базы обновлены до максимально идентичных версий.
  2. Некорректные или отсутствующие правила обмена: Здесь кроется ключевой момент, который был выявлен в ходе обсуждения. Использование обработки «Универсальный обмен данными в формате XML» имеет свои особенности в зависимости от того, между какими конфигурациями производится обмен.

Обмен данными между идентичными и разными конфигурациями

Разберем подробнее, как работает обмен данными в 1С в двух принципиально разных сценариях:

1. Обмен данными между идентичными конфигурациями (например, УТ 11.4 в УТ 11.4)

Когда вы переносите данные между базами, которые имеют абсолютно идентичные конфигурации и версии релизов, стандартная обработка «Универсальный обмен данными в формате XML» обычно используется БЕЗ указания файла правил обмена. В этом случае обработка напрямую использует метаданные конфигурации для определения структуры объектов и их соответствия. Система просто переносит данные «как есть», поскольку структура данных в источнике и приемнике совпадает. Если вы в этом случае указываете правила обмена, это может привести к ошибкам, особенно если эти правила предназначены для другого сценария.

Именно в этом заключалась проблема пользователя на форуме. Он пытался выгрузить данные из УТ 11.4 и загрузить их в УТ 11.4, но при этом использовал правила обмена, которые были написаны для переноса данных из УТ 11 в БП 3.0. Эти правила, естественно, содержали ссылки на объекты метаданных и логику трансформации, которые не соответствовали прямому переносу между двумя экземплярами УТ 11.4. Отсюда и возникла ошибка «Тип не определен», так как правила пытались найти или создать объекты, которые в данной конфигурации УТ 11.4 либо отсутствовали, либо имели другую структуру, нежели ожидалось правилами.

2. Обмен данными между разными конфигурациями (например, из УТ 11 в БП 3.0)

Если вам требуется перенести данные между различными конфигурациями (например, из «1С:Управление торговлей» в «1С:Бухгалтерия предприятия»), или если нужна выборочная выгрузка/загрузка данных с трансформацией (изменение структуры, преобразование значений), тогда вам необходима конфигурация «Конвертация данных». С помощью «Конвертации данных» разработчик создает специальные файлы правил обмена (обычно с расширением .xml). Эти правила определяют, какие именно данные и как будут переноситься из одной конфигурации в другую: какие объекты сопоставлять, какие реквизиты преобразовывать, какую логику применять при переносе. После создания эти правила затем используются в обработке «Универсальный обмен данными в формате XML» для выполнения обмена.

Таким образом, основное отличие заключается в том, что для идентичных конфигураций правила обмена не требуются (или должны быть специфичными для прямого переноса), а для разных конфигураций они являются обязательным элементом, созданным с помощью «Конвертации данных».

Пошаговое решение проблемы для идентичных конфигураций

Рассмотрим последовательность действий для успешного переноса данных за период между идентичными конфигурациями, исходя из полученных знаний:

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

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

Дополнительные рекомендации

Следуя этим рекомендациям и понимая разницу в использовании правил обмена для разных сценариев, вы сможете эффективно использовать обработку «Универсальный обмен данными в формате XML» для решения задач по переносу данных в 1С.

← На главную