Разделение базы 1С: по организациям, периодам и через XML

· 9 мин

Содержание

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

Общий принцип один для всех методов: вы не режете работающую базу «по живому», а готовите источник, снимаете резервную копию и собираете результат в отдельной базе. Ниже — что именно делать на каждом шаге, чем методы отличаются и как проверить, что ничего не потерялось.

Когда базу нужно делить и с чего начать

Чаще всего к разделению приходят в четырёх ситуациях:

  • 📦 база разрослась до десятков гигабайт, тормозит открытие списков и проведение;
  • 🏢 в одной базе ведётся учёт нескольких организаций, и одну из них нужно вынести отдельно (продажа бизнеса, смена обслуживающей компании, разные бухгалтеры);
  • 🗄 накопились закрытые годы, которые нужны только для архива;
  • 🔀 данные переносят в другую конфигурацию или новую систему учёта.

Первый шаг во всех случаях одинаковый — снимите резервную копию базы до любых действий. В файловом варианте скопируйте файл 1Cv8.1CD при закрытой базе; в клиент-серверном выгрузите .dt через Конфигуратор (Администрирование → Выгрузить информационную базу) либо сделайте бэкап средствами СУБД.

Свёртка и удаление данных — операции необратимые. Любой метод сначала обкатывайте на копии базы, а не на рабочей.

Перед разделением стоит навести порядок в источнике: провести все документы, закрыть период (Операции → Закрытие месяца в типовой бухгалтерии), выполнить Тестирование и исправление в Конфигураторе и снять оборотно-сальдовую ведомость на дату разделения — она понадобится потом для сверки.

Какой способ разделения выбрать?

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

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

СпособЧто делаетКогда братьРиски
Свёртка по периодуЗаменяет старые документы остаткамиНужно сжать базу, все фирмы остаютсяТеряется детализация старых лет
Копия + удаление организацийПолная копия, лишние фирмы удаленыВынести одну организациюДолгое групповое удаление
Выгрузка/загрузка XMLПереносит отобранные объекты в другую базуТа же конфигурация, перенос срезаСложно с общими справочниками
Конвертация данныхПереносит по правилам между конфигурациямиДругая конфигурацияТрудоёмкая настройка правил

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

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

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

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

Порядок действий:

  1. Создайте пустую базу на той же конфигурации, что и источник (из шаблона или загрузкой чистой .dt).
  2. В базе-источнике откройте обработку через Файл → Открыть и выберите файл обработки.
  3. На закладке выгрузки задайте отбор: период, организацию, нужные справочники и документы. Начинайте с нормативно-справочной информации (контрагенты, номенклатура, договоры), затем документы.
  4. Выгрузите данные в файл XML.
  5. В базе-приёмнике откройте ту же обработку, перейдите на закладку загрузки и укажите полученный файл.

Обработка переносит объекты по ссылкам. Если выгрузить документы без связанных справочников, в приёмнике появятся «битые» ссылки. Поэтому справочники грузят первыми, документы — вторыми.

Главное ограничение метода — он не умеет «разрезать» общие данные. Номенклатура и контрагенты обычно общие для всех организаций, поэтому при выделении одной фирмы они всё равно перенесутся целиком. Для разового переноса среза данных это терпимо, для сложных случаев надёжнее метод с копией базы.

Свёртка базы по периодам: архив старых лет

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

Выполняется обработкой «Свертка информационной базы» (внешний файл с ИТС, открывается через Файл → Открыть). Типовой сценарий:

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

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

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

Чтобы после свёртки никто случайно не провёл документ задним числом в закрытый период, установите дату запрета изменения данных на дату свёртки. В типовых конфигурациях это настройка раздела администрирования в группе «Даты запрета изменения». Так свёрнутый период останется неприкосновенным, а остатки — согласованными с ведёнными далее документами.

Выделение одной организации в отдельную базу

Если из многофирменной базы нужно получить самостоятельную базу под одну организацию, самый предсказуемый способ — не собирать её по кусочкам, а идти от обратного:

  1. Сделайте полную копию базы (выгрузка .dt и загрузка в новую базу).
  2. В копии удалите ненужные организации: сначала пометьте на удаление их документы групповой обработкой с отбором по реквизиту «Организация», затем сами элементы справочника «Организации».
  3. Запустите «Удаление помеченных объектов» — контроль ссылок покажет, какие объекты ещё используются.
  4. Разберите список неудаляемых объектов: это и есть общие данные (контрагенты, номенклатура), которые остаются в базе.

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

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

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

После удаления обязательно выполните Тестирование и исправление с пересчётом итогов — групповое удаление оставляет «дыры», которые пересчёт итогов регистров закрывает.

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

Для баз в десятки гигабайт одной свёртки мало — упираются в саму платформу и способ хранения.

  • 🗜 Файловый вариант. Практический потолок комфортной работы файловой базы — несколько гигабайт. Если база больше и тормозит, разделение по периоду стоит совмещать с переводом в клиент-серверный вариант на СУБД (PostgreSQL или MS SQL).
  • 🧮 Проверка целостности. Перед работой с большой файловой базой прогоните утилиту chdbfl.exe — она чинит физические ошибки файла .CD, которые иначе всплывут при выгрузке.
  • 🧹 Чистка перед выгрузкой. Удалите старые версии объектов (если ведётся история изменений), очистите журнал регистрации и пометьте на удаление неиспользуемые элементы — это заметно уменьшает размер выгрузки.
  • ⏱ Время операций. Выгрузку, загрузку и групповое удаление на большой базе планируйте на нерабочее время: это самые долгие операции.

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

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

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

  • Остатки по счетам. Сформируйте оборотно-сальдовую ведомость на дату разделения в исходной и новой базе — сальдо по ключевым счетам (01, 10, 41, 60, 62, 76, 51) должны совпадать с той ОСВ, что вы сняли до начала.
  • Обороты за свежий период. В базе, куда перенесли данные, сверьте обороты по тем же счетам за контрольный месяц.
  • Количество документов. Сравните число проведённых документов по видам — расхождение покажет, что часть не перенеслась или не провелась.
  • Взаиморасчёты. Проверьте остатки по контрагентам: это первое, что «разъезжается» при неполном переносе справочников.
  • Перепроведение. В новой базе перепроведите документы контрольного периода и убедитесь, что движения формируются без ошибок.

💡 Удобно использовать штатный отчёт «Анализ учёта» или экспресс-проверку ведения учёта, если они есть в вашей конфигурации, — они быстро показывают явные несоответствия по разделам.

Автоматизация выгрузок и регулярное обслуживание

Само разделение — разовая операция, её автоматизируют редко. А вот то, что вокруг него, автоматизировать стоит, чтобы не делать руками каждый раз.

Резервные копии удобно снимать в пакетном режиме Конфигуратора по расписанию. Выгрузка базы в файл .dt запускается командой вида:

"C:\Program Files\1cv8\...\bin\1cv8.exe" DESIGNER /F"путь_к_базе" /DumpIB "C:\Backup\base.dt"

Эту команду вешают на планировщик задач Windows или в cron на сервере. Точный список параметров командной строки смотрите в справке — запустите 1cv8.exe с ключом вывода справки или откройте раздел о пакетном режиме в документации платформы.

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

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

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

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