При работе с крупными базами данных 1С:Бухгалтерия 8.3 часто возникает задача разделения учета или удаления старых, ненужных организаций для повышения производительности и удобства работы. Одним из самых быстрых способов кажется использование механизма Распределенных Информационных Баз (РИБ) с фильтрацией по организации. Однако на практике специалисты сталкиваются с неприятным эффектом: после создания начального образа данные в базе вроде бы есть (их видно в документах и проводках), но отчеты, такие как Оборотно-сальдовая ведомость (ОСВ), показывают пустые значения или полное отсутствие аналитики по субконто. Рассмотрим подробно, почему это происходит и как корректно выполнить очистку базы.
Для того чтобы выделить одну организацию в отдельную базу, обычно используется следующий алгоритм:
СоздатьНачальныйОбраз).
ПланыОбмена.УстановитьГлавныйУзел(Неопределено);
Проблема заключается в том, что при создании начального образа система копирует физические записи таблиц регистров, но далеко не всегда корректно пересчитывает виртуальные таблицы итогов для нового, ограниченного набора данных. В итоге мы получаем ситуацию, когда записи в регистре бухгалтерии Хозрасчетный существуют, но итоги по ним "нулевые" или "битые".
Проанализируем ситуацию, описанную пользователями: при формировании ОСВ (например, по 51 счету) аналитика по расчетным счетам не отображается, обороты равны нулю. При этом, если зайти в Карточку счета, движения видны. Если перепровести документ, данные в ОСВ мгновенно появляются. Выясним причину такого поведения.
Отчет Оборотно-сальдовая ведомость строится на основе виртуальных таблиц остатков и оборотов. В 1С эти таблицы хранятся отдельно от основных записей регистров для ускорения работы. При частичной выгрузке данных через РИБ механизм платформы может "подхватить" старые индексы или некорректно инициализировать итоги в новой базе. Стандартное Тестирование и исправление (ТИИ) с галочкой "Пересчет итогов" в конфигураторе помогает не всегда, так как система может считать, что итоги уже актуальны.
Если типовой пересчет не дал результата, рекомендуется выполнить полное отключение и включение использования итогов через встроенный язык. Это заставляет платформу физически очистить таблицы итогов и сформировать их заново на основе имеющихся проводок. Выполним следующий код во внешней обработке:
// Отключаем использование итогов для регистра бухгалтерии
РегистрыБухгалтерии.Хозрасчетный.УстановитьИспользованиеИтогов(Ложь);
// Включаем обратно - это инициирует полный пересчет
РегистрыБухгалтерии.Хозрасчетный.УстановитьИспользованиеИтогов(Истина);
Этот метод является наиболее эффективным для восстановления целостности отчетов в "отпочковавшейся" базе.
Иногда проблема кроется в нарушении связей аналитики (субконто). Рассмотрим случай, когда перепроведение одного документа исправляет ситуацию. Чтобы не перепроводить тысячи документов вручную (что может привести к изменению копеек из-за разницы в алгоритмах или учетной политике), воспользуемся хитростью с Групповым изменением реквизитов:
Групповое изменение реквизитов.Система просто "перезапишет" каждый документ. При записи документа 1С автоматически обновляет его движения в регистрах и, соответственно, актуализирует таблицы итогов. Это происходит гораздо быстрее полного перепроведения.
Посмотрим на ситуацию с другой стороны. РИБ — это технология копирования таблиц "как есть". Более современным и надежным способом разделения баз в 1С:Бухгалтерия 3.0 является использование Универсального формата обмена (EnterpriseData). Пошагово это выглядит так:
Универсальный формат.Преимущество этого метода: данные в целевой базе создаются "с нуля" через механизмы записи объектов. Это гарантирует, что все индексы, итоги и связи аналитики будут сформированы корректно в момент загрузки. Кроме того, этот метод позволяет избежать переноса "мусора" из системных таблиц, который часто тянется за РИБ-копией.
Рассмотрим нюансы, которые часто упускают при использовании РИБ для удаления организаций:
Проанализируем еще один способ, который часто оказывается надежнее РИБ — удаление лишнего из полной копии. Если организаций немного, а данных по ним миллионы строк, попробуем следующее:
Пометка на удаление всех документов по организации (через групповое изменение реквизитов).Удаление помеченных объектов.Совет для ускорения: Чтобы удаление не длилось вечность, предварительно очистите программно записи независимых регистров сведений, где есть измерение Организация. Поиск ссылок в таких регистрах — самая ресурсоемкая часть процесса удаления. Используйте НаборЗаписей.Записать() для быстрой очистки.
Таким образом, если вы уже создали базу через РИБ и столкнулись с "корявыми" отчетами, начните с программного пересчета итогов (через включение/выключение). Если же вы только планируете процесс, рассмотрите EnterpriseData как более чистый и современный способ разделения учета.