В практике администрирования 1С часто возникает задача: создать «клон» существующей базы (например, 1С:Зарплата и кадры государственного учреждения 3.1), в которой должны остаться все ключевые настройки учета, справочники организаций, подразделений и пользователей, но при этом полностью отсутствовать документы (движения). Это может потребоваться для начала учета «с чистого листа», создания тестового полигона или разделения учета по разным базам.
В данной статье мы разберем несколько способов решения этой задачи — от программного удаления объектов в копии до использования профессиональных инструментов выгрузки данных. Мы проанализируем преимущества каждого метода и выясним, как избежать типичных ошибок, таких как нарушение целостности данных или сохранение «мусора» в таблицах базы данных.
Этот метод считается наиболее простым в реализации, если вы обладаете минимальными навыками программирования. Рассмотрим его логику: мы создаем полную копию рабочей базы и запускаем в ней скрипт, который обходит все метаданные и удаляет документы.
Шаг 1. Создание копии. Первым делом создадим копию информационной базы. Никогда не проводите подобные операции в «живой» рабочей базе, так как процесс удаления необратим.
Шаг 2. Программное удаление. Чтобы удалить документы максимально быстро и эффективно, нам потребуется написать небольшую обработку. Разберем по шагам, почему нельзя просто пометить всё на удаление через интерфейс. Если документов сотни тысяч, стандартное удаление помеченных объектов может занять несколько суток из-за проверки ссылочной целостности.
Проанализируем пример кода, который позволяет обойти стандартные проверки при записи и удалении, используя свойство ОбменДанными.Загрузка. Это критически важно, так как при значении Истина система отключает выполнение процедур ПередЗаписью и ПриЗаписи, что предотвращает выполнение лишних расчетов и проверок.
Для Каждого МетаДокумент Из Метаданные.Документы Цикл
Выборка = Документы[МетаДокумент.Имя].Выбрать();
Пока Выборка.Следующий() Цикл
Объект = Выборка.ПолучитьОбъект();
Объект.ОбменДанными.Загрузка = Истина;
Попробовать
Объект.Удалить();
Исключение
Сообщить("Не удалось удалить: " + Объект);
КонецПопытки;
КонецЦикла;
КонецЦикла;
Важный нюанс: Перед удалением самих документов рекомендуется сначала очистить наборы записей всех регистров (накопления, расчета, сведений). Это значительно ускорит процесс, так как при удалении документа системе не придется тратить ресурсы на поиск и удаление связанных движений — таблицы регистров уже будут пустыми.
Если вы хотите получить действительно «стерильную» базу без лишних записей в служебных таблицах, рекомендуем рассмотреть вариант переноса данных из старой базы в новую пустую конфигурацию той же версии.
Рассмотрим алгоритм работы с этим инструментом:
ВыгрузкаЗагрузкаДанныхXML.epf (её можно найти на диске ИТС или в составе инструментов разработчика).Этот метод гарантирует отсутствие «битых ссылок» и «хвостов» в базе, так как вы переносите только то, что явно выбрали. Однако будьте осторожны: если в справочнике есть реквизиты, ссылающиеся на документы (например, «Документ-основание» в каком-то специфичном регистре), эти ссылки в новой базе станут «объектами не найдено».
Посмотрим на ситуацию под другим углом. В типовых конфигурациях 1С существует штатный инструмент — Помощник свертки информационной базы. Хотя его прямое назначение — удаление документов прошлых лет с формированием остатков, мы можем использовать его для полной очистки.
Проанализируем, как это сделать: Если установить дату свертки на максимально позднюю (например, на конец текущего года или даже в будущее), помощник предложит удалить все документы до этой даты. В настройках свертки выберем вариант «Просто удалить документы» без формирования корректировок остатков. Система сама программно выполнит очистку, соблюдая внутреннюю логику связей объектов конфигурации.
Выясним важную техническую деталь, которую часто упускают при копировании настроек. В системе 1С существует два уровня сущностей «Пользователи»:
При использовании метода с XML-выгрузкой справочник перенесется, но зайти под этими пользователями в новую базу вы не сможете, так как в конфигураторе новой базы список будет пуст. Чтобы решить эту проблему, после загрузки данных воспользуйтесь типовой процедурой БСП по сопоставлению пользователей или создайте их вручную с теми же именами, и система автоматически свяжет их со справочником при первом входе.
Независимо от выбранного способа (особенно после массового удаления через код или SQL), необходимо выполнить техническое обслуживание базы. Рассмотрим обязательные шаги:
Проанализировав результаты, мы получим оптимизированную, компактную и полностью рабочую базу, готовую к ведению нового учета. Сжатие таблиц после удаления документов — критичный шаг, так как физический размер файла базы данных (1Cv8.1CD в файловом варианте) не уменьшается автоматически после удаления записей внутри него.
Таким образом, мы разобрали комплексный подход к созданию «чистой» базы. Помните, что для небольших баз достаточно программного скрипта с использованием ОбменДанными.Загрузка = Истина, а для крупных корпоративных систем лучше использовать метод XML-переноса или свертки для обеспечения максимальной чистоты данных.