Как оставить в базе 1С:Бухгалтерия данные только за определенный период?

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

При работе с базами 1С часто возникают ситуации, когда необходимо предоставить данные контролирующим органам или сторонним организациям только за конкретный интервал времени (например, с начала 2016 по середину 2020 года). Простое удаление документов по периоду часто не дает результата: остаются ссылки, записи в регистрах, а отчеты перестают формироваться корректно. В этой статье мы подробно разберем, как правильно «вырезать» нужный период из информационной базы 1С:Бухгалтерия 3.0, сохранив целостность учета.

Метод 1: Свертка на начало периода и перенос данных в чистую базу

Это самый надежный и «чистый» способ. Его суть заключается в том, чтобы не пытаться удалять лишнее из текущей базы, а наоборот — забрать только нужное в новую. Рассмотрим этот процесс по шагам.

Шаг 1: Свертка на дату начала интервала.

Для начала нам необходимо получить остатки на 01.01.2016. В программе 1С:Бухгалтерия 3.0 перейдем в раздел Администрирование — Сервис — Свертка информационной базы. Выберем дату свертки — 31.12.2015. После завершения операции программа создаст документы ВводОстатков по всем счетам бухгалтерского и налогового учета.

Шаг 2: Создание чистой информационной базы.

Создадим пустую базу той же версии конфигурации. В эту базу мы будем переносить сформированные остатки и документы за нужный период.

Шаг 3: Выгрузка и загрузка данных.

Проанализируем инструменты для переноса. Рекомендуется использовать обработку ВыгрузкаЗагрузкаДанныхXML (она входит в состав состава «Инструментов разработчика» или поставляется на дисках ИТС). Рассмотрим порядок выгрузки:

  1. Выгружаем все справочники (без отбора по периоду).
  2. Выгружаем документы ВводОстатков, созданные на дату 31.12.2015.
  3. Выгружаем все документы за интересующий нас период (с 01.01.2016 по 30.06.2020).

Важный нюанс: при выгрузке документов убедитесь, что включена опция «Выгружать объекты по ссылкам», чтобы подтянулись все связанные данные, необходимые для проведения документов.

Метод 2: Программная очистка «будущих» периодов

Если стандартная свертка отлично справляется с отсечением данных «сзади» (до 2016 года), то удалить данные «спереди» (после середины 2020 года) сложнее. Если мы просто пометим документы на удаление, они все равно будут удерживать записи в регистрах или ссылаться друг на друга.

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

Пример логики для очистки движений регистра бухгалтерии (фрагмент кода):


Запрос = Новый Запрос;
Запрос.Текст = 
    "ВЫБРАТЬ
    |   Хозрасчетный.Регистратор КАК Регистратор
    |ИЗ
    |   РегистрБухгалтерии.Хозрасчетный КАК Хозрасчетный
    |ГДЕ
    |   Хозрасчетный.Период > &ДатаКонца";
Запрос.УстановитьПараметр("ДатаКонца", '20200630235959');
Результат = Запрос.Выполнить().Выгрузить();

Для Каждого Строка Из Результат Цикл
    НаборЗаписей = РегистрыБухгалтерии.Хозрасчетный.СоздатьНаборЗаписей();
    НаборЗаписей.Отбор.Регистратор.Установить(Строка.Регистратор);
    НаборЗаписей.Записать(); // Записываем пустой набор, удаляя проводки
КонецЦикла;

После очистки движений документы станут «пустыми», и стандартная процедура Удаление помеченных объектов пройдет значительно быстрее и успешнее.

Дополнительные технические нюансы для обеспечения конфиденциальности

Если база передается проверяющим органам, недостаточно просто удалить документы. Рассмотрим, какие еще данные могут выдать «коммерческую тайну» за пределами выбранного периода:

1. Очистка Журнала регистрации

В Журнале регистрации (Event Log) сохраняются записи обо всех действиях пользователей. Даже если документ удален, в журнале может остаться информация: «Пользователь Иванов изменил документ Реализация №123 от 15.08.2022 на сумму 1 000 000 руб.». Чтобы этого избежать, необходимо зайти в Конфигуратор — Администрирование — Настройка журнала регистрации и выполнить сокращение журнала до нужной даты.

2. Удаление присоединенных файлов

В современных конфигурациях 1С сканы договоров и актов хранятся в отдельных справочниках (например, ДоговорыКонтрагентовПрисоединенныеФайлы). Проверьте эти таблицы. Если документы удалены, файлы могут остаться «сиротами» в базе, занимая место и сохраняя информацию.

3. Версионирование объектов

Если в базе включена функция История изменений (раздел «Администрирование — Общие настройки»), то в регистре сведений ВерсииОбъектов хранятся копии документов в формате XML. Даже после удаления самого документа его история может быть доступна. Обязательно выполните очистку истории изменений за периоды вне вашего интервала.

4. Сжатие базы данных (Shrink)

После массового удаления данных размер файла базы данных (1Cv8.1CD или база на SQL-сервере) не уменьшится автоматически. Для окончательной очистки выполните следующие действия:

  1. Для файловой базы: запустите утилиту chdbfl.exe с установленной галочкой «Сжатие таблиц» или выполните Тестирование и исправление в конфигураторе с опцией «Сжатие таблиц».
  2. Для клиент-серверной базы: выполните команду Shrink Database средствами MS SQL Server Management Studio.

Заключение: Самым эффективным способом остается комбинация свертки (для получения входящих остатков) и переноса оборотов в новую чистую базу. Это гарантирует, что в целевой базе не останется «мусора» от предыдущих или последующих периодов, а отчетность будет формироваться корректно и соответствовать первичным документам.

← На главную