Как создать чистую базу 1С:ЗГУ с сохранением настроек, организаций и пользователей

Программист
← На главную

В практике администрирования 1С часто возникает задача: создать «клон» существующей базы (например, 1С:Зарплата и кадры государственного учреждения 3.1), в которой должны остаться все ключевые настройки учета, справочники организаций, подразделений и пользователей, но при этом полностью отсутствовать документы (движения). Это может потребоваться для начала учета «с чистого листа», создания тестового полигона или разделения учета по разным базам.

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

Способ №1: Копирование базы и программная очистка документов

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

Шаг 1. Создание копии. Первым делом создадим копию информационной базы. Никогда не проводите подобные операции в «живой» рабочей базе, так как процесс удаления необратим.

Шаг 2. Программное удаление. Чтобы удалить документы максимально быстро и эффективно, нам потребуется написать небольшую обработку. Разберем по шагам, почему нельзя просто пометить всё на удаление через интерфейс. Если документов сотни тысяч, стандартное удаление помеченных объектов может занять несколько суток из-за проверки ссылочной целостности.

Проанализируем пример кода, который позволяет обойти стандартные проверки при записи и удалении, используя свойство ОбменДанными.Загрузка. Это критически важно, так как при значении Истина система отключает выполнение процедур ПередЗаписью и ПриЗаписи, что предотвращает выполнение лишних расчетов и проверок.


Для Каждого МетаДокумент Из Метаданные.Документы Цикл
    Выборка = Документы[МетаДокумент.Имя].Выбрать();
    Пока Выборка.Следующий() Цикл
        Объект = Выборка.ПолучитьОбъект();
        Объект.ОбменДанными.Загрузка = Истина;
        Попробовать
            Объект.Удалить();
        Исключение
            Сообщить("Не удалось удалить: " + Объект);
        КонецПопытки;
    КонецЦикла;
КонецЦикла;

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

Способ №2: Использование обработки «Выгрузка и загрузка данных XML»

Если вы хотите получить действительно «стерильную» базу без лишних записей в служебных таблицах, рекомендуем рассмотреть вариант переноса данных из старой базы в новую пустую конфигурацию той же версии.

Рассмотрим алгоритм работы с этим инструментом:

  1. Развернем абсолютно пустую базу 1С из шаблона той же версии конфигурации ЗГУ 3.1.
  2. В рабочей базе откроем универсальную обработку ВыгрузкаЗагрузкаДанныхXML.epf (её можно найти на диске ИТС или в составе инструментов разработчика).
  3. В списке объектов отметим только те, которые нам нужны: Константы (в них хранятся настройки учета), все Справочники (Организации, Сотрудники, Подразделения, Пользователи, Должности) и Регистры сведений (Учетная политика, Настройки расчета зарплаты).
  4. Снимем галочки со всех объектов типа Документ и Регистр накопления / расчета.
  5. Выгрузим данные в файл и загрузим их в пустую базу.

Этот метод гарантирует отсутствие «битых ссылок» и «хвостов» в базе, так как вы переносите только то, что явно выбрали. Однако будьте осторожны: если в справочнике есть реквизиты, ссылающиеся на документы (например, «Документ-основание» в каком-то специфичном регистре), эти ссылки в новой базе станут «объектами не найдено».

Способ №3: Встроенный механизм «Свертка информационной базы»

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

Проанализируем, как это сделать: Если установить дату свертки на максимально позднюю (например, на конец текущего года или даже в будущее), помощник предложит удалить все документы до этой даты. В настройках свертки выберем вариант «Просто удалить документы» без формирования корректировок остатков. Система сама программно выполнит очистку, соблюдая внутреннюю логику связей объектов конфигурации.

Особое внимание: Перенос пользователей

Выясним важную техническую деталь, которую часто упускают при копировании настроек. В системе 1С существует два уровня сущностей «Пользователи»:

При использовании метода с XML-выгрузкой справочник перенесется, но зайти под этими пользователями в новую базу вы не сможете, так как в конфигураторе новой базы список будет пуст. Чтобы решить эту проблему, после загрузки данных воспользуйтесь типовой процедурой БСП по сопоставлению пользователей или создайте их вручную с теми же именами, и система автоматически свяжет их со справочником при первом входе.

Завершающий этап: Тестирование и исправление (ТиИ)

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

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

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

Таким образом, мы разобрали комплексный подход к созданию «чистой» базы. Помните, что для небольших баз достаточно программного скрипта с использованием ОбменДанными.Загрузка = Истина, а для крупных корпоративных систем лучше использовать метод XML-переноса или свертки для обеспечения максимальной чистоты данных.

← На главную