Одна база на две: как отделить организацию или период в 1С 8.3
Содержание
Разделить базу 1С проще всего так: сделать полную копию, а затем удалить в каждой из двух баз данные «чужой» организации или периода. Второй способ — завести пустую базу и перенести в неё только нужное через Конвертацию данных. Первый быстрее и сохраняет всю историю, второй даёт чистую базу без мусора.
Разделение базы 1С возможно и для файловой, и для клиент-серверной базы на MS SQL или PostgreSQL. Методы одинаковые, отличается только способ снять копию. Всё описанное относится к платформе 8.3 и типовым конфигурациям на БСП: Бухгалтерии 3.0, ЗУП 3.1, УТ 11.
Когда базу 1С разделяют и какой способ выбрать
Типичных поводов четыре:
- 🏢 в одной базе ведут несколько организаций, и одну продали, выделили или передали другому бухгалтеру;
- 🐢 база разрослась за много лет, и рабочие операции заметно тормозят;
- 🔒 доступ к данным одной фирмы нужно закрыть физически, а не правами;
- 📦 бизнес делится, и каждая часть уходит на свой сервер.
Выбор способа зависит от того, что важнее: сохранить историю или получить чистую базу.
| Способ | Когда подходит | Риски |
|---|---|---|
| Копия базы + удаление лишнего | Нужна вся история документов по оставшейся организации | Долгое удаление, остаются общие справочники «чужой» фирмы |
| Свёртка информационной базы | Делите по периодам: старые годы в архив, новые в рабочую | Документы до даты свёртки заменяются остатками |
| Пустая база + Конвертация данных | Нужна чистая база без старых документов или другая конфигурация | Нужны правила обмена, возможны расхождения остатков |
| Ограничение доступа без разделения | Задача только в том, чтобы разные люди не видели чужие данные | Не уменьшает размер базы |
Если цель — только скрыть данные одной фирмы от части пользователей, разделять базу не нужно: хватит ограничения доступа на уровне записей.
Подготовка к разделению базы 1С
Разделение — операция массовая и необратимая для копии. Подготовка занимает больше времени, чем сама техника.
- Согласуйте дату отсечения. Обычно это начало квартала или года, когда отчётность за прошлый период уже сдана.
- Закройте месяц в исходной базе: проведите документы, выполните закрытие месяца , сформируйте оборотно-сальдовую ведомость по каждой организации. Сохраните её в Excel — это эталон для сверки после разделения.
- Сделайте полную резервную копию. Для файловой базы — выгрузка
.dtили копия папки при закрытых сеансах. Для серверной — бэкап СУБД. - Выпишите внешние связи базы: обмен с банком, ЭДО, 1С-Отчётность, ЕГАИС и Честный знак, синхронизация с сайтом или розницей. После копирования эти связи окажутся в двух базах сразу.
- Проверьте место на диске. На время работы нужно примерно втрое больше объёма исходной базы: оригинал, копия и временные файлы.
Работайте только с копией. Исходную базу не трогайте, пока новая не сверена и не принята бухгалтером.
Как не запустить обмены дважды
Копия базы «думает», что она и есть рабочая. Она может выгрузить платёжки в банк, отправить отчёт или забрать документы из ЭДО.
В типовых конфигурациях на БСП при открытии базы по новому адресу появляется окно с вопросом: база перемещена или это копия. Выбирайте вариант про копию — программа заблокирует работу с внешними ресурсами. Для серверной базы дополнительно включите флажок Блокировка регламентных заданий в свойствах информационной базы в консоли кластера.
Разделение файловой базы 1С: копия и удаление лишнего
Файловую базу разделяют целиком средствами самой 1С. Порядок такой.
Шаг 1. Создайте копию
- Откройте исходную базу в Конфигураторе.
- Выберите
Администрирование → Выгрузить информационную базуи сохраните файл.dt. - В окне запуска 1С добавьте новую пустую базу без конфигурации, в другом каталоге.
- Откройте её в Конфигураторе и выполните
Администрирование → Загрузить информационную базу, указав сохранённый.dt.
Загрузка .dt полностью заменяет данные в базе-приёмнике. Поэтому грузите только в новую пустую базу, а не в существующую.
Шаг 2. Пометьте на удаление данные «чужой» организации
Откройте копию в режиме 1С:Предприятие. Затем по очереди в журналах документов:
- Установите отбор по полю «Организация» на ту фирму, которая уходит из этой базы.
- Выделите все строки (
Ctrl+A) и нажмитеDelete— документы получат пометку удаления. - Повторите для каждого вида документов: банк и касса, покупки, продажи, склад, зарплата, кадровые документы.
Удобнее идти через Все функции: там видны все виды документов списком, и ни один не потеряется. Если команда скрыта, включите в главном меню Сервис → Параметры флажок «Отображать команду Все функции».
Организацию, договоры с её участием, банковские счета фирмы тоже пометьте на удаление. Общих контрагентов и номенклатуру не трогайте — их используют документы оставшейся фирмы.
Шаг 3. Удалите помеченные объекты
В Бухгалтерии 3.0 обработка находится в Администрирование → Обслуживание → Удаление помеченных объектов. Запустите её в режиме полного удаления.
На крупной базе процедура идёт часами. Лучше запускать вечером, когда в копии никто не работает .
Объекты, на которые остались ссылки, обработка не удалит и покажет список «мешающих». Чаще всего это забытый вид документа или регламентный отчёт. Пометьте его и запустите удаление ещё раз.
Шаг 4. Почистите базу и проверьте
- В Конфигураторе выполните
Администрирование → Тестирование и исправлениес пересчётом итогов. Для этого нужен монопольный доступ: все пользователи должны выйти из копии. - Сформируйте оборотно-сальдовую ведомость по оставшейся организации и сравните с эталоном из подготовки. Суммы должны совпасть до копейки.
- Сделайте то же в исходной базе, но наоборот: удалите оставшуюся в копии фирму.
Копия клиент-серверной базы средствами MS SQL и PostgreSQL
Для серверной базы шаг «копия» можно сделать средствами СУБД — это быстрее выгрузки .dt на базах в десятки гигабайт. Удаление лишних данных всё равно выполняют в 1С.
Не удаляйте данные одной организации SQL-запросами напрямую. Платформа хранит связи между таблицами, итоги регистров и служебные данные. Ручной DELETE по таблицам ломает целостность, а последствия всплывают в отчётах через месяц.
Копия в MS SQL Server
Перед восстановлением узнайте логические имена файлов бэкапа:
BACKUP DATABASE [buh] TO DISK = N'D:\Backup\buh.bak' WITH COPY_ONLY;
RESTORE FILELISTONLY FROM DISK = N'D:\Backup\buh.bak';
RESTORE DATABASE [buh_orgB]
FROM DISK = N'D:\Backup\buh.bak'
WITH MOVE N'buh' TO N'D:\Data\buh_orgB.mdf',
MOVE N'buh_log' TO N'D:\Data\buh_orgB_log.ldf';
Имена buh и buh_log в MOVE замените на те, что вернул RESTORE FILELISTONLY. Параметр COPY_ONLY не сбивает цепочку регулярных резервных копий.
Копия в PostgreSQL
pg_dump -U postgres -Fc -f D:\Backup\buh.dump buh
createdb -U postgres -T template0 buh_orgb
pg_restore -U postgres -d buh_orgb D:\Backup\buh.dump
Формат -Fc сжимает дамп и позволяет восстанавливать его выборочно. Если createdb ругается на кодировку или локаль, создайте новую пустую базу через консоль кластера 1С и восстановите дамп уже в неё.
Регистрация копии в кластере
- Откройте консоль администрирования серверов 1С.
- В разделе информационных баз создайте новую базу.
- Укажите сервер СУБД и имя восстановленной базы данных:
buh_orgB. - Сразу включите
Блокировка регламентных заданий. - Добавьте базу в список у пользователей и дальше действуйте как с файловой: шаги 2–4 из предыдущего раздела.
Регистрация в кластере не создаёт данные заново: если база в СУБД уже существует, 1С подключается к ней.
Перенос данных в новую базу через Конвертацию данных 2.0 и 3.0
Второй путь — не чистить копию, а наполнить пустую базу только нужным. Так делают, когда старые документы не нужны, когда в исходной базе много ошибок или когда новая база — другая конфигурация.
Конвертация данных 2.0
Работает через правила обмена в файле .xml и обработку «Универсальный обмен данными в формате XML» (.epf). Обработку запускают через Файл → Открыть в обеих базах.
- В исходной базе загрузите правила, задайте отбор по организации и период.
- Выгрузите данные в файл.
- В новой базе той же обработкой загрузите файл.
Для обмена между одинаковыми конфигурациями правила готовят в конфигурации «Конвертация данных 2.0» или берут из комплекта поставки. Под нетиповую базу правила придётся дорабатывать.
Конвертация данных 3.0 и формат EnterpriseData
КД 3.0 описывает обмен через универсальный формат EnterpriseData. Типовые конфигурации уже содержат его поддержку: в Бухгалтерии 3.0 настройки синхронизации находятся в Администрирование → Синхронизация данных.
Для разовой выгрузки удобен обмен через файл: выбрать объекты, период и организацию, выгрузить, загрузить в приёмник. Справочники подтянутся по ссылкам из документов.
Перенос только остатков
Самый лёгкий вариант для новой базы — завести остатки на дату отсечения. Документы до этой даты остаются в старой базе, которая становится архивом. Остатки вводят обработкой ввода начальных остатков или переносят теми же правилами конвертации.
| Что переносить | Плюс | Минус |
|---|---|---|
| Только остатки | Чистая маленькая база, быстро | Нельзя сформировать отчёт за прошлые годы |
| Остатки + документы текущего года | Можно сдать годовую отчётность | Нужна сверка оборотов |
| Вся история организации | Полная картина в одной базе | Долго, проще копией с удалением |
Разделение базы 1С по периодам: свёртка
Когда делят не организации, а годы, в Бухгалтерии 3.0 есть штатный инструмент — свёртка информационной базы. Её ищите в разделе Администрирование → Обслуживание.
Свёртка удаляет документы до выбранной даты и вводит вместо них остатки. Получается:
- 🗄 исходная база до свёртки — архив с полной историей;
- ⚡ свёрнутая копия — рабочая база, где старых документов нет.
Свёртку запускайте только на копии, а архив сохраните в отдельной папке или на сервере. Права в архиве лучше сделать «только чтение», чтобы никто не правил закрытые периоды.
Если разделять не обязательно: ограничение доступа
Часто под «разделить базу» понимают «чтобы бухгалтер фирмы А не видел фирму Б». Это решается без копий.
В Бухгалтерии 3.0 включите Администрирование → Настройки пользователей и прав → Ограничивать доступ на уровне записей. После этого в группах доступа можно указать, какие организации видны каждой группе.
Плюсы: одна база, общие справочники, одно обновление. Минусы: размер базы не уменьшится, а на больших базах ограничение на уровне записей немного замедляет работу.