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