При работе с информационными базами 1С, особенно при подготовке к архивированию или переносу данных, часто возникает необходимость выполнить свертку базы. Одним из наиболее продолжительных и ответственных этапов свертки является пометка документов на удаление. Давайте вместе разберем, насколько безопасно прерывать этот процесс и какие действия следует предпринять, если такая ситуация все же произошла.
Этап пометки документов на удаление — это подготовительный шаг перед физическим удалением устаревших данных из информационной базы. На этом этапе система не удаляет документы сразу, а лишь устанавливает для них специальный признак — пометку на удаление. Этот процесс может быть очень длительным, занимая от нескольких часов до нескольких дней, в зависимости от объема базы данных и производительности сервера.
Мы выясним причину такой длительности: система проверяет ссылочную целостность. Это означает, что для каждого документа, который предполагается пометить, проверяются все связи с другими объектами базы данных. Это делается для того, чтобы избежать потери важных данных и убедиться, что удаляемые документы не имеют активных ссылок, которые могут нарушить логику работы системы.
Важно отметить, что не все документы помечаются на удаление. Например, документы по учету основных средств (ОС) или налога на добавленную стоимость (НДС), как правило, остаются нетронутыми. Также могут не помечаться на удаление документы с ручными корректировками проводок, даже если они относятся к свертываемому периоду, поскольку их удаление может нарушить целостность учета.
Основной вывод, который мы можем сделать, основываясь на опыте экспертов: крайне нежелательно прерывать процесс пометки документов на удаление в ходе свертки базы. Это одна из самых длинных и ответственных частей всего процесса, и ее некорректное прерывание может привести к серьезным проблемам, вплоть до необходимости восстановления базы из резервной копии.
В современных конфигурациях 1С разработчики предусмотрели так называемый "контролируемый режим" свертки. Рассмотрим подробнее его особенности:
Таким образом, если вы используете современную конфигурацию и свертка происходит в контролируемом режиме, вероятность успешного возобновления процесса выше.
Если свертка выполняется в автоматическом режиме или в более старых конфигурациях, прерывание этапа пометки на удаление становится гораздо более критичным. Проанализируем ситуацию:
Если процесс пометки на удаление был прерван, не паникуем. Разберем по шагам возможные варианты действий.
Прежде всего, нам нужно понять, в каком режиме выполнялась свертка и на каком этапе произошло прерывание. Посмотрите логи системы, если они доступны, или сообщения, которые могли появиться при прерывании.
Мы настоятельно рекомендуем этот вариант, если вы не уверены в возможности корректного продолжения или если свертка выполнялась в автоматическом режиме. Перед началом любой свертки вы ОБЯЗАТЕЛЬНО должны создать полную резервную копию информационной базы. Это золотое правило, которое позволяет избежать катастрофических последствий.
Этот вариант более сложный и требует глубокого понимания структуры базы данных и навыков программирования на 1С. Он актуален, если восстановление из копии невозможно или слишком трудоемко.
ГрупповаяОбработкаОбъектов, доступный в режиме "Предприятие" (обычно через "Все функции" или "Администрирование").
Документ.РеализацияТоваровУслуг, Документ.ПоступлениеТоваровУслуг и т.д.).Например, если нам нужно пометить документы "РеализацияТоваровУслуг" за определенный период:
// Пример кода для выборочной пометки документов на удаление
// Этот код следует использовать с осторожностью и после резервного копирования!
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ДокументСсылка
|ИЗ
| Документ.РеализацияТоваровУслуг КАК ДокументРеализацияТоваровУслуг
|ГДЕ
| ДокументРеализацияТоваровУслуг.Дата МЕЖДУ &ДатаНачала И &ДатаОкончания
| И ДокументРеализацияТоваровУслуг.ПометкаУдаления = ЛОЖЬ";
Запрос.УстановитьПараметр("ДатаНачала", '20100101'); // Пример даты начала свертки
Запрос.УстановитьПараметр("ДатаОкончания", '20151231'); // Пример даты окончания свертки
Выборка = Запрос.Выполнить().Выбрать();
Сообщить("Начинаем пометку документов...");
Пока Выборка.Следующий() Цикл
Попытка
ДокументОбъект = Выборка.ДокументСсылка.ПолучитьОбъект();
Если ДокументОбъект <> Неопределено Тогда
Если Не ДокументОбъект.ПометкаУдаления Тогда
ДокументОбъект.УстановитьПометкуУдаления(Истина);
// ДокументОбъект.Записать(); // Запись не требуется, УстановитьПометкуУдаления сама записывает
КонецЕсли;
КонецЕсли;
Исключение Как Искл
Сообщить("Ошибка при пометке документа " + Выборка.ДокументСсылка + ": " + Искл.Описание);
КонецПопытки;
КонецЦикла;
Сообщить("Пометка документов завершена.");
В этом примере мы используем объект Запрос для выборки документов и метод УстановитьПометкуУдаления(Истина) для установки пометки. Помните, что такой код требует тщательной проверки и тестирования на копии базы.
Чтобы минимизировать риски при свертке базы, мы предлагаем рассмотреть следующие рекомендации:
Мы надеемся, что это подробное руководство поможет вам успешно справиться с процессом свертки базы 1С и избежать проблем при пометке документов на удаление.
← К списку