Корректный перенос остатков из другой базы через COM


Заканчивается год. База весит почти 4 Гб. Неплохо было бы начать новую. НО! В старой базе бухгалтер еще весь январь будет подгонять данные, а потом надо чтобы эти остатки правильно отображались в новой базе.

Уже не первый раз сталкиваюсь с ситуацией, когда надо обрезать базу, начиная с 1 января, но в старом периоде еще возможны правки документов.

Предложенная обработка только иллюстрирует приемы, как корректно перенести остатки, не претендуя на полноту реализации.

Общий алгоритм создания "новой" базы:

  1. Копируем старую базу и называем ее "Новая"
  2. Из новой базы запускаем обработку переноса остатков по состоянию, например, на 31 декабря 23:59:59, которая создаст документы "Корректировка записей регистров"
  3. Помечаем на удаление все документы, дата которых меньше даты переноса
  4. Работаем в новой базе
  5. В течении какого-то периода (например, месяц) в старой базе производятся манипуляции данными.
  6. После того как в старой базе все подогнано, удаляем созданные ранее документы "Корректировка записей регистров" и выполняем перенос остатков заново, опять таки по состоянию на 31 декабря 23:59:59.
  7. Физически удаляем в новой базе документы, помеченные на удаление. Те документы, которые засветились в регистрах, само собой, удалить не удастся. С этим придется смириться.

Как работает обработка.

Она подключается к старой базе, используя COMОбъект. Выполняются запросы к регистрам, получаются остатки.

Потом, перебирая результат запроса получаем уникальные идентификаторы объектов в старой базе, по которым потом ищем эти объекты в новой базе.

Есть, конечно, один нюанс. Если за время подгонки старой базы в ней будут созданы новые объекты (элементы справочников, документы), которые попадут в остатки, эти объекты, само собой, в новой базе найдены не будут. И соответственно в регистрах будут записи с полями <Объект не найден>. Исправить это можно будет проведением тестирования базы, указав, что несуществующие объекты надо создать.

Еще раз повторюсь, обработка не претендует на полноту реализации и предлагается только лишь в качестве иллюстрации методов работы с идентичными объектами в двух базах.

Файлы обработки:

-