Разделение баз 1С:Предприятие — задача, с которой рано или поздно сталкивается любой администратор или разработчик. Причины могут быть разными: от оптимизации производительности до выделения отдельного подразделения в самостоятельную структуру. Однако неправильный подход чреват потерей данных, нарушением целостности или длительными простоями системы. Эта статья поможет разобраться, как грамотно разделить базу без рисков, используя встроенные и сторонние инструменты.
Основная сложность заключается в том, что 1С не предоставляет универсального механизма для разделения — каждый случай требует индивидуального подхода. Здесь важно учитывать версию платформы, конфигурацию (например, 1С:Бухгалтерия 3.0, 1С:Управление торговлей 11 или 1С:ERP), объём данных и даже специфику бизнес-процессов компании. Мы рассмотрим все актуальные методы: от ручного выгрузки/загрузки до специализированных обработок и скриптов.
Прежде чем приступить, ответьте себе на ключевой вопрос: что именно нужно разделить? Это может быть выделение данных по периодам (например, архив за прошлые годы), по подразделениям (филиалы, магазины), по видам документов (только кадровый учёт) или даже по юридическим лицам. От этого зависит выбор инструмента и алгоритм действий.
1. Подготовка к разделению базы: анализ и резервное копирование
Первый и самый критичный этап — аудит текущей базы. Без него любые манипуляции с данными могут привести к непредсказуемым последствиям. Начните с ответа на вопросы:
- 📊 Какие объекты метаданных задействованы? (Справочники, документы, регистры, отчёты.)
- 🔗 Есть ли внешние интеграции? (Обмен с сайтом, банком, ЕГАИС, другими системами.)
- 📅 Нужно ли сохранять историю или достаточно текущих остатков?
- 👥 Кто будет работать с новой базой? (Права доступа, роли.)
Используйте встроенный отчёт Анализ использования объектов метаданных (доступен в Конфигураторе через меню Отчёты → Стандартные отчёты). Он покажет, какие справочники и документы активно используются, а какие можно исключить из выгрузки. Также обязательно проверьте ссылки между объектами — например, если в документе "Реализация товаров" есть ссылка на справочник "Контрагенты", то при разделе нужно убедиться, что все связанные контрагенты будут перенесены в новую базу.
🔴 Критическая ошибка: многие администраторы упускают из виду регистры накопления и бухгалтерские итоги. Если не перенести их корректно, в новой базе могут оказаться неверные остатки или отсутствовать движения по документам. Например, при разделе торговой базы по магазинам необходимо перенести не только документы "Поступление товаров", но и остатки по регистру ТоварыНаСкладах на дату разделения.
⚠️ Внимание: Если база используется в 1С:ERP или 1С:Управление холдингом, проверьте настройки распределённой информационной базы (РИБ). Возможно, вместо разделения достаточно настроить синхронизацию между узлами.
2. Методы разделения баз 1С: плюсы и минусы каждого
Существует несколько основных подходов к разделу баз. Выбор зависит от задачи, технических возможностей и бюджета. Рассмотрим каждый из них:
| Метод | Когда использовать | Плюсы | Минусы |
|---|---|---|---|
| Ручная выгрузка/загрузка (через XML, DT, CF) | Небольшие базы, простые структуры | Не требует дополнительных инструментов, полный контроль | Трудоёмко, высокий риск ошибок |
| Специализированные обработки (например, "ВыгрузкаЗагрузкаДанныхXML", "Универсальный обмен данными") | Средние базы, типичные задачи (выделение филиала, архив) | Автоматизация, поддержка большинства конфигураций | Ограниченная гибкость, возможны проблемы с ссылками |
| Скрипты на встроенном языке (1C:Enterprise) | Сложные условия разделения, нестандартные задачи | Максимальная гибкость, точность | Требует знаний программирования, долго |
| Сторонние утилиты (например, 1C:DataSeparator, Infostart Unload) | Крупные базы, регулярные разделения | Высокая скорость, минимальные риски | Платные решения, возможны ограничения по версиям |
Для большинства задач оптимальным решением станут специализированные обработки. Например, стандартная обработка ВыгрузкаЗагрузкаДанныхXML.epf (поставляется с платформой) позволяет гибко настроить правила выгрузки: выбрать конкретные справочники, документы за период, а также указать, нужно ли выгружать связанные объекты. Однако у неё есть ограничение: она не сохраняет последовательность документов, что может привести к ошибкам при загрузке в новую базу.
Если требуется разделить базу по юридическим лицам или подразделениям, обратите внимание на обработку "Универсальный обмен данными" от 1С. Она поддерживает фильтрацию по реквизитам (например, по полю "Организация" в документах) и сохраняет целостность ссылок. Для сложных случаев (например, разделение 1С:ERP с учётом производственных процессов) может потребоваться доработка скриптов.
Перед использованием любой обработки протестируйте её на копии рабочей базы. Даже стандартные инструменты могут вести себя непредсказуемо при нетипичных данных.
3. Пошаговая инструкция: разделение базы через XML
Рассмотрим самый универсальный метод — выгрузку и загрузку данных в формате XML. Он подходит для большинства конфигураций и не требует дополнительных затрат. Инструкция актуальна для 1С:Предприятие 8.3 и выше.
Шаг 1. Подготовка правил выгрузки
- Откройте Конфигуратор и перейдите в
Файл → Открыть..., выберите вашу базу. - Запустите обработку
ВыгрузкаЗагрузкаДанныхXML.epf(находится в каталоге платформы, например,C:\Program Files\1cv8\8.3.x.x\bin\). - В окне обработки нажмите
Загрузить правилаи выберите шаблон для вашей конфигурации (например,БухгалтерияEnterprise.xml).
Шаг 2. Настройка фильтров
- 📌 В разделе
Объектыотметьте галочками справочники и документы, которые нужно перенести. - 📅 Для документов укажите период (например, с
01.01.2023по31.12.2023). - 🔗 Включите опцию
Выгружать связанные объекты, чтобы избежать битых ссылок.
Шаг 3. Выгрузка и загрузка
- Нажмите
Выгрузить данныеи сохраните файл (например,Export_2023.xml). - Создайте новую базу через
Конфигуратор(Файл → Новая информационная база). - В новой базе откройте ту же обработку, нажмите
Загрузить данныеи выберите сохранённый файл.
⚠️ Типичная проблема: при загрузке могут возникнуть ошибки вида "Объект не найден: Справочник.Контрагенты.Атрибут". Это означает, что в новой базе отсутствует справочник или его структура отличается. Решение — предварительно создать все необходимые объекты метаданных вручную или через cf-файл.
Убедитесь, что версии платформы в старой и новой базе совпадают|
Сравните структуры метаданных (через Конфигуратор → Сравнить конфигурации)|
Проверьте свободное место на диске (XML-файл может весить в 2–3 раза больше исходной базы)|
Отключите антивирус на время загрузки (он может блокировать крупные файлы)
-->
4. Разделение базы по периодам: архивирование данных
Один из самых распространённых сценариев — выделение архивных данных за прошлые годы. Это позволяет уменьшить размер рабочей базы и ускорить её работу. Например, если в 1С:Бухгалтерии накопилось 10 лет документов, можно перенести данные старше 3 лет в отдельную базу.
Для этого подходит стандартный механизм "Выгрузка данных по периодам":
- В Конфигураторе откройте
Администрирование → Выгрузка данных. - Выберите тип выгрузки
По периодами укажите дату раздела (например,31.12.2020). - Отметьте галочками объекты для архивации (обычно это документы, регистры накопления и бухгалтерские итоги).
- Нажмите
Выгрузитьи сохраните файл в формате.dt.
🔹 Нюанс: при таком разделе в рабочей базе остаются только остатки на дату раздела, а сами документы удаляются. Если нужно сохранить возможность просмотра архивных документов, используйте двойную выгрузку:
- Сначала выгрузите всю базу в архивную копию.
- Затем удалите документы старше даты раздела из рабочей базы через обработку
ПомаркаУдалениеДокументов.epf.
Важно: после разделения по периодам обязательно перепроведите бухгалтерские итоги в рабочей базе. Используйте отчёт "Анализ состояния бухгалтерского учёта" (Отчёты → Стандартные → Бухгалтерский учёт), чтобы убедиться в корректности остатков.
Что делать, если после архивации не совпадают остатки?
Если остатки в рабочей базе не сходятся с архивной, проверьте:
1. Регистры бухгалтерии — возможно, не все движения были учтены при разделе.
2. Периодические реквизиты (например, курсы валют) — они могли не перенестись корректно.
3. Документы вне периода — иногда пользователи вводят документы задним числом, что сбивает остатки.
Для исправления используйте обработку Корректировка остатков.epf (доступна на портале 1С:ИТС).
5. Разделение по организациям или подразделениям
Если задача — выделить данные по конкретной организации (например, для передачи филиала в отдельную компанию), алгоритм будет иным. Здесь важно сохранить все связанные объекты: контрагентов, номенклатуру, документы и даже пользователей с правами.
Лучше всего использовать обработку "Универсальный обмен данными":
- В настройках обмена укажите фильтр по реквизиту
Организация(например,ООО "Филиал-1"). - Добавьте в правила выгрузки все зависимые справочники (например,
Контрагенты,Договоры,Склады). - Для документов настройте фильтр по организации и периоду (например, все документы за 2023 год).
- Выполните выгрузку и загрузку в новую базу.
⚠️ Критическая деталь: при таком разделе могут остаться "висячие" ссылки на объекты, которые не попали в фильтр. Например, если в документе "Реализация" есть ссылка на Склад, принадлежащий другой организации, при загрузке в новую базу этот склад будет отсутствовать. Решение — либо выгружать все связанные объекты, либо заменять ссылки на аналогичные в новой базе.
Для автоматизации этого процесса можно использовать скрипт на встроенном языке:
Процедура ЗаменитьСсылкиНаСклады()
Выборка = Документы.РеализацияТоваровУслуг.Выбрать();
Пока Выборка.Следующий() Цикл
Если Выборка.Склад.Организация <> НужнаяОрганизация Тогда
Выборка.Склад = НайтиАналогСклада(Выборка.Склад);
Выборка.Записать();
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Где НайтиАналогСклада() — функция, которая ищет склад с аналогичным названием в новой организации. Готовые обработки для таких замен можно найти на Инфостарте или 1С:ИТС.
При разделе по организациям обязательно перенесите права доступа пользователей. Используйте обработку ВыгрузкаПользователей.epf, чтобы не настраивать роли заново.
6. Разделение крупных баз: инструменты и оптимизация
Если объём базы превышает 50 ГБ, стандартные методы могут не сработать из-за ограничений по памяти или времени выполнения. В таких случаях применяют:
- 🛠️ Сторонние утилиты:
- 1C:DataSeparator — плагин для 1С:Предприятие, поддерживает многопоточную выгрузку.
- Infostart Unload — позволяет разделять базы по сложным критериям (например, по нескольким организациям одновременно).
- 📦 Поэтапное разделение:
- Сначала выгрузите справочники.
- Затем — документы за первый год.
- Повторите для каждого года отдельно.
- 🖥️ Использование SQL (для опытных администраторов):
- Прямой экспорт таблиц из базы 1С в SQL Server или PostgreSQL.
- Фильтрация данных на уровне запросов.
Для работы с SQL потребуется доступ к серверу баз данных. Например, если 1С работает на Microsoft SQL Server, можно выполнить запрос вида:
SELECT * FROM _Document123
WHERE Date >= '2023-01-01' AND OrgRef = 'ID_Организации'
где _Document123 — таблица с документами, а OrgRef — ссылка на организацию.
⚠️ Предупреждение: прямой доступ к SQL-таблицам 1С может нарушить целостность данных. Используйте этот метод только если уверены в своих навыках или под руководством специалиста. Рекомендуется предварительно сделать полный бэкап через SQL Server Management Studio.
Для баз на PostgreSQL (например, при использовании 1С:Linux) подойдёт утилита pg_dump с фильтрацией:
pg_dump -t "_Document*" -d "DatabaseName" -f output.sql
где -t "_Document*" выгружает только таблицы с документами.
7. Проверка результатов и устранение ошибок
После разделения базы необходимо выполнить комплексную проверку. Начните с следующего:
- Сверка остатков: сравните сальдо по счетам бухгалтерского учёта в старой и новой базе на дату раздела. Используйте отчёт
Оборотно-сальдовая ведомость. - Проверка ссылочной целостности: запустите тест через
Конфигуратор → Администрирование → Тестирование и исправление. Обратите внимание на ошибки вида"Найдена битая ссылка". - Тестирование бизнес-процессов: создайте тестовые документы в новой базе (например, "Реализация товаров") и убедитесь, что они проводятся без ошибок.
- Проверка интеграций: если база взаимодействует с внешними системами (например, ЕГАИС или Диадок), выполните тестовый обмен.
🔴 Типичные ошибки после разделения:
- 🔸 Несовпадение итогов: чаще всего возникает из-за неполной выгрузки регистров накопления. Решение — повторить выгрузку с включёнными регистрами.
- 🔸 Ошибки при проведении документов: проверьте, перенесены ли все необходимые справочники (например,
Ставки НДС,Вид операции). - 🔸 Проблемы с правами доступа: если пользователи не видят данные, проверьте роли в новой базе через
Администрирование → Пользователи.
Если обнаружены критические ошибки (например, не проводятся документы), воспользуйтесь журналом регистрации (Администрирование → Журнал регистрации). Ищите записи с уровнем Ошибка — они укажут на проблемный объект или модуль.
После успешного разделения обновите регламентные задания в новой базе (например, резервное копирование, обмен с банком). Они не переносятся автоматически!
8. Автоматизация разделения: скрипты и регламентные процедуры
Если разделение баз происходит регулярно (например, ежегодное архивирование), имеет смысл автоматизировать процесс. Для этого можно:
- 🤖 Создать обработку с графическим интерфейсом:
- На основе стандартной
ВыгрузкаЗагрузкаДанныхXMLдоработать форму с предопределёнными настройками. - Добавить возможность сохранения профилей (например, "Архив 2023", "Филиал Москва").
- На основе стандартной
- ⏰ Настроить регламентное задание:
- В Конфигураторе создайте задание (
Администрирование → Регламентные задания). - Укажите расписание (например, ежегодно 1 января) и скрипт для выгрузки.
- В Конфигураторе создайте задание (
- 📜 Использовать 1С:EDT (Enterprise Development Tools):
- Для сложных сценариев (например, разделение 1С:ERP с учётом производственных заказов) пишутся специализированные расширения.
Пример скрипта для автоматической архивации данных старше 3 лет:
Процедура АрхивироватьСтарыеДанные()
ДатаРаздела = ТекущаяДата() - 365 * 3; // 3 года назад
ПравилаОбмена = Новый ПравилаОбменаДанными;
ПравилаОбмена.ДобавитьОбъект("Документ.ПоступлениеТоваров", Истина, ДатаРаздела);
ПравилаОбмена.ДобавитьОбъект("Документ.РеализацияТоваров", Истина, ДатаРаздела);
// ... другие документы
ВыгрузкаДанныхXML.Выгрузить(ПравилаОбмена, "Архив_" + Формат(ТекущаяДата(), "ДФ=yyyyMMdd") + ".xml");
КонецПроцедуры
Для запуска по расписанию добавьте это в регламентное задание:
Параметры = Новый Структура();
Параметры.Вставить("ИмяПроцедуры", "АрхивироватьСтарыеДанные");
Планировщик.ДобавитьЗадание("Архивация", Тип("КаталогИБ.АрхивироватьСтарыеДанные"), Параметры, Ложь, Дата(2026,1,1), 365);
🔹 Совет: если разделение выполняется часто, храните шаблоны правил обмена в отдельном каталоге. Это сэкономит время на настройку. Также полезно вести журнал разделения (например, в виде документа РегистрацияИзменений), где фиксируются даты, объёмы данных и ответственные лица.
FAQ: Частые вопросы по разделу баз 1С
🔹 Можно ли разделить базу 1С:Зарплата и управление персоналом по сотрудникам?
Да, но с оговорками. В 1С:ЗУП данные тесно связаны (например, начисления зависят от справочника ФизическиеЛица и документа ПриёмНаРаботу). Используйте обработку ВыгрузкаЗагрузкаДанныхXML с фильтром по реквизиту Сотрудник.Подразделение. Обратите внимание на перенос регистра накопления "Зарплата" — без него расчёты в новой базе будут некорректны.
🔹 Как разделить базу 1С:Управление торговлей 11 по магазинам?
Для 1С:УТ 11 подходит метод разделения по складам (они привязаны к магазинам). В правила обмена включите:
- Справочник
Склады(с фильтром по нужному магазину). - Документы
ПоступлениеТоваров,РеализацияТоваров(с фильтром по складу). - Регистры
ТоварыНаСкладахиПартииТоваров.
После разделения проверьте остатки через отчёт Ведомость по товарам на складах.
🔹 Что делать, если после разделения не открывается новая база?
Причины могут быть разные:
- Повреждение файла: попробуйте восстановить базу через
chdbfl.exe(утилита из комплекта 1С). - Несовместимость версий: проверьте, что версия платформы в новой базе не ниже, чем в старой.
- Ошибки в метаданных: сравните конфигурации через
Конфигуратор → Сравнить конфигурации.
Если база не открывается даже в Конфигураторе, попробуйте создать новую базу и загрузить в неё данные через XML или DT.
🔹 Как разделить базу, если в ней используется РИБ (распределённая информационная база)?
Если база является узлом РИБ, разделение выполняется иначе:
- Остановите обмен данными через
Администрирование → Распределённая информационная база → Остановить обмен. - Выполните разделение стандартными методами (например, через
XML). - Настройте новый узел РИБ для выделенной базы через
Администрирование → Распределённая информационная база → Настроить узлы.
🔴 Важно: не удаляйте старый узел РИБ до полной проверки новой базы. В противном случае может нарушиться синхронизация с другими узлами.
🔹 Можно ли разделить базу 1С:Бухгалтерия 3.0 по счетам бухгалтерского учёта?
Технически возможно, но крайне не рекомендуется. Счета бухгалтерского учёта тесно связаны между собой (например, проводка Дт 60 Кт 51 затрагивает два счета). Если разделить базу по счетам, нарушится двойная запись, и итоги будут некорректны. Вместо этого:
- Разделяйте по организациям (если ведётся учёт по нескольким юрлицам).
- Или по периодам (архивирование старых данных).