Как быстро очистить базу 1С:УТ 11.4 от всех документов?

Программист 1С v8.3 (Управляемые формы) 1С:Управление торговлей Управленческий учет Торговля и дистрибуция
← На главную

Вопрос быстрой и полной очистки информационной базы 1С:Управление Торговлей 11.4 от всех документов является частой задачей при подготовке базы к новой стадии работы, например, перед загрузкой актуальных остатков или переходом на новый учетный период. Рассмотрим, как мы можем решить эту задачу, анализируя различные подходы и риски, связанные с каждым из них.

Очистка базы данных 1С, особенно в клиент-серверном варианте, требует внимательного подхода из-за множества взаимосвязанных объектов: документы, движения в регистрах накопления, записи в регистрах сведений, а также ссылки из различных справочников и даже других документов. Наша цель – не просто удалить документы, но и обеспечить целостность данных после операции, чтобы база оставалась работоспособной.

Подход 1: Прямое удаление данных через СУБД (SQL) с последующей загрузкой остатков (выбранное автором)

Этот метод считается одним из самых быстрых, но и наиболее рискованных, поскольку он обходит стандартный механизм контроля ссылочной целостности 1С. Тем не менее, при правильном выполнении и глубоком понимании структуры базы, он может быть крайне эффективным.

Разбираем по шагам:

  1. Анализ структуры и определение таблиц для очистки:
  2. Прежде чем выполнять какие-либо действия, нам необходимо точно определить, какие таблицы в базе данных SQL соответствуют документам и связанным с ними регистрам. Мы можем использовать метаданные 1С для генерации списка таблиц. Например, для документов названия таблиц в SQL часто содержат префикс _Docum. Для регистров накопления и сведений это будут таблицы, начинающиеся с _AccumRg и _InfoRg соответственно. Также нам следует учитывать таблицы журналов документов и другие служебные таблицы.

    Для определения таблиц документов мы можем использовать следующий код в 1С:

    
    стр = "";
    тз = ПолучитьСтруктуруХраненияБазыДанных(,истина);    
    Для Каждого таблица из тз Цикл
        Если СтрНайти(таблица.ИмяТаблицыХранения,"Docum") Тогда
            стр = стр + "truncate "+таблица.ИмяТаблицыХранения+";"+символы.ПС;  
        КонецЕсли;
    КонецЦикла;
            
    сообщить(стр);
    

    Этот код поможет нам сгенерировать SQL-запросы на очистку основных таблиц документов. Аналогичным образом мы можем найти таблицы регистров накопления (_AccumRg) и регистров сведений (_InfoRg), которые содержат движения от документов или вспомогательную информацию, привязанную к удаляемым документам. Важно также помнить о таблицах партий, назначений и объектов расчетов, которые могут быть связаны с документами.

  3. Подготовка и выполнение SQL-запросов:
  4. Мы будем использовать команду TRUNCATE TABLE для быстрой очистки таблиц. Эта команда значительно быстрее, чем DELETE, так как она не генерирует записи в журнале транзакций для каждой удаляемой строки. Однако TRUNCATE удаляет все данные из таблицы без возможности отката (кроме отката всей транзакции) и сбрасывает счетчики идентификаторов.

    Пример запросов (сгенерированных в 1С или написанных вручную):

    
    TRUNCATE TABLE _Document123; -- Таблица документа "Поступление товаров и услуг"
    TRUNCATE TABLE _Document123_VT123; -- Табличная часть документа "Поступление товаров и услуг"
    TRUNCATE TABLE _AccumRg123; -- Регистр накопления "ТоварыНаСкладах"
    TRUNCATE TABLE _InfoRg123; -- Регистр сведений "СтатусыДокументов"
    -- ... и так далее для всех связанных документов, регистров и их табличных частей
    

    Для выполнения таких запросов нам потребуются административные права на базу данных SQL Server (или другую СУБД). Если у нас нет таких прав, мы должны обратиться к системному администратору.

  5. Очистка регистров сведений и справочников:
  6. Помимо таблиц документов и регистров накопления, мы должны выборочно очистить регистры сведений, которые хранят статусы, привязки к внешним системам (ЕГАИС, ВЕТИС, Честный ЗНАК) или другую вспомогательную информацию, и справочник Назначения, который часто бывает связан с документами поступления и реализации. В некоторых случаях может потребоваться частичная очистка справочников, связанных с удаляемыми документами.

  7. Отключение контроля ссылочной целостности:
  8. Для предотвращения ошибок, которые могут возникнуть при удалении документов, имеющих ссылки, мы можем временно отключить контроль ссылочной целостности в конфигураторе 1С. Это позволит нам выполнять операции с данными, не затрагивая связанные объекты сразу, но требует особой осторожности и глубокого понимания последствий.

  9. Пересчет регистров и очистка ссылок:
  10. После прямого удаления данных в СУБД, нам необходимо выполнить следующие действия в режиме 1С:Предприятие или через конфигуратор:

  11. Загрузка остатков:
  12. После очистки базы нам потребуется загрузить актуальные остатки. Мы можем использовать готовые процедуры перезаливки остатков или создать новую, считывая остатки из старой базы по ссылкам (УИДам) или другим уникальным идентификаторам. Это позволяет нам гибко управлять тем, какие данные будут перенесены в новую "чистую" базу.

    Однако, мы должны быть готовы к сюрпризам, таким как необходимость учитывать документы расчета/первичные документы, которые могут быть тесно связаны с остатками. Загрузка остатков "с нуля" по GUIDам – это нетривиальная задача, требующая тщательной проработки структуры регистров и аналитик.

  13. Проверка целостности после операции:
  14. После выполнения всех шагов критически важно провести тестирование и исправление базы данных (ТИИ) в режиме конфигуратора. Мы должны запустить опцию "Поиск и удаление битых ссылок". Это поможет нам убедиться, что все "битые" ссылки удалены и база находится в консистентном состоянии.

    Для более детального анализа мы можем использовать Инструменты разработчика в 1С для поиска битых ссылок, что является удобным способом для выявления проблем после ручной очистки.

    Мы можем также воспользоваться инструментом Базопузомер для анализа размеров таблиц и объектов, что поможет нам понять, какие данные занимают больше всего места и насколько эффективно прошла очистка.

Преимущества выбранного подхода:

Недостатки и риски:

Подход 2: Создание новой базы и перенос данных

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

Разбираем по шагам:

  1. Установка чистого дистрибутива: Мы начинаем с установки чистого дистрибутива конфигурации 1С:УТ 11.4 или создания новой информационной базы из шаблона. Это гарантирует нам пустую базу без каких-либо документов или остатков.
  2. Перенос необходимых справочников: Далее мы осуществляем перенос только необходимых справочников из старой базы в новую. Мы можем использовать для этого:
    • Универсальные обработки выгрузки/загрузки данных XML.
    • Механизм Конвертации Данных 2.0 (КД 2.0), который позволяет автоматически создавать правила обмена между идентичными конфигурациями и выборочно переносить данные.

    Важно помнить, что некоторые справочники могут быть завязаны на документы или другие объекты, поэтому нам следует внимательно отнестись к тому, что мы переносим, чтобы не "потянуть" за собой ненужные данные.

  3. Загрузка начальных остатков: После переноса справочников мы загружаем начальные остатки. Методы загрузки остатков аналогичны тем, что описаны в "Подходе 1", включая создание документов ввода остатков и использование программных обработок для их заполнения данными из старой базы.

Преимущества:

Недостатки:

Подход 3: Использование механизма Распределенных Информационных Баз (РИБ)

Механизм РИБ, предназначенный для обмена данными между удаленными узлами, также может быть адаптирован для создания "урезанной" копии базы без документов.

Разбираем по шагам:

  1. Создание организации для фильтрации: В центральной базе мы можем создать новую организацию, по которой будет выполняться выгрузка.
  2. Настройка плана обмена РИБ: Мы изменяем состав плана обмена так, чтобы в периферийную базу не выгружались документы, регистры накопления и некоторые регистры сведений. Это позволяет нам отфильтровать ненужные данные на этапе выгрузки.
  3. Выгрузка и отвязка базы: Мы создаем начальный образ периферийной базы. После успешной выгрузки, полученную базу можно "отвязать" от центральной, чтобы она стала независимой информационной базой.
  4. Загрузка необходимых справочников: Если после выгрузки по РИБ некоторые нужные справочники не выгрузились (например, из-за сложных правил обмена или отсутствия привязки к новой организации), мы можем загрузить их отдельно с помощью обработок.

Преимущества:

Недостатки:

Подход 4: Использование штатной "Свертки информационной базы"

"Свертка информационной базы" – это встроенный механизм 1С, предназначенный для уменьшения объема базы путем агрегации данных за прошлые периоды и формирования документов ввода начальных остатков.

Как работает свертка:

Свертка не просто удаляет документы. Она анализирует движения по регистрам до определенной даты, формирует документы "Ввод начальных остатков" на эту дату, а затем помечает на удаление все документы и движения до даты свертки.

Преимущества:

Недостатки:

Общие рекомендации и инструменты при очистке базы

Независимо от выбранного подхода, существуют общие правила и полезные инструменты, которые помогут нам успешно справиться с задачей очистки базы:

  1. Резервное копирование: Перед началом любых операций по очистке базы данных, особенно на рабочей базе, крайне важно создать полную резервную копию. Это наша "подушка безопасности" на случай непредвиденных проблем.
  2. Тестирование: Все сложные процедуры очистки и переноса данных мы всегда должны сначала опробовать на тестовой копии базы, идентичной рабочей. Убедившись в корректности результата, мы можем переходить к рабочей базе.
  3. Поэтапное удаление: Если мы используем удаление через программный код 1С или SQL, рекомендуется удалять данные небольшими порциями. Это помогает избежать блокировок, переполнения журналов транзакций и позволяет нам контролировать процесс на каждом этапе.
  4. Контроль ссылочной целостности: При отключении контроля ссылочной целостности или прямом обращении к СУБД риск повреждения базы данных значительно возрастает. Поэтому этот метод рекомендуется применять только опытным специалистам, которые хорошо понимают последствия таких действий.
  5. Инструменты разработчика: В подсистеме "Инструменты разработчика" 1С есть полезные обработки для зачистки данных и поиска битых ссылок. Они позволяют удобно добавлять зависимые данные удаляемых объектов к удаляемым, хотя на больших объемах это может быть долго.
  6. Базопузомер: Этот инструмент помогает нам сориентироваться, какие объекты и таблицы занимают больше всего места в базе данных, что является ценной информацией при планировании очистки.
  7. Время выполнения: Мы должны учитывать, что даже "быстрые" методы могут занимать часы или даже сутки на очень больших базах данных. Планировать такие операции следует на нерабочее время или периоды минимальной нагрузки.

Как мы видим, задача глубокой очистки базы 1С:УТ 11.4 от документов не является тривиальной и требует комплексного подхода. Выбор метода зависит от наших целей, имеющихся ресурсов и уровня экспертизы. Автор в своем случае выбрал прямое удаление через SQL и успешного добился поставленной цели, добившись быстрой очистки и возможности перезаливки остатков.

← На главную