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