Две информационные базы 1С в одной: перенос данных без дублей и потерь

· 10 мин

Содержание

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

Типичный повод — две фирмы группы вели учёт в отдельных базах Бухгалтерии 3.0, а теперь их хотят видеть в одной базе с учётом по нескольким организациям. Второй частый случай — после реорганизации данные филиала переезжают в головную базу. Механика в обоих случаях общая для типовых конфигураций на платформе 8.3.

Что проверить до объединения баз

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

🔹 Конфигурация и релиз. Обе базы должны быть на одной конфигурации и одном релизе. Номер релиза видно в окне О программе (кнопка с вопросительным знаком в правом верхнем углу). Если релизы разные — сначала обновите отстающую базу.

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

🔹 Объём переноса. Решите заранее: переносите всю историю документов или только справочники и остатки на дату. Второй вариант в разы проще и надёжнее.

🔹 Дата перехода. Выберите границу — обычно начало квартала или года. После неё учёт ведётся только в объединённой базе.

🔹 Резервные копии. Сделайте выгрузку .dt обеих баз: Конфигуратор → Администрирование → Выгрузить информационную базу.

Все пробные загрузки делайте на копии базы-приёмника. Откатить неудачную загрузку в рабочей базе можно только восстановлением из резервной копии, а это потеря всего, что пользователи успели ввести после неё.

Что настроить в базе-приёмнике заранее:

  1. Включите учёт по нескольким организациям в настройках функциональности программы.
  2. Создайте вторую организацию вручную или дождитесь её загрузки из XML — но не делайте и то и другое, иначе получите две карточки с одним ИНН.
  3. Задайте в карточке каждой организации свой префикс номеров документов. Без этого документы двух фирм пойдут с одинаковыми номерами вида 0000-000015, и их трудно будет различить.
  4. Проверьте, что учётная политика второй организации заведена на все переносимые годы.

Какой метод объединения выбрать

Способов несколько, и они отличаются трудоёмкостью и тем, что получится на выходе.

МетодКогда подходитРиски
Выгрузка/загрузка данных XMLОдинаковая конфигурация и релиз, нужна вся историяДубли справочников с разными ссылками, нагрузка на базу
Универсальный обмен по правиламРазные конфигурации или нужен отбор и сопоставление по ИНН, артикулуПравила надо разработать в «Конвертации данных», это работа программиста
Перенос справочников + ввод остатковИстория не нужна, важно чистое началоАналитика за прошлые периоды останется в старой базе
Прямая запись в SQLПрактически никогдаНарушение ссылочной целостности и итогов регистров
Какой у вас случай?

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

Перенос данных через выгрузку XML: шаг за шагом

Этот путь работает, когда у баз одна конфигурация и один релиз. Используется внешняя обработка «Выгрузка и загрузка данных XML» — она входит в состав дисков ИТС и подходит под конкретную версию платформы. Откройте её в обеих базах через Файл → Открыть.

Шаг 1. Выгрузка из базы-источника

  1. Откройте обработку в базе, данные которой переносите.
  2. На вкладке выгрузки отметьте нужные объекты метаданных. Для бухгалтерской базы обычно это справочники, документы, регистры сведений и регистры бухгалтерии.
  3. Укажите период для документов, если переносите не всю историю.
  4. Нажмите кнопку выгрузки и сохраните XML-файл.

💡 Обработка сама дотягивает связанные объекты. Если выгрузить только документы реализации, в файл попадут и контрагенты, и номенклатура, на которые они ссылаются.

Шаг 2. Загрузка в базу-приёмник

  1. Откройте обработку на копии базы-приёмника.
  2. Перейдите на вкладку загрузки, укажите XML-файл.
  3. Запустите загрузку. На больших базах она может идти часами — запускайте в нерабочее время.

Ключевая особенность: объекты сопоставляются по уникальному идентификатору ссылки, а не по наименованию или ИНН. Если базы когда-то были одной базой (вторую сделали копией первой), общие справочники совпадут и не задвоятся. Если базы велись независимо, «ООО Ромашка» из источника и «ООО Ромашка» из приёмника — это два разных элемента с разными ссылками. Их придётся сливать на следующем этапе.

Шаг 3. Слияние дублей справочников

В типовых конфигурациях на БСП для этого есть обработка Администрирование → Обслуживание → Корректировка данных → Поиск и удаление дублей.

  1. Выберите справочник — начните с контрагентов.
  2. Задайте правила сравнения: для контрагентов — совпадение ИНН и КПП, для номенклатуры — артикула или наименования.
  3. Просмотрите найденные группы. В каждой отметьте оригинал, который останется.
  4. Запустите замену. Обработка заменит ссылки на дубли во всех документах и регистрах и пометит дубли на удаление.

Замена ссылок перезаписывает документы. В закрытых периодах это может затронуть уже сданную отчётность — проверяйте результаты по каждой группе, а не жмите «заменить всё» вслепую.

Порядок слияния важен: сначала организации и банковские счета, затем контрагенты и договоры, потом номенклатура, склады, сотрудники.

Шаг 4. Перепроведение

Документы загружаются с движениями, если вы выгружали регистры. Но после замены ссылок и при расхождении настроек учётной политики движения могут не соответствовать текущим настройкам базы. Надёжнее перепровести документы перенесённой организации за весь период через групповое перепроведение в разделе Администрирование → Обслуживание.

Где объединение обычно ломается

Эти проблемы возникают не из-за ошибок в шагах, а из-за особенностей самих баз.

  • 🔁 Дубли с одинаковым ИНН остаются после слияния. У контрагента в одной базе заполнен КПП, в другой нет. Правило «ИНН + КПП» не найдёт пару. Прогоните поиск ещё раз только по ИНН.
  • 📁 Группы справочников задвоились. Папки «Поставщики» и «Покупатели» тоже элементы справочника. Сливайте их так же, как обычные элементы, до слияния самих контрагентов.
  • 🔢 Конфликт номеров документов. Префикс организации не был задан до загрузки. Задайте его сейчас — новые документы пойдут правильно, а старые можно оставить: на учёт номер не влияет.
  • 🔒 Загрузка упирается в дату запрета изменения. Если в приёмнике стоит дата запрета, документы прошлых периодов не запишутся. Временно снимите запрет на время загрузки и верните сразу после.
  • 💰 Задвоились остатки. Остатки на начало ввели вручную в приёмнике, а потом загрузили ещё и всю историю источника. Одна из версий лишняя — удалите документы ввода остатков либо не переносите историю.
  • 👤 Пользователи не переехали. Пользователи информационной базы в XML не попадают. Их создают в приёмнике заново и назначают права.

Почему объединение через SQL — плохая идея

Желание «перелить таблицы напрямую» понятно: СУБД переносит миллионы строк за минуты, а XML-обмен — часами. Но в базе 1С таблицы связаны не так, как кажется по названиям.

Что ломается при прямой записи:

  1. Ссылки хранятся как двоичные идентификаторы. Запись из одной базы в другую без пересчёта ссылок даёт «битые» ссылки — в формах они отображаются как <Объект не найден>.
  2. Итоги регистров хранятся в отдельных таблицах. Добавили движения в обход платформы — итоги не пересчитались, отчёты показывают одно, а проводки — другое.
  3. Нумераторы, последовательности, таблицы регистрации изменений для обменов тоже живут в отдельных таблицах и не обновятся.
  4. Имена таблиц в СУБД служебные (вида _Reference123) и могут различаться у двух баз с одной конфигурацией.

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

Если в базе уже кто-то «поработал» напрямую, запустите в Конфигураторе Администрирование → Тестирование и исправление с флажками проверки ссылочной целостности и пересчёта итогов. Режим требует монопольного доступа — пользователи должны выйти из базы, проводите его вне рабочего времени.

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

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

Что сверить:

  • 📊 Оборотно-сальдовая ведомость по перенесённой организации за весь период — в источнике и приёмнике. Сальдо по каждому счёту должно совпасть до копейки.
  • 📦 Остатки товаров по складам на дату перехода.
  • 🤝 Взаиморасчёты с крупнейшими контрагентами — после слияния дублей суммы складываются на одной карточке.
  • 🧾 Количество документов каждого вида за период — простая проверка, что ничего не потерялось.
  • 🏦 Остатки по банковским счетам и кассе на конец каждого месяца.

Для поиска дублей, которые не нашла обработка, удобен запрос в консоли запросов:

ВЫБРАТЬ
    Контрагенты.ИНН КАК ИНН,
    КОЛИЧЕСТВО(Контрагенты.Ссылка) КАК Количество
ИЗ
    Справочник.Контрагенты КАК Контрагенты
ГДЕ
    НЕ Контрагенты.ЭтоГруппа
    И НЕ Контрагенты.ПометкаУдаления
    И Контрагенты.ИНН <> ""
СГРУППИРОВАТЬ ПО
    Контрагенты.ИНН
ИМЕЮЩИЕ
    КОЛИЧЕСТВО(Контрагенты.Ссылка) > 1

Запрос покажет все ИНН, по которым живёт больше одной карточки. Филиалы с одним ИНН и разными КПП тоже попадут в список — их оставляйте, это законные разные элементы.

Постобработка:

  1. Удалите помеченные объекты: Администрирование → Обслуживание → Корректировка данных → Удаление помеченных объектов.
  2. Проверьте отчёт «Экспресс-проверка ведения учёта» по перенесённой организации, если он есть в вашей конфигурации.
  3. Сравните регламентированный отчёт за последний сданный период с тем, что формировался в старой базе.
  4. Переведите старую базу в режим только чтения — уберите у пользователей права на изменение. Удалять её не нужно: это архив.

Автоматизация загрузки для больших баз

Если перенос нужно повторить несколько раз (пробный прогон, исправление правил, финальный перенос), ручной запуск обработок утомляет. Варианты автоматизации:

Пакетный запуск из командной строки. Платформа умеет запускать базу и сразу открывать внешнюю обработку параметром /Execute:

"C:\Program Files\1cv8\8.3.24.1548\bin\1cv8.exe" ENTERPRISE /F "D:\Bases\Priemnik" /N "Администратор" /P "пароль" /Execute "D:\Obmen\Zagruzka.epf" /C "D:\Obmen\data.xml"

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

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

Синхронизация данных. Если речь не о разовом слиянии, а о постоянной работе нескольких баз, смотрите в сторону штатной синхронизации в разделе Администрирование → Синхронизация данных. Набор доступных направлений зависит от конфигурации.

Финальный перенос в рабочую базу
Выполнено: 0 / 8

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

Можно ли объединить базы, если одна в файловом варианте, а другая на сервере?
Да. Вариант работы базы на перенос через XML не влияет: обработка работает одинаково в файловой и клиент-серверной базе.
Сохранятся ли номера и даты документов?
Да, при выгрузке XML переносятся номера, даты и время документов. Если префиксы организаций не заданы, номера двух фирм могут совпасть — на учёт это не влияет, но мешает поиску.
Переносятся ли присоединённые файлы и сканы?
Переносятся, если они хранятся в базе и вы отметили соответствующий справочник при выгрузке. Если файлы лежат в томах на диске, тома нужно скопировать отдельно и настроить в приёмнике.
Что делать, если загрузка прервалась на середине?
Восстановите копию приёмника из .dt и запустите загрузку заново. Догружать «с места обрыва» опасно: часть объектов уже записана, и вы не узнаете, какие.
Можно ли объединить две базы разных конфигураций, например УТ и Бухгалтерию?
Можно, но только через правила обмена, где описано, какой объект источника в какой объект приёмника превращается. Прямая XML-выгрузка тут не подходит: структуры метаданных разные.