К статье
Практический материал

Администрирование · 11 мин

Как перенести регистр сведений из одной базы 1С в другую

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

Перенос регистра сведений между базами 1С — типовая задача при миграции на новую конфигурацию, объединении баз или создании копии данных для тестирования. Регистр сведений хранит информацию в разрезе измерений (например, курсы валют, цены номенклатуры, адреса контрагентов), и его перенос требует аккуратности: записи ссылаются на элементы справочников, которые должны существовать в базе-приёмнике.

Выбор способа зависит от трёх факторов: совпадают ли конфигурации источника и приёмника, есть ли доступ к конфигуратору и какой объём данных нужно перенести. Для идентичных конфигураций подходят простые инструменты — выгрузка через XML или обработку «Универсальный обмен данными». Для разных конфигураций потребуется «Конвертация данных» с настройкой правил обмена.

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

Что проверить перед началом переноса

Первый шаг — сравнить структуру регистра в обеих базах. Откройте конфигуратор источника и приёмника, найдите регистр сведений и сверьте состав измерений, ресурсов и реквизитов, их типы и режим записи (периодический или нет, подчинён ли регистратору). Если регистр подчинён регистратору, переносить его отдельно нельзя — записи создаются только документами, и переносить нужно сами документы.

Второй момент — ссылочная целостность. Измерения регистра обычно содержат ссылки на справочники: номенклатуру, контрагентов, организации, валюты. Если в базе-приёмнике этих элементов нет, при загрузке ссылки либо «побъются», либо будут созданы дубли по наименованию. Поэтому сначала переносят справочники, потом регистры.

Третий момент — объём. Регистр с несколькими миллионами записей (например, история цен за много лет) через XML будет выгружаться долго, а файл может занять гигабайты. В таких случаях имеет смысл ограничить выгрузку периодом или использовать прямое подключение через COM.

Способ 1. Выгрузка и загрузка данных XML для идентичных конфигураций

Обработка «Выгрузка и загрузка данных XML» (файл ВыгрузкаЗагрузкаДанныхXML.epf входит в поставку конфигураций и доступна на диске ИТС) — самый простой инструмент, когда конфигурации совпадают по структуре переносимого объекта. Она выгружает данные в XML-файл вместе со ссылками и загружает их в другую базу с сохранением уникальных идентификаторов.

Порядок работы: откройте обработку через «Файл → Открыть» в базе-источнике, на закладке «Выгрузка» отметьте флагом нужный регистр сведений в дереве объектов конфигурации, укажите имя файла выгрузки и нажмите «Выгрузить данные». В базе-приёмнике откройте ту же обработку, перейдите на закладку «Загрузка», выберите файл и выполните загрузку.

Обработка автоматически выгружает объекты по ссылкам: если в измерении регистра указан элемент справочника, он попадёт в файл вместе с записью. Это удобно, но при повторной загрузке в базу, где справочники уже есть, возможны дубли — сопоставление идёт по GUID, и если элементы создавались в приёмнике независимо, идентификаторы не совпадут.

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

Способ 2. Универсальный обмен данными в формате XML

Обработка «Универсальный обмен данными в формате XML» подходит, когда нужны отборы: выгрузить записи регистра только за определённый период, по конкретной организации или по отдельным элементам измерений. Она работает с правилами обмена, которые можно сгенерировать или написать вручную.

Для независимого регистра сведений в правилах создаётся правило конвертации данных (ПКД) соответствующего объекта. В обработке на закладке «Выгружаемые данные» вы отмечаете регистр, при необходимости задаёте отбор через построитель запроса и запускаете выгрузку. Загрузка выполняется на закладке «Загрузка данных» в базе-приёмнике.

Преимущество способа — гибкость: можно отфильтровать исторические записи и не тащить в новую базу данные десятилетней давности. Недостаток — требуется аккуратность с правилами: при неверно настроенном поиске ссылок в приёмнике появятся дубли справочников.

Способ 3. Конвертация данных для разных конфигураций

Если конфигурации источника и приёмника различаются (например, переход с «Управление торговлей 10.3» на редакцию 11 или миграция в ERP), простая выгрузка не сработает — структура регистра, имена измерений и типы данных отличаются. Для таких случаев используется конфигурация «Конвертация данных».

В конвертации данных создаётся правило конвертации объекта (ПКО) для регистра сведений, для каждого измерения и ресурса настраивается правило конвертации свойств (ПКС). Если поле в приёмнике называется иначе или имеет другой тип, в ПКС прописывается соответствие или алгоритм преобразования на встроенном языке.

Готовые правила для типовых переходов (например, с УТ 10.3 на УТ 11 или с БП 2.0 на БП 3.0) поставляются вместе с конфигурациями и включают перенос основных регистров сведений. Использовать их проще, чем писать правила с нуля: достаточно загрузить правила в обработку «Универсальный обмен данными» и выполнить выгрузку-загрузку.

Сравнение способов переноса

Выгрузка/загрузка XML

Одинаковые конфигурации, полный перенос регистра. Быстро, но без отборов и с риском дублей справочников.

Универсальный обмен данными

Нужны отборы по периоду или измерениям, похожие конфигурации. Требует настройки правил.

Конвертация данных

Разные конфигурации, изменённые имена и типы полей. Максимальная гибкость, но трудоёмко.

COM-подключение

Связанные базы в одной сети, большие объёмы. Нужны навыки программирования на встроенном языке.

Способ 4. Программный перенос через COM-соединение

Когда обе базы доступны из одной сети, регистр можно перенести напрямую, без промежуточных файлов, через COM-соединение (V83.COMConnector). Обработка подключается к базе-источнику, читает записи регистра запросом и создаёт аналогичные записи в текущей базе.

Такой подход даёт полный контроль: можно сопоставлять ссылки по коду, наименованию или GUID, пропускать дубли, логировать ошибки. Типовой фрагмент кода выглядит так:

Коннектор = Новый COMОбъект("V83.COMConnector");

Соединение = Коннектор.Connect("Srvr=Server;Ref=BaseName;Usr=User;Pwd=Pass");

Запрос = Соединение.NewObject("Запрос");

Запрос.Текст = "ВЫБРАТЬ * ИЗ РегистрСведений.КурсыВалют";

Выборка = Запрос.Выполнить().Выбрать();

Пока Выборка.Следующий() Цикл

МенеджерЗаписи = РегистрыСведений.КурсыВалют.СоздатьМенеджерЗаписи();

МенеджерЗаписи.Период = Выборка.Период;

МенеджерЗаписи.Валюта = Справочники.Валюты.НайтиПоНаименованию(

Строка(Выборка.Валюта));

МенеджерЗаписи.Курс = Выборка.Курс;

МенеджерЗаписи.Записать(Истина);

КонецЦикла;

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

Проверка результата после загрузки

После переноса сверьте количество записей в источнике и приёмнике. Проще всего это сделать консолью запросов или отчётом по регистру: выведите общее число записей и число записей за контрольный период. Расхождение указывает на отборы при выгрузке, ошибки загрузки или пропущенные записи.

Вторая проверка — ссылочная целостность. Откройте несколько записей регистра в приёмнике и убедитесь, что измерения заполнены реальными элементами справочников, а не «битыми ссылками» вида «<Объект не найден>». Также проверьте дубли в связанных справочниках: если один и тот же контрагент появился дважды с разными GUID, поиск ссылок при загрузке был настроен неверно.

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

Контрольные точки

Как проверить результат

Количество записей регистра
Норма

Совпадает с источником или отличается ровно на заданный отбор

Тревожный признак

Записей заметно меньше без объяснимой причины

Ссылки в измерениях
Норма

Открываются реальные элементы справочников

Тревожный признак

Значения вида «Объект не найден»

Срез последних по периодическому регистру
Норма

Значения ресурсов совпадают с источником

Тревожный признак

Расхождения в курсах, ценах, ставках

Связанные справочники
Норма

Каждый элемент существует в одном экземпляре

Тревожный признак

Дубли по наименованию с разными GUID

Типичные ошибки и ограничения

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

Третья проблема — дубли справочников при несовпадении GUID. Если базы развивались независимо, один и тот же элемент имеет разные идентификаторы, и загрузка по GUID создаёт копии. Решение — настроить поиск по реквизитам (код, ИНН, наименование) в правилах обмена или заранее синхронизировать GUID обработкой.

Ограничения файлового способа касаются объёма: XML-файл с миллионами записей может не открыться из-за нехватки памяти при загрузке. В таких случаях выгружайте данные частями по периодам или переходите на COM-подключение.

Типичные ошибки
01
Перенос регистра до справочников — битые ссылки и повторная загрузка
02
Перенос регистра, подчинённого регистратору, — записи без документов нарушают учёт
03
Загрузка без резервной копии — невозможность отката при ошибке правил
04
Игнорирование несовпадения GUID — дубли справочников в приёмнике
05
Выгрузка всего объёма одним файлом — нехватка памяти и обрыв загрузки

Частые вопросы

Можно ли перенести регистр сведений между базами с разными версиями платформы 1С?

Да, если обе базы открываются на совместимых версиях платформы. XML-формат обмена не зависит от версии платформы напрямую, важна лишь структура конфигурации. Для COM-подключения версии платформы на клиенте и сервере должны быть совместимы.

Что делать, если регистр периодический и нужна только история за последний год?

Используйте «Универсальный обмен данными» с отбором по полю «Период» или программный перенос с условием в запросе. В обработке «Выгрузка и загрузка данных XML» отборов нет — она выгружает регистр целиком.

Почему после загрузки в измерениях стоит «Объект не найден»?

В базе-приёмнике отсутствуют элементы справочников, на которые ссылаются записи регистра. Перенесите связанные справочники и загрузите регистр повторно, либо включите в правилах обмена выгрузку объектов по ссылкам.

Как избежать дублей справочников при переносе?

Настройте в правилах обмена поиск существующих элементов по реквизитам: коду, наименованию, ИНН для контрагентов. Если элементы уже продублировались, используйте обработку поиска и замены дублирующихся значений, после чего повторите загрузку регистра.

Можно ли перенести регистр сведений, подчинённый регистратору?

Напрямую — нет. Такие записи создаются и изменяются только документами. Переносите документы-регистраторы, и при их проведении в приёмнике движения по регистру сформируются автоматически.

Что быстрее для большого регистра: файл или COM-подключение?

При объёме в сотни тысяч записей и более COM-подключение обычно стабильнее: нет промежуточного файла и ограничений по памяти при его чтении. Однако файловый способ проще и не требует программирования — для небольших регистров его достаточно.

Итог

Что важно запомнить

Для одинаковых конфигураций регистр сведений переносится выгрузкой в XML, для разных — через конвертацию данных или COM-подключение. Сначала переносятся справочники, затем регистр. Регистры, подчинённые регистратору, переносятся только вместе с документами. Резервная копия приёмника и проверка количества записей и ссылок после загрузки обязательны.