Разделение базы 1С: по организациям, периодам и через XML
Содержание
Разделить базу 1С можно тремя рабочими путями: свернуть её по периоду (старые документы заменяются остатками на выбранную дату), выгрузить часть данных в новую базу через обработку «Выгрузка и загрузка данных XML» или сделать полную копию базы и удалить в ней лишние организации. Какой способ брать — зависит от задачи: уменьшить размер, вынести одну фирму в отдельную базу или перенести данные в другую систему.
Общий принцип один для всех методов: вы не режете работающую базу «по живому», а готовите источник, снимаете резервную копию и собираете результат в отдельной базе. Ниже — что именно делать на каждом шаге, чем методы отличаются и как проверить, что ничего не потерялось.
Когда базу нужно делить и с чего начать
Чаще всего к разделению приходят в четырёх ситуациях:
- 📦 база разрослась до десятков гигабайт, тормозит открытие списков и проведение;
- 🏢 в одной базе ведётся учёт нескольких организаций, и одну из них нужно вынести отдельно (продажа бизнеса, смена обслуживающей компании, разные бухгалтеры);
- 🗄 накопились закрытые годы, которые нужны только для архива;
- 🔀 данные переносят в другую конфигурацию или новую систему учёта.
Первый шаг во всех случаях одинаковый — снимите резервную копию базы до любых действий. В файловом варианте скопируйте файл 1Cv8.1CD при закрытой базе; в клиент-серверном выгрузите .dt через Конфигуратор (Администрирование → Выгрузить информационную базу) либо сделайте бэкап средствами СУБД.
Свёртка и удаление данных — операции необратимые. Любой метод сначала обкатывайте на копии базы, а не на рабочей.
Перед разделением стоит навести порядок в источнике: провести все документы, закрыть период (Операции → Закрытие месяца в типовой бухгалтерии), выполнить Тестирование и исправление в Конфигураторе и снять оборотно-сальдовую ведомость на дату разделения — она понадобится потом для сверки.
Способы разделения и чем они отличаются
У каждого метода своя цена и свои ограничения. Главное отличие — что именно вы получаете на выходе: уменьшенную исходную базу, точную копию без части организаций или новую базу с перенесённым срезом данных.
| Способ | Что делает | Когда брать | Риски |
|---|---|---|---|
| Свёртка по периоду | Заменяет старые документы остатками | Нужно сжать базу, все фирмы остаются | Теряется детализация старых лет |
| Копия + удаление организаций | Полная копия, лишние фирмы удалены | Вынести одну организацию | Долгое групповое удаление |
| Выгрузка/загрузка XML | Переносит отобранные объекты в другую базу | Та же конфигурация, перенос среза | Сложно с общими справочниками |
| Конвертация данных | Переносит по правилам между конфигурациями | Другая конфигурация | Трудоёмкая настройка правил |
Отдельно стоит распределённая информационная база (РИБ) — это не разделение, а синхронизация нескольких узлов одной базы. Если задача — чтобы филиалы работали автономно и обменивались данными, смотрите в сторону РИБ, а не разовой выгрузки.
💡 Для подразделений отдельной базы обычно не делают: подразделения живут внутри организации. Делят по организациям или по периодам, а аналитику по подразделениям оставляют внутри.
Перенос данных через выгрузку и загрузку XML
Это основной инструмент, когда база-источник и база-приёмник имеют одинаковую конфигурацию и совпадающую версию. Используется обработка «Выгрузка и загрузка данных XML», которая поставляется на диске ИТС как внешний файл .epf.
Порядок действий:
- Создайте пустую базу на той же конфигурации, что и источник (из шаблона или загрузкой чистой
.dt). - В базе-источнике откройте обработку через
Файл → Открытьи выберите файл обработки. - На закладке выгрузки задайте отбор: период, организацию, нужные справочники и документы. Начинайте с нормативно-справочной информации (контрагенты, номенклатура, договоры), затем документы.
- Выгрузите данные в файл XML.
- В базе-приёмнике откройте ту же обработку, перейдите на закладку загрузки и укажите полученный файл.
Обработка переносит объекты по ссылкам. Если выгрузить документы без связанных справочников, в приёмнике появятся «битые» ссылки. Поэтому справочники грузят первыми, документы — вторыми.
Главное ограничение метода — он не умеет «разрезать» общие данные. Номенклатура и контрагенты обычно общие для всех организаций, поэтому при выделении одной фирмы они всё равно перенесутся целиком. Для разового переноса среза данных это терпимо, для сложных случаев надёжнее метод с копией базы.
Свёртка базы по периодам: архив старых лет
Свёртка решает задачу размера: все документы до выбранной даты удаляются, а вместо них программа формирует документы ввода остатков на эту дату. Учёт за свежий период остаётся детальным, старый превращается в начальное сальдо.
Выполняется обработкой «Свертка информационной базы» (внешний файл с ИТС, открывается через Файл → Открыть). Типовой сценарий:
- Снимите копию и закройте все периоды до даты свёртки.
- Укажите дату свёртки (как правило — начало года) и организации.
- Запустите формирование документов ввода остатков — программа создаст их на дату свёртки.
- Сверьте остатки в сформированных документах с оборотно-сальдовой ведомостью на ту же дату, прежде чем удалять исходные документы.
- Пометьте на удаление документы закрываемого периода и удалите их через «Удаление помеченных объектов».
💡 Не удаляйте старые документы сразу. Сначала убедитесь, что остатки по счетам и регистрам совпали до копейки, и держите исходную копию базы — к ней всегда можно вернуться за первичкой за прошлые годы.
Свёртка не трогает справочники и настройки учётной политики — они остаются. Пропадает только детализация движений за свёрнутый период: вместо сотни накладных вы увидите один документ с остатками.
Чтобы после свёртки никто случайно не провёл документ задним числом в закрытый период, установите дату запрета изменения данных на дату свёртки. В типовых конфигурациях это настройка раздела администрирования в группе «Даты запрета изменения». Так свёрнутый период останется неприкосновенным, а остатки — согласованными с ведёнными далее документами.
Выделение одной организации в отдельную базу
Если из многофирменной базы нужно получить самостоятельную базу под одну организацию, самый предсказуемый способ — не собирать её по кусочкам, а идти от обратного:
- Сделайте полную копию базы (выгрузка
.dtи загрузка в новую базу). - В копии удалите ненужные организации: сначала пометьте на удаление их документы групповой обработкой с отбором по реквизиту «Организация», затем сами элементы справочника «Организации».
- Запустите «Удаление помеченных объектов» — контроль ссылок покажет, какие объекты ещё используются.
- Разберите список неудаляемых объектов: это и есть общие данные (контрагенты, номенклатура), которые остаются в базе.
Плюс подхода — в копии гарантированно сохраняются все связи, настройки, нумерация и учётная политика выделяемой фирмы. Минус — групповое удаление на большой базе идёт долго, иногда несколько часов, и его лучше запускать в монопольном режиме, когда пользователи не работают.
Отдельно проверьте в новой базе две вещи. Первое — нумерацию документов: после удаления чужих организаций номера не перескакивают, но если в старой базе была сквозная нумерация по всем фирмам, в новой стоит задать свою политику нумерации на будущее. Второе — права и настройки пользователей: учётные записи переносятся вместе с базой, поэтому лишних сотрудников из новой базы имеет смысл отключить, чтобы они не видели чужую фирму.
Прежде чем остановить работу пользователей для монопольного удаления, предупредите их заранее: во время операции сеансы в базу не пускаются, а прервать её на середине нельзя без риска получить несогласованные данные.
После удаления обязательно выполните Тестирование и исправление с пересчётом итогов — групповое удаление оставляет «дыры», которые пересчёт итогов регистров закрывает.
Разделение крупных баз: размер и производительность
Для баз в десятки гигабайт одной свёртки мало — упираются в саму платформу и способ хранения.
- 🗜 Файловый вариант. Практический потолок комфортной работы файловой базы — несколько гигабайт. Если база больше и тормозит, разделение по периоду стоит совмещать с переводом в клиент-серверный вариант на СУБД (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 с ключом вывода справки или откройте раздел о пакетном режиме в документации платформы.
Для регулярной архивной свёртки (например, раз в год) готовят отдельную процедуру и обязательно держат архивную копию «большой» базы до свёртки — она остаётся источником первички за прошлые периоды.
Любой пакетный запуск, который выгружает или меняет базу, захватывает её монопольно только на время операций со структурой; на время выгрузки планируйте окно, когда пользователи не работают, иначе задание не получит монопольный доступ и завершится с ошибкой.
Частые вопросы
Сохранятся ли связи между документами после разделения?
Нужна ли одинаковая конфигурация в источнике и приёмнике?
Что будет с общими справочниками — номенклатурой и контрагентами?
Можно ли снова объединить разделённые базы?
Уменьшится ли размер файла базы сразу после свёртки?
.dt и загрузите в чистую базу (файловый вариант) или сожмите средствами СУБД.