Как правильно и быстро выполнить свертку информационной базы в 1С:Розница 2.3?

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

Свертка информационной базы в программе 1С:Розница 2.3 — это ответственный процесс, который часто сопровождается техническими сложностями: длительным временем выполнения (до 48 часов и более), огромным объемом базы (25 Гб и выше) и сохранением миллионов позиций неиспользуемой номенклатуры. В рамках данной статьи мы разберем, как оптимизировать этот процесс, какие данные можно удалить вручную и стоит ли использовать стандартные механизмы или лучше прибегнуть к альтернативному переносу данных.

Предварительная подготовка и техническая оптимизация

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

  1. Создание резервной копии. Это обязательный этап. Свертка — необратимый процесс.
  2. Тестирование и исправление (ТиИ). Обязательно выполним процедуру ТестированиеИИсправление с включенным пересчетом итогов. Это гарантирует, что документы ввода остатков будут сформированы на основе корректных данных.
  3. Настройка SQL-сервера. Если вы используете клиент-серверный вариант, переведем базу данных в модель восстановления Simple (простая). Это предотвратит бесконтрольный рост файла .ldf и ускорит операции удаления.
  4. Режим блокировок. Проверим, чтобы в свойствах конфигурации был установлен режим управления блокировками Управляемый.

Очистка «тяжелых» данных перед сверткой

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

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

Очередь чеков и фискальные операции. При попытке удаления документов ЧекККМ система проверяет связанные записи. Рекомендуется вручную очистить следующие регистры:

Регистры УТМ и маркировки. Сообщения форума подтверждают, что регистры, связанные с ЕГАИС и Честным Знаком, часто мешают удалению документов. Выясним причину: при попытке удаления чека система находит ссылки в регистрах сведений по УТМ. Эти данные за прошлые периоды (до даты свертки) можно смело удалять.

Алгоритм проведения стандартной свертки

Если мы решили использовать типовой помощник, разберем процесс по шагам:

  1. Запускаем обработку СверткаИнформационнойБазы.
  2. Устанавливаем дату свертки (обычно конец года).
  3. Выполняем формирование документов ВводОстатковУзловРеверсивногоРегистра и других корректировок.
  4. Важный момент: на этапе удаления старых документов процесс может «зависнуть». Вместо того чтобы ждать 48 часов, мы можем прервать удаление и воспользоваться методом непосредственного удаления объектов через консоль или специальную обработку, предварительно убедившись, что остатки уже сформированы и зафиксированы.

Программная очистка неиспользуемой номенклатуры

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


// Пример логики для поиска неиспользуемой номенклатуры
Запрос = Новый Запрос;
Запрос.Текст = 
    "ВЫБРАТЬ
    |	Номенклатура.Ссылка КАК Ссылка
    |ИЗ
    |	Справочник.Номенклатура КАК Номенклатура
    |ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки КАК Остатки
    |ПО Номенклатура.Ссылка = Остатки.Номенклатура
    |ГДЕ
    |	Остатки.В НаличииОстаток ЕСТЬ NULL";
// Далее необходимо проверить ссылки через НайтиПоСсылкам() и пометить на удаление

Проанализируем ситуацию: чтобы номенклатура удалилась, нужно сначала очистить регистры ЦеныНоменклатуры, ШтрихкодыНоменклатуры и ИзображенияНоменклатуры за периоды до свертки. Только после удаления этих «хвостов» объект СправочникСсылка.Номенклатура станет доступен для физического удаления из базы. Для этой задачи можно использовать обработку для удаления неиспользуемой номенклатуры с очисткой ссылок.

Альтернативный метод: Перенос остатков в чистую базу

В случаях, когда база весит 25-50 Гб, стандартная свертка может оказаться неэффективной («самоубийством», как выразились в обсуждении). Рассмотрим более надежный метод:

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

Этот метод позволяет получить «стерильную» базу без лишнего мусора в регистрах сведений и битых ссылок. Мы исключаем необходимость долгого удаления миллионов документов, просто оставляя их в старой базе-архиве.

Работа с ордерными складами и ЕГАИС

Выясним причину возможных расхождений после свертки. Если в Рознице 2.3 использовалась ордерная схема (раздельный учет складских и финансовых операций), проанализируем регистр ТоварыКПоступлению. Перед сверткой необходимо убедиться, что все ПриходныеОрдераНаТовары закрыты соответствующими накладными. В противном случае после удаления документов-оснований вы получите «висящие» остатки, которые невозможно будет списать стандартными средствами.

Что касается ЕГАИС: помните, что после свертки история движения марок будет утрачена. Рекомендуется сохранить старую базу в качестве архивной копии для предоставления отчетности в контролирующие органы в случае проверки.

Заключение

Таким образом, для быстрой и правильной свертки Розница 2.3 мы рекомендуем комбинированный подход: либо глубокую предварительную очистку технических регистров (УТМ, чеки, версии) перед запуском стандартного помощника, либо метод переноса остатков в чистую базу. Это позволит сократить время простоя магазина и обеспечит стабильную работу системы без тормозов. Для проведения процедуры можно использовать обработку-помощник для свертки базы 1С:Розница 2.3.

← На главную