Как успешно разделить базу «1С:Комплексная автоматизация 1.1» по организациям?

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

Разделение крупной информационной базы (особенно такой «тяжелой» конфигурации, как «1С:Комплексная автоматизация 1.1» или «1С:Управление производственным предприятием 1.3» объемом 65 ГБ и более) — это сложная техническая задача. Часто возникает ситуация, когда из тридцати-сорока организаций две компании продают, и по ним необходимо полностью перенести все исторические данные в чистую, отдельную базу данных. В этой статье мы подробно и по шагам разберем проверенные практические методы решения этой задачи, проанализируем архитектурные сложности конфигурации и выясним, как оптимизировать процесс очистки базы.

Метод 1. Использование универсальной обработки «ВыгрузкаЗагрузкаДанныхXML»

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

Рассмотрим алгоритм работы с обработкой подробнее:

  1. Открываем обработку ВыгрузкаЗагрузкаДанныхXML82.epf (или аналогичную версию для вашей платформы) в базе-источнике.
  2. В списке выгружаемых объектов выбираем необходимые документы и справочники.
  3. Для того чтобы не настраивать отбор вручную для каждого из сотен типов документов, настраиваем отбор по реквизиту Организация для одного ключевого документа.
  4. Используем функцию копирования отборов: нажимаем кнопку копирования настройки отбора и применяем её ко всем остальным видам документов. Это значительно экономит время администратора.
  5. Выгружаем данные во временный XML-файл и затем загружаем его в предварительно созданную пустую базу данных с аналогичной конфигурацией.

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

Метод 2. Использование распределенной информационной базы (РИБ) с фильтрацией

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

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

Для успешного разделения базы через РИБ выполним следующие шаги:

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

Архитектурная сложность управленческого учета в КА 1.1

Проанализируем ключевое препятствие, с которым сталкиваются разработчики при попытке автоматической выгрузки данных из «1С:Комплексная автоматизация 1.1». В отличие от регламентированного (бухгалтерского) учета, в ключевых регистрах управленческого учета (таких как ПартииТоваровНаСкладах, ВзаиморасчетыПоУправленческомуУчету) отсутствует измерение «Организация».

Из-за этого стандартные фильтры планов обмена или простые XML-выгрузки не могут определить принадлежность записей регистров к конкретной фирме. Данные либо теряются, либо переносятся некорректно.

Для решения этой проблемы мы рекомендуем два подхода:

Метод 3. Оптимизация схемы «Копия и удаление» для баз объемом 65 ГБ и более

Если мы решим пойти путем создания полной копии базы и последующего удаления ненужных 38 организаций, стандартная процедура удаления помеченных объектов в 1С может зависнуть на несколько суток. Это происходит из-за ресурсоемкого поиска ссылок на удаляемые элементы по всей базе данных.

Рассмотрим, как можно ускорить этот процесс в несколько раз:

  1. Многопоточное удаление: Используем специализированные внешние обработки с поддержкой многопоточности, которые производят непосредственное удаление документов и справочников выбранных организаций без контроля ссылочной целостности на промежуточных этапах.
  2. Прямая очистка на уровне СУБД (MS SQL или PostgreSQL):
    • В копии базы программно помечаем на удаление все документы ненужных организаций.
    • На уровне СУБД через SQL-запросы очищаем таблицы итогов и неиспользуемых регистров, движения которых привязаны к удаляемым документам.
    • Сжимаем файлы базы данных с помощью команды СУБД: DBCC SHRINKDATABASE (ИмяБазыДанных);
    • Запускаем штатную процедуру удаления оставшихся пустых ссылок непосредственно в интерфейсе 1С. Этот комбинированный подход экономит десятки часов работы сервера.

Метод 4. Предварительная свертка базы по организации

Перенос многолетней истории работы часто не имеет практического смысла и лишь удваивает количество ошибок. Гораздо эффективнее применить метод локальной свертки.

Разберем этот процесс по шагам:

  1. Делаем копию рабочей информационной базы.
  2. Запускаем штатную или специализированную обработку свертки информации (например, «Свертка информационной базы»).
  3. Настраиваем формирование остатков на начало выбранного отчетного периода строго в разрезе двух переносимых организаций.
  4. Удаляем все документы прошлых периодов по всем остальным организациям.
  5. В результате мы получаем максимально «легкую» и чистую базу с корректными входящими остатками и историей документов только по необходимым юридическим лицам за последний рабочий год.

Метод 5. Использование встроенного механизма разделения данных (SaaS-режим)

Если физически разделять файлы баз данных нет жесткой необходимости, а требуется лишь разграничить доступ пользователей разных организаций к документам друг друга, проанализируем альтернативный вариант платформы 1С — Разделение данных.

Этот механизм позволяет использовать общий системный реквизит (например, Организация) в качестве общего разделителя данных. При включении этого режима пользователи будут работать в единой физической базе СУБД (65 ГБ), но на уровне платформы они будут видеть исключительно свои справочники, документы и отчеты. Данные других компаний будут для них физически недоступны. Это полностью исключает необходимость сложного регулярного переноса данных и постоянной поддержки нескольких актуальных конфигураций.

← На главную