При работе с базами 1С часто возникают ситуации, когда необходимо предоставить данные контролирующим органам или сторонним организациям только за конкретный интервал времени (например, с начала 2016 по середину 2020 года). Простое удаление документов по периоду часто не дает результата: остаются ссылки, записи в регистрах, а отчеты перестают формироваться корректно. В этой статье мы подробно разберем, как правильно «вырезать» нужный период из информационной базы 1С:Бухгалтерия 3.0, сохранив целостность учета.
Это самый надежный и «чистый» способ. Его суть заключается в том, чтобы не пытаться удалять лишнее из текущей базы, а наоборот — забрать только нужное в новую. Рассмотрим этот процесс по шагам.
Шаг 1: Свертка на дату начала интервала.
Для начала нам необходимо получить остатки на 01.01.2016. В программе 1С:Бухгалтерия 3.0 перейдем в раздел Администрирование — Сервис — Свертка информационной базы. Выберем дату свертки — 31.12.2015. После завершения операции программа создаст документы ВводОстатков по всем счетам бухгалтерского и налогового учета.
Шаг 2: Создание чистой информационной базы.
Создадим пустую базу той же версии конфигурации. В эту базу мы будем переносить сформированные остатки и документы за нужный период.
Шаг 3: Выгрузка и загрузка данных.
Проанализируем инструменты для переноса. Рекомендуется использовать обработку ВыгрузкаЗагрузкаДанныхXML (она входит в состав состава «Инструментов разработчика» или поставляется на дисках ИТС).
Рассмотрим порядок выгрузки:
ВводОстатков, созданные на дату 31.12.2015.Важный нюанс: при выгрузке документов убедитесь, что включена опция «Выгружать объекты по ссылкам», чтобы подтянулись все связанные данные, необходимые для проведения документов.
Если стандартная свертка отлично справляется с отсечением данных «сзади» (до 2016 года), то удалить данные «спереди» (после середины 2020 года) сложнее. Если мы просто пометим документы на удаление, они все равно будут удерживать записи в регистрах или ссылаться друг на друга.
Проанализируем ситуацию: чтобы документы после 30.06.2020 перестали влиять на отчетность и их можно было легко удалить, необходимо очистить их движения. Для этого можно воспользоваться внешними обработками по групповому изменению реквизитов или написать небольшой скрипт для удаления наборов записей.
Пример логики для очистки движений регистра бухгалтерии (фрагмент кода):
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Хозрасчетный.Регистратор КАК Регистратор
|ИЗ
| РегистрБухгалтерии.Хозрасчетный КАК Хозрасчетный
|ГДЕ
| Хозрасчетный.Период > &ДатаКонца";
Запрос.УстановитьПараметр("ДатаКонца", '20200630235959');
Результат = Запрос.Выполнить().Выгрузить();
Для Каждого Строка Из Результат Цикл
НаборЗаписей = РегистрыБухгалтерии.Хозрасчетный.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.Регистратор.Установить(Строка.Регистратор);
НаборЗаписей.Записать(); // Записываем пустой набор, удаляя проводки
КонецЦикла;
После очистки движений документы станут «пустыми», и стандартная процедура Удаление помеченных объектов пройдет значительно быстрее и успешнее.
Если база передается проверяющим органам, недостаточно просто удалить документы. Рассмотрим, какие еще данные могут выдать «коммерческую тайну» за пределами выбранного периода:
В Журнале регистрации (Event Log) сохраняются записи обо всех действиях пользователей. Даже если документ удален, в журнале может остаться информация: «Пользователь Иванов изменил документ Реализация №123 от 15.08.2022 на сумму 1 000 000 руб.». Чтобы этого избежать, необходимо зайти в Конфигуратор — Администрирование — Настройка журнала регистрации и выполнить сокращение журнала до нужной даты.
В современных конфигурациях 1С сканы договоров и актов хранятся в отдельных справочниках (например, ДоговорыКонтрагентовПрисоединенныеФайлы). Проверьте эти таблицы. Если документы удалены, файлы могут остаться «сиротами» в базе, занимая место и сохраняя информацию.
Если в базе включена функция История изменений (раздел «Администрирование — Общие настройки»), то в регистре сведений ВерсииОбъектов хранятся копии документов в формате XML. Даже после удаления самого документа его история может быть доступна. Обязательно выполните очистку истории изменений за периоды вне вашего интервала.
После массового удаления данных размер файла базы данных (1Cv8.1CD или база на SQL-сервере) не уменьшится автоматически. Для окончательной очистки выполните следующие действия:
Shrink Database средствами MS SQL Server Management Studio.Заключение: Самым эффективным способом остается комбинация свертки (для получения входящих остатков) и переноса оборотов в новую чистую базу. Это гарантирует, что в целевой базе не останется «мусора» от предыдущих или последующих периодов, а отчетность будет формироваться корректно и соответствовать первичным документам.