Свертка информационной базы в программе 1С:Розница 2.3 — это ответственный процесс, который часто сопровождается техническими сложностями: длительным временем выполнения (до 48 часов и более), огромным объемом базы (25 Гб и выше) и сохранением миллионов позиций неиспользуемой номенклатуры. В рамках данной статьи мы разберем, как оптимизировать этот процесс, какие данные можно удалить вручную и стоит ли использовать стандартные механизмы или лучше прибегнуть к альтернативному переносу данных.
Прежде чем приступать к любым манипуляциям, проанализируем состояние базы данных. Процесс удаления миллионов записей создает колоссальную нагрузку на дисковую подсистему и лог транзакций. Разберем шаги по подготовке:
ТестированиеИИсправление с включенным пересчетом итогов. Это гарантирует, что документы ввода остатков будут сформированы на основе корректных данных..ldf и ускорит операции удаления.Управляемый.Стандартный механизм свертки часто «захлебывается» из-за огромного количества записей в служебных регистрах, которые не влияют на остатки, но блокируют удаление документов. Рассмотрим, что нужно очистить в первую очередь:
Версионирование объектов. Проанализируем регистр сведений ВерсииОбъектов. Если в базе включена история изменений, этот регистр может занимать львиную долю объема. Его следует полностью очистить через раздел администрирования или программно перед началом свертки.
Очередь чеков и фискальные операции. При попытке удаления документов ЧекККМ система проверяет связанные записи. Рекомендуется вручную очистить следующие регистры:
ОчередьЧековККМФискальныеОперацииДанныеОперацийСБПРегистры УТМ и маркировки. Сообщения форума подтверждают, что регистры, связанные с ЕГАИС и Честным Знаком, часто мешают удалению документов. Выясним причину: при попытке удаления чека система находит ссылки в регистрах сведений по УТМ. Эти данные за прошлые периоды (до даты свертки) можно смело удалять.
Если мы решили использовать типовой помощник, разберем процесс по шагам:
СверткаИнформационнойБазы.ВводОстатковУзловРеверсивногоРегистра и других корректировок.Одной из главных проблем является наличие миллионов позиций номенклатуры, которые больше не нужны. Даже после свертки они остаются в базе, так как на них могут ссылаться старые цены или штрихкоды. Посмотрим на пример логики для написания обработки по очистке:
// Пример логики для поиска неиспользуемой номенклатуры
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Номенклатура.Ссылка КАК Ссылка
|ИЗ
| Справочник.Номенклатура КАК Номенклатура
|ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки КАК Остатки
|ПО Номенклатура.Ссылка = Остатки.Номенклатура
|ГДЕ
| Остатки.В НаличииОстаток ЕСТЬ NULL";
// Далее необходимо проверить ссылки через НайтиПоСсылкам() и пометить на удаление
Проанализируем ситуацию: чтобы номенклатура удалилась, нужно сначала очистить регистры ЦеныНоменклатуры, ШтрихкодыНоменклатуры и ИзображенияНоменклатуры за периоды до свертки. Только после удаления этих «хвостов» объект СправочникСсылка.Номенклатура станет доступен для физического удаления из базы. Для этой задачи можно использовать обработку для удаления неиспользуемой номенклатуры с очисткой ссылок.
В случаях, когда база весит 25-50 Гб, стандартная свертка может оказаться неэффективной («самоубийством», как выразились в обсуждении). Рассмотрим более надежный метод:
ВыгрузкаЗагрузкаДанныхXML (она входит в состав инструментов разработчика).Номенклатура, Контрагенты, Склады, Кассы, Магазины.ВводОстатков из старой базы в новую.Этот метод позволяет получить «стерильную» базу без лишнего мусора в регистрах сведений и битых ссылок. Мы исключаем необходимость долгого удаления миллионов документов, просто оставляя их в старой базе-архиве.
Выясним причину возможных расхождений после свертки. Если в Рознице 2.3 использовалась ордерная схема (раздельный учет складских и финансовых операций), проанализируем регистр ТоварыКПоступлению. Перед сверткой необходимо убедиться, что все ПриходныеОрдераНаТовары закрыты соответствующими накладными. В противном случае после удаления документов-оснований вы получите «висящие» остатки, которые невозможно будет списать стандартными средствами.
Что касается ЕГАИС: помните, что после свертки история движения марок будет утрачена. Рекомендуется сохранить старую базу в качестве архивной копии для предоставления отчетности в контролирующие органы в случае проверки.
Таким образом, для быстрой и правильной свертки Розница 2.3 мы рекомендуем комбинированный подход: либо глубокую предварительную очистку технических регистров (УТМ, чеки, версии) перед запуском стандартного помощника, либо метод переноса остатков в чистую базу. Это позволит сократить время простоя магазина и обеспечит стабильную работу системы без тормозов. Для проведения процедуры можно использовать обработку-помощник для свертки базы 1С:Розница 2.3.