Справочники и Данные · 10 мин
Как перенести данные из регистра сведений в 1С
Перенос данных из регистра сведений 1С: выгрузка через запрос, обработку и XML, типовые средства конвертации, проверка результата и типичные ошибки.
Регистр сведений в 1С хранит пары «ключ — значение»: курсы валют, штрихкоды номенклатуры, цены, адреса контрагентов. Перенести эти данные в другую базу, другой регистр или внешний файл — типовая задача при миграции между конфигурациями, консолидации баз или смене учётной системы. Сложность зависит от структуры регистра: у подчинённого регистратору регистра сведений нельзя просто скопировать записи — придётся создавать или подбирать документы-регистраторы.
Универсального кнопочного решения в типовых конфигурациях нет, поэтому на практике применяют несколько подходов: типовую обработку «Выгрузка и загрузка данных XML», конвертацию данных, запросы с записью через набор записей и обмен через табличный документ. Выбор зависит от объёма, совпадения структур источника и приёмника и наличия у вас прав разработчика.
Определите тип регистра сведений перед переносом
От режима записи регистра зависит вся технология переноса. Откройте конфигуратор, найдите регистр в ветке «Регистры сведений» и посмотрите свойства «Периодичность» и «Режим записи».
Независимый регистр сведений — самый простой случай: записи существуют сами по себе, их можно свободно создавать, изменять и удалять. Подчинённый регистратору регистр нельзя редактировать напрямую в пользовательском режиме: каждая запись привязана к документу, и перенос означает создание движений документов, а не просто копирование строк.
Периодический регистр дополнительно требует корректного переноса даты (поля «Период»): при загрузке в другую базу важно сохранить историю изменений значений, иначе отчёты «на дату» покажут неверные данные.
Записи можно копировать напрямую через запрос или обработку
Нужно переносить документы-регистраторы или создавать их заново
Проверьте, что поле «Период» переносится без сдвигов дат
Потребуется сопоставление измерений и ресурсов вручную
Перенос между идентичными конфигурациями через выгрузку XML
Если база-источник и база-приёмник построены на одной конфигурации одной версии (например, перенос из рабочей базы в копию или между филиалами), самый безопасный путь — типовая обработка «Выгрузка и загрузка данных XML». Она входит в диск ИТС и часто встроена в типовые конфигурации в разделе администрирования.
Порядок действий: откройте обработку в базе-источнике, на закладке выгрузки отметьте нужный регистр сведений в дереве объектов, укажите файл выгрузки и выполните выгрузку. Затем откройте ту же обработку в базе-приёмнике и загрузите файл. Обработка переносит ссылочные объекты (измерения регистра — номенклатуру, контрагентов) вместе с записями, сохраняя уникальные идентификаторы, поэтому связи не ломаются.
- 1Сделайте резервную копию базы-приёмника
- 2Откройте обработку «Выгрузка и загрузка данных XML» в источнике
- 3Отметьте нужный регистр сведений и связанные объекты
- 4Выгрузите данные в файл
- 5Откройте ту же обработку в приёмнике и загрузите файл
- 6Сверьте количество записей в источнике и приёмнике
Ограничение метода: он требует совпадения конфигураций. Если версии различаются хотя бы составом реквизитов регистра, загрузка завершится ошибкой или создаст неполные записи. Перед загрузкой в рабочую базу проверьте перенос на копии.
Перенос между разными конфигурациями через конвертацию данных
Когда структуры регистров в источнике и приёмнике различаются — например, переход с 1С:УПП на 1С:ERP или с самописной конфигурации на типовую — применяют конфигурацию «Конвертация данных». В ней настраивают правила конвертации объектов: какое измерение источника в какое измерение приёмника попадает, как преобразуются значения.
Для регистра сведений создают правило конвертации набора записей. Если регистр независимый, записи выгружаются как самостоятельные объекты; если подчинён регистратору — конвертируются вместе с документом-регистратором. Поиск ссылочных измерений в приёмнике обычно настраивают по коду, наименованию или уникальному идентификатору.
Готовые правила для переходов между популярными типовыми конфигурациями часто поставляются вместе с обновлениями или доступны на портале 1С. Использовать их надёжнее, чем писать с нуля, но и их нужно тестировать на копии: состав регистров меняется от релиза к релизу.
Перенос программно: запрос и набор записей
Если вы умеете работать в конфигураторе, самый гибкий способ — собственная обработка. Для независимого регистра сведений логика такая: запросом выбрать все записи регистра в источнике, подключиться к базе-приёмнику (через COM-соединение, веб-сервис или в рамках одной базы — напрямую) и для каждой строки создать запись через менеджер записи.
Типовой фрагмент кода для переноса внутри одной базы из одного регистра в другой выглядит так:
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ * ИЗ РегистрСведений.РегистрИсточник";
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
Менеджер = РегистрыСведений.РегистрПриемник.СоздатьМенеджерЗаписи();
ЗаполнитьЗначенияСвойств(Менеджер, Выборка);
Менеджер.Записать();
КонецЦикла;
Для больших объёмов эффективнее писать не по одной записи, а набором записей с отбором, либо порциями, чтобы не держать в памяти весь регистр. При переносе между базами через COM-соединение учитывайте, что ссылочные значения (измерения типа «СправочникСсылка») нужно сопоставлять по идентификатору или ключевым полям — напрямую передать ссылку из одной базы в другую нельзя.
Перенос через табличный документ и внешние файлы
Когда нет доступа к конфигуратору, а объём данных умеренный, записи регистра можно выгрузить в таблицу и загрузить через файл. Откройте регистр в пользовательском режиме, выведите список, настройте нужные колонки и сохраните табличный документ в формате MXL, Excel или скопируйте в буфер обмена.
Для загрузки в приёмник используют типовые обработки загрузки данных из табличного документа (во многих конфигурациях на БСП есть «Загрузка данных из файла» в разделе «Администрирование» или в карточке справочника). Обработка сопоставляет колонки файла с измерениями и ресурсами регистра и ищет ссылочные значения по наименованию или коду.
Способ подходит для независимых регистров с простыми измерениями — штрихкодов, соответствий значений. Для периодических регистров с длинной историей и регистров, подчинённых регистратору, он не подходит.
Сравнение вариантов переноса
Идентичные конфигурации; сохраняет ссылки и GUID; не работает при различии структур
Разные конфигурации и большие объёмы; требует навыков настройки правил
Максимальная гибкость и контроль; нужны права разработчика и тестирование
Небольшие объёмы без доступа к конфигуратору; риск ошибок сопоставления колонок
Проверка результата и типичные ошибки
После переноса сверьте количество записей в источнике и приёмнике — проще всего универсальным отчётом или консолью запросов. Для периодических регистров дополнительно проверьте срез последних на актуальную дату: значения должны совпадать. Для регистров с ссылочными измерениями выборочно откройте несколько записей и убедитесь, что измерения указывают на правильные элементы справочников, а не на «битые» ссылки.
Как проверить результат
Совпадает с источником или отличается на известное число отфильтрованных
Записей меньше без объяснимой причины
Значения на дату совпадают с источником
Устаревшие или пустые значения
Открываются реальные элементы справочников
«Объект не найден» или дубли элементов
Формируются с ожидаемыми цифрами
Пустые строки или ошибки компоновки
Если перенос выполняется в многопользовательской базе, проводите загрузку в монопольном режиме или в нерабочее время. Иначе пользователи могут изменить данные регистра между выгрузкой и загрузкой, и вы получите расхождения, которые трудно объяснить.
Что важно запомнить
Сначала определите тип регистра: независимый переносится напрямую, подчинённый регистратору — только вместе с документами. Для одинаковых конфигураций используйте выгрузку XML, для разных — конвертацию данных или собственную обработку. Всегда работайте через копию базы и сверяйте количество записей и срез последних после загрузки.
Частые вопросы
Можно ли перенести регистр сведений, подчинённый регистратору, без документов?
Нет. Каждая запись такого регистра обязана ссылаться на документ-регистратор. Варианты: перенести сами документы вместе с движениями или создать в приёмнике служебный документ (например, «Ввод начальных остатков», если конфигурация его поддерживает) и записать движения им.
Как перенести только часть записей регистра?
В обработке выгрузки XML отборы по записям регистра обычно не настраиваются, поэтому проще использовать собственную обработку с запросом: добавьте в текст запроса условие ГДЕ по нужным измерениям или периоду и запишите только отобранные строки.
Почему после загрузки из Excel появились дубли справочников?
Обработка загрузки искала элементы по наименованию, не нашла совпадения (например, из-за лишних пробелов или другого регистра букв) и создала новые элементы. Перед загрузкой настройте поиск по коду или уникальному идентификатору, а после — удалите дубли штатной обработкой поиска и удаления дублей.
Что делать, если структуры регистров в источнике и приёмнике различаются?
Составьте таблицу соответствия: какое измерение или ресурс источника в какое поле приёмника переносится, какие поля не переносятся, какие заполняются значениями по умолчанию. Затем реализуйте этот маппинг в конвертации данных или в собственной обработке — автоматически разные структуры не сопоставляются.
Нужно ли переносить служебные поля, например «Активность»?
При программном переносе через ЗаполнитьЗначенияСвойств поле «Активность» обычно заполняется автоматически значением «Истина». Если вы копируете записи вручную или через файл, проверьте, что записи активны: неактивные записи периодического регистра не участвуют в срезах, и отчёты их не увидят.