Как правильно удалить лишние организации в 1С:Бухгалтерия 3.0 через механизм РИБ и исправить ошибки в ОСВ?

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

При работе с крупными базами данных 1С:Бухгалтерия 8.3 часто возникает задача разделения учета или удаления старых, ненужных организаций для повышения производительности и удобства работы. Одним из самых быстрых способов кажется использование механизма Распределенных Информационных Баз (РИБ) с фильтрацией по организации. Однако на практике специалисты сталкиваются с неприятным эффектом: после создания начального образа данные в базе вроде бы есть (их видно в документах и проводках), но отчеты, такие как Оборотно-сальдовая ведомость (ОСВ), показывают пустые значения или полное отсутствие аналитики по субконто. Рассмотрим подробно, почему это происходит и как корректно выполнить очистку базы.

Разберем механизм создания РИБ по организации

Для того чтобы выделить одну организацию в отдельную базу, обычно используется следующий алгоритм:

  1. В исходной базе настраивается новый узел в плане обмена "По организации".
  2. Указываются фильтры: выбираются только те юридические лица, которые должны попасть в новую базу.
  3. Выполняется создание начального образа (СоздатьНачальныйОбраз).
  4. В полученной базе отключается связь с главным узлом, чтобы она стала автономной. Для этого используется программный код:
    
    ПланыОбмена.УстановитьГлавныйУзел(Неопределено);
    

Проблема заключается в том, что при создании начального образа система копирует физические записи таблиц регистров, но далеко не всегда корректно пересчитывает виртуальные таблицы итогов для нового, ограниченного набора данных. В итоге мы получаем ситуацию, когда записи в регистре бухгалтерии Хозрасчетный существуют, но итоги по ним "нулевые" или "битые".

Анализируем проблему "пустых" отчетов

Проанализируем ситуацию, описанную пользователями: при формировании ОСВ (например, по 51 счету) аналитика по расчетным счетам не отображается, обороты равны нулю. При этом, если зайти в Карточку счета, движения видны. Если перепровести документ, данные в ОСВ мгновенно появляются. Выясним причину такого поведения.

Отчет Оборотно-сальдовая ведомость строится на основе виртуальных таблиц остатков и оборотов. В 1С эти таблицы хранятся отдельно от основных записей регистров для ускорения работы. При частичной выгрузке данных через РИБ механизм платформы может "подхватить" старые индексы или некорректно инициализировать итоги в новой базе. Стандартное Тестирование и исправление (ТИИ) с галочкой "Пересчет итогов" в конфигураторе помогает не всегда, так как система может считать, что итоги уже актуальны.

Способ 1: Программный принудительный пересчет итогов

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


// Отключаем использование итогов для регистра бухгалтерии
РегистрыБухгалтерии.Хозрасчетный.УстановитьИспользованиеИтогов(Ложь);

// Включаем обратно - это инициирует полный пересчет
РегистрыБухгалтерии.Хозрасчетный.УстановитьИспользованиеИтогов(Истина);

Этот метод является наиболее эффективным для восстановления целостности отчетов в "отпочковавшейся" базе.

Способ 2: Массовое обновление документов без перепроведения

Иногда проблема кроется в нарушении связей аналитики (субконто). Рассмотрим случай, когда перепроведение одного документа исправляет ситуацию. Чтобы не перепроводить тысячи документов вручную (что может привести к изменению копеек из-за разницы в алгоритмах или учетной политике), воспользуемся хитростью с Групповым изменением реквизитов:

  1. Откроем обработку Групповое изменение реквизитов.
  2. Выберем необходимые типы документов.
  3. В настройках (кнопка "Дополнительные параметры") установим флаг "Объекты только с движениями" и "Выполнять в транзакции".
  4. Не выбирая никаких реквизитов для изменения, нажмем кнопку "Изменить параметры".

Система просто "перезапишет" каждый документ. При записи документа 1С автоматически обновляет его движения в регистрах и, соответственно, актуализирует таблицы итогов. Это происходит гораздо быстрее полного перепроведения.

Альтернативный метод: Использование формата EnterpriseData

Посмотрим на ситуацию с другой стороны. РИБ — это технология копирования таблиц "как есть". Более современным и надежным способом разделения баз в 1С:Бухгалтерия 3.0 является использование Универсального формата обмена (EnterpriseData). Пошагово это выглядит так:

  1. Создаем новую пустую базу с идентичной конфигурацией.
  2. В исходной базе настраиваем синхронизацию данных через Универсальный формат.
  3. В настройках состава данных устанавливаем фильтр по нужной организации.
  4. Выполняем первую выгрузку/загрузку.

Преимущество этого метода: данные в целевой базе создаются "с нуля" через механизмы записи объектов. Это гарантирует, что все индексы, итоги и связи аналитики будут сформированы корректно в момент загрузки. Кроме того, этот метод позволяет избежать переноса "мусора" из системных таблиц, который часто тянется за РИБ-копией.

Что важно не забыть при очистке базы

Рассмотрим нюансы, которые часто упускают при использовании РИБ для удаления организаций:

Метод "от обратного": Свертка и удаление

Проанализируем еще один способ, который часто оказывается надежнее РИБ — удаление лишнего из полной копии. Если организаций немного, а данных по ним миллионы строк, попробуем следующее:

  1. Делаем полную копию всей базы.
  2. Используем обработку Пометка на удаление всех документов по организации (через групповое изменение реквизитов).
  3. Запускаем типовое Удаление помеченных объектов.

Совет для ускорения: Чтобы удаление не длилось вечность, предварительно очистите программно записи независимых регистров сведений, где есть измерение Организация. Поиск ссылок в таких регистрах — самая ресурсоемкая часть процесса удаления. Используйте НаборЗаписей.Записать() для быстрой очистки.

Таким образом, если вы уже создали базу через РИБ и столкнулись с "корявыми" отчетами, начните с программного пересчета итогов (через включение/выключение). Если же вы только планируете процесс, рассмотрите EnterpriseData как более чистый и современный способ разделения учета.

← На главную