Как правильно перенести остатки в новую базу после свертки, не потянув лишние документы

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

Перенос остатков из «замусоренной» или старой базы в чистую — задача, с которой рано или поздно сталкивается любой специалист 1С. Казалось бы, алгоритм прост: выполнить свертку типовой обработкой, получить документы Ввод остатков или Операция и перенести их в новую информационную базу с помощью универсальной обработки ВыгрузкаЗагрузкаXML. Однако на практике специалисты часто сталкиваются с «эффектом снежного кома»: попытка выгрузить одну операцию ввода остатков приводит к тому, что в файл выгрузки попадает добрая половина старой базы (тысячи документов прошлых периодов). Разберем по шагам, почему это происходит и как выполнить перенос максимально «чисто».

Выясняем причину: почему тянутся лишние документы

Основная причина кроется в принципе ссылочной целостности, на котором базируется обработка ВыгрузкаЗагрузкаXML. Когда мы помечаем для выгрузки документ Операция (бухгалтерский и налоговый учет), программа анализирует все ссылки, содержащиеся в его движениях. Если в качестве субконто на счетах расчетов (60, 62, 76) указан конкретный «Документ расчетов» (накладная, акт, счет-фактура), обработка обязана включить этот объект в файл, чтобы ссылка не стала «битой». Этот документ, в свою очередь, ссылается на договор и контрагента, а также может иметь связи с другими документами (например, через регистры НДС). В результате механизм «тянет» за собой всю цепочку взаимосвязанных объектов.

Решение 1: Метод «фиктивного документа» для разрыва связей

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

  1. В исходной базе (после проведения свертки) создаем один или несколько технических документов. Например, в 1С:Бухгалтерия 2.0 это может быть документ Документ расчетов (ручной учет).
  2. Используем обработку Поиск и замена значений или Групповая обработка справочников и документов.
  3. Во всех сформированных операциях ввода остатков заменяем ссылки на реальные документы (счета-фактуры, поступления, реализации) на наш созданный технический «Документ-заглушку».
  4. Теперь при выгрузке через XML система увидит только ссылку на один технический документ, и рекурсивная выгрузка всей истории документов прекратится.

Важно: этот метод подходит только в том случае, если вам не требуется в новой базе восстанавливать книгу покупок/продаж по старым авансам в автоматическом режиме, так как аналитика по конкретным счетам-фактурам будет утеряна.

Решение 2: Оптимизация учета перед переносом (Борьба с «бабочками»)

Часто свертка не дает ожидаемого эффекта из-за кривого ведения учета. Проанализируем ситуацию в ОСВ по счетам 60, 62 и 76. Проблема «бабочек» — это наличие одновременно дебетового и кредитового остатка по одному контрагенту и договору, но на разных документах расчетов.

Проанализируем шаги по очистке перед выгрузкой:

Решение 3: Использование «Конвертации данных» (КД 2.0)

Наиболее профессиональный и гибкий подход — написание простых правил обмена. Это позволит нам контролировать, какие данные переносятся «по ссылке», а какие — только по ключевым полям.

Рассмотрим, как настроить правила в КД для нашей задачи:

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

Пример кода в ПВД (Правилах выгрузки данных) для фильтрации только нужных документов:


// Пример фильтрации выгрузки движений
Если Источник.Дата < ДатаСвертки Тогда
    Отказ = Истина; // Не выгружаем движения старше даты свертки
КонецЕсли;

Решение 4: Жесткое удаление и ТиИ (для работы в одной базе)

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

  1. Выполняем свертку встроенной обработкой.
  2. Помечаем на удаление все документы до даты свертки.
  3. Используем стандартное удаление объектов. Если объекты не удаляются из-за связей, применяем специализированные обработки (например, «Удаление объектов без контроля ссылочной целостности»). Внимание: это опасная операция!
  4. После «жесткого» удаления обязательно запускаем Тестирование и исправление (ТиИ) с включенными опциями:
    • Реиндексация таблиц.
    • Проверка ссылочной целостности (ставим «Очищать ссылки» или «Создавать объекты» для битых ссылок).
    • Сжатие таблиц базы данных.

Особенности регистров НДС

Проанализируем ситуацию с регистрами накопления НДС (НДС Продажи, НДС Покупки, НДС Предъявленный). Свертка создает движения не только по бухгалтерскому плану счетов, но и по этим регистрам. В них ссылки на первичные документы (счета-фактуры) являются ключевыми для корректного формирования отчетности в будущем.

Если вы планируете продолжать вести учет НДС в новой базе (например, принимать к вычету НДС по старым авансам), вам придется перенести документы-основания, по которым есть остатки на счетах 76.АВ и 76.ВА. В этом случае выгрузка «с движениями» оправдана, но только для узкого круга документов. Для этого в обработке ВыгрузкаЗагрузкаXML рекомендуется использовать фильтр по периоду или конкретным типам документов, чтобы не захватить лишнего.

Итоги и рекомендации

Подведем итог нашему исследованию. Чтобы перенос остатков прошел успешно:

Помните, что чистота новой базы зависит не только от способа переноса, но и от того, насколько корректно была проведена подготовка данных в базе-источнике.

← На главную