Как удалить данные за определенное число в 1С:Управление торговлей 10.3

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

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

Предварительный этап: Важность резервного копирования

Прежде чем приступать к любым массовым манипуляциям с данными, проанализируем риски. В 1С все объекты тесно взаимосвязаны ссылками. Удаление документа за определенное число может привести к "битым" ссылкам в документах других периодов. Поэтому первым и обязательным шагом является создание резервной копии базы данных. Это ваш единственный гарантированный способ откатить изменения, если что-то пойдет не так.

Способ 1: Использование стандартной обработки «Групповая обработка справочников и документов»

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

  1. Перейдем в меню Сервис — Универсальные обработки — Групповая обработка справочников и документов.
  2. В открывшемся окне на вкладке "Объекты отбора" в поле "Тип объекта" выберем значение Документы.
  3. В списке ниже необходимо отметить флажками все типы документов, которые вы хотите проанализировать и удалить. Если нужно очистить абсолютно все данные за день, смело нажимаем кнопку "Пометить все".
  4. Теперь настроим фильтр. В нижней части окна (таблица "Отбор") добавим новое поле. В колонке "Поле" выберем Дата.
  5. В колонке "Тип сравнения" установим значение Интервал (включая границы) или Равно, если нас интересует одна конкретная дата.
  6. В колонке "Значение" укажем нужную дату (например, 22.03.2021 00:00:00 по 22.03.2021 23:59:59).
  7. Нажмем кнопку Отобрать. Программа переключит нас на вкладку "Обработка", где будет выведен список всех найденных документов.
  8. В нижней части окна выберем действие: Изменить: Пометка на удаление и установим значение "Установить".
  9. Нажмем кнопку Выполнить.

После выполнения этих действий все документы за указанную дату будут помечены на удаление, а их движения по регистрам (остатки, продажи, взаиморасчеты) будут аннулированы.

Способ 2: Программный метод через «Консоль кода»

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


Выборка = Документы.РеализацияТоваровУслуг.Выбрать(НачалоДня(НужнаяДата), КонецДня(НужнаяДата));
Пока Выборка.Следующий() Цикл
    Объект = Выборка.ПолучитьОбъект();
    Попытка
        // Сначала снимаем проведение, чтобы очистить регистры
        Если Объект.Проведен Тогда
            Объект.Записать(РежимЗаписиДокумента.ОтменаПроведения);
        КонецЕсли;
        // Устанавливаем пометку на удаление
        Объект.УстановитьПометкуУдаления(Истина);
    Исключение
        Сообщить("Не удалось обработать документ: " + Объект);
    КонецПопытки;
КонецЦикла;

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

Способ 3: Удаление записей независимых регистров

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

Для массового удаления записей из таких регистров за конкретный день рекомендуется использовать обработку "Редактирование записей регистров" или написать короткий скрипт, который будет использовать метод НаборЗаписей с установленным отбором по периоду. Если этого не сделать, часть данных за "плохое" число останется в системе и может влиять, например, на формирование цен в будущем.

Способ 4: Окончательное физическое удаление данных

Пометка на удаление — это лишь подготовительный этап. Сами данные все еще физически находятся в таблицах SQL или файле .1CD. Чтобы полностью освободить место и исключить эти объекты из базы, выполним процедуру удаления помеченных объектов:

  1. Зайдем в меню Операции — Удаление помеченных объектов.
  2. Выберем режим Выборочное удаление.
  3. Проанализируем связи. Если система сообщает, что документ не может быть удален, так как на него ссылается другой объект (например, на "Заказ покупателя" от 22.03 ссылается "Реализация" от 23.03), вам придется либо удалить и связанные объекты, либо отказаться от удаления этого конкретного документа.

Важный нюанс: Последовательности и партионный учет

Удаление или даже просто перепроведение документов "задним числом" в 1С:УТ 10.3 неизбежно приводит к нарушению последовательности партионного учета. Посмотрим на последствия: граница последовательности сместится на дату самого раннего удаленного документа. Это означает, что себестоимость товаров может стать неактуальной. После завершения очистки данных обязательно запустите процедуру восстановления последовательностей (меню "Операции" — "Проведение документов" — вкладка "Восстановление последовательностей").

Заключение

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

← На главную