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

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

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

Почему Универсальный формат (Enterprise Data) — худший выбор для этой задачи?

На первый взгляд идея использовать стандартный план обмена СинхронизацияДанныхЧерезУниверсальныйФормат выглядит привлекательно. Кажется, достаточно настроить фильтр по организации и запустить выгрузку. Однако на практике этот метод приводит к серьезным техническим проблемам:

  1. Отсутствие выгрузки движений (регистров). Формат Enterprise Data ориентирован исключительно на передачу документов и справочников. Он не предназначен для переноса движений по регистрам накопления, регистрам сведений и бухгалтерским регистрам. Если вы попытаетесь вручную добавить сотни регистров КА 2 в состав этого плана обмена, вы столкнетесь с критическим падением производительности системы при регистрации изменений, а также с ошибками XDTO-пакетов, которые не спроектированы под такую структуру.
  2. Различие в расчете себестоимости. Поскольку документы переносятся без проводок и движений, в принимающей базе их придется проводить заново. Алгоритмы партионного учета и расчета себестоимости в КА 2 крайне чувствительны к хронологии, остаткам и настройкам распределения расходов. Малейшее расхождение в копейках на этапе ввода начальных остатков приведет к тому, что процедура «Закрытия месяца» в новой базе рассчитает совершенно иную себестоимость, из-за чего изменятся проводки и финансовый результат.
  3. Проблемы со связанными справочниками. При жесткой фильтрации по организации часто не выгружаются такие критически важные аналитики, как договоры контрагентов или подразделения. В КА 2 справочник СтруктураПредприятия (Подразделения) является единым для управленческого и регламентированного учета. Если подразделение не связано напрямую через правила регистрации с выгружаемыми объектами или нарушена его иерархия, оно просто не попадет в файл обмена, что приведет к появлению пустых полей в документах приемника. Договоры контрагентов также привязаны к партнерам, и при наличии расчетов по нескольким организациям правила обмена могут отсечь «чужие» договоры, оставив документы без ключевой аналитики.
  4. Конфликты механизмов Интеркомпани (Intercompany). Если в исходной базе настроена автоматическая передача товаров между вашими организациями, разделение баз разорвет эти сквозные цепочки. Выгрузить корректно одну организацию без документов передачи, завязанных на вторую организацию, станет невозможно.

Решение проблемы через механизм РИБ (Распределенные информационные базы)

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

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

Сценарий А. Создание «отвязанной» (автономной) базы через РИБ

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

  1. В главной базе настройте узел РИБ с фильтром по нужной организации.
  2. Сформируйте начальный образ периферийной базы. Платформа автоматически отсечет все документы, движения и справочники, не относящиеся к выбранному юридическому лицу, создав чистую и готовую к работе базу.
  3. Запустите созданную периферийную базу и полностью разорвите ее связь с центральным узлом. Для этого выполните в ней следующий код на встроенном языке:

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

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

Сценарий Б. Настройка постоянного одностороннего обмена в РИБ

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

  1. В подчиненном узле (в периферийной базе) полностью отключите регистрацию изменений для всех объектов обмена.
  2. Это можно сделать программно, очистив правила регистрации изменений на стороне периферийного узла, либо удалив регистрацию через стандартную обработку «Регистрация изменений для обмена».
  3. При такой схеме изменения будут регистрироваться только на стороне главного узла и уходить в периферийные базы. Любые действия пользователей в дочерних базах (включая проведение документов и расчет себестоимости) останутся локальными и никогда не затрут данные в центральной базе.

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


// Снятие регистрации изменений на подчиненном узле для предотвращения отправки данных в центр
Процедура ОтменитьРегистрациюНаПодчиненномУзле(СсылкаНаУзел) Экспорт
    Для Каждого ЭлементПланаОбмена Из СсылкаНаУзел.Метаданные().Состав Цикл
        ПланыОбмена.УдалитьРегистрациюИзменений(СсылкаНаУзел, ЭлементПланаОбмена.Метаданные);
    КонецЦикла;
КонецПроцедуры

Архитектурная альтернатива: Выделенный узел РИБ для тяжелых расчетов

Проанализируем первоначальную проблему: бухгалтерии требуется разделение, чтобы «Закрытие месяца» не тормозило работу пользователей. Вместо создания 10 отдельных баз для 10 организаций (что потребует огромных затрат на администрирование, обновление конфигураций и сверку взаиморасчетов) можно применить концепцию «выделенного узла для тяжелых операций».

Рассмотрим этот подход по шагам:

  1. Создается ровно один подчиненный узел РИБ (полная копия со всеми организациями).
  2. В основной базе устанавливается Дата запрета редактирования для закрываемого периода. Это гарантирует, что обычные пользователи в течение дня больше не изменят документы прошлого месяца.
  3. Все расчеты, распределение затрат и процедура «Закрытия месяца» поочередно запускаются в подчиненном узле РИБ. Поскольку этот узел развернут на отдельном рабочем сервере (или в отдельной базе SQL), тяжелые расчеты себестоимости никак не влияют на оперативную работу менеджеров в центральной базе.
  4. После успешного завершения расчета себестоимости все сформированные проводки и движения документов передаются обратно в центральную базу через стандартную синхронизацию РИБ. Платформа 1С оптимизирована для быстрой пакетной загрузки готовых движений.

Альтернативный метод: «Полная копия + Очистка»

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

  1. Создайте полную копию рабочей базы «1С:Комплексная автоматизация 2» со всеми настройками, справочниками и историческими движениями регистров.
  2. Используйте специализированные групповые обработки (например, «Выборочное удаление организаций» или типовую обработку «Групповое изменение реквизитов» совместно со стандартной сверткой базы).
  3. Физически удалите из созданной копии документы и движения по всем организациям, кроме одной целевой.

Этот подход гарантирует стопроцентное совпадение нормативно-справочной информации (НСИ), настроек учетной политики, регистров сведений и, самое главное, — сохранение абсолютно точных исторических проводок и движений, которые были рассчитаны до момента разделения баз.

Резюме и рекомендации

Перед тем как приступать к разделению единого информационного пространства на 10 изолированных баз, обязательно взвесьте все риски. Поддержка актуальности нормативно-справочной информации (синхронизация партнеров, контрагентов, номенклатуры), постоянные сверки остатков и затраты на администрирование 10 баз могут обойтись компании значительно дороже, чем покупка более мощного серверного оборудования. Зачастую перевод СУБД на быстрые NVMe-накопители, оптимизация индексов и увеличение оперативной памяти сервера решают проблему блокировок при «Закрытии месяца» без необходимости разделения баз.

← На главную