Как разделить базу ЗУП 3.1 КОРП по организациям и что делать, если создание РИБ зависает?

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

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

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

Способ 1: Разделение через создание начального образа РИБ

Это штатный механизм платформы 1С. Рассмотрим алгоритм действий при настройке синхронизации с отбором. При этом полезно знать, как выполняется установка периода при добавлении документов для синхронизации вручную. Мы предполагаем, что вы уже зашли в раздел "Администрирование" — "Синхронизация данных" и выбрали создание РИБ по организации.

Проанализируем основную причину, по которой процесс может "замирать" на этапе настройки правил отправки данных. В ЗУП 3.1 КОРП создание начального образа — это тяжелая транзакция. Система должна проанализировать сотни таблиц и отобрать записи, относящиеся только к выбранному юридическому лицу.

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

Выясним, как форсировать процесс, если автоматика не срабатывает:

  1. Проверим консоль заданий. Если видим, что процесс "застыл", можно попробовать запустить регламентные задания вручную.
  2. В некоторых случаях помогает принудительный "толчок" через программный вызов выполнения заданий в консоли администратора.
  3. Убедимся, что параметр БлокировкаРегламентныхЗаданий в консоли кластера серверов 1С выключен для данной базы.

Способ 2: Программная очистка данных (альтернативный метод)

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

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

  1. Непосредственное удаление документов: Создадим обработку, которая находит все документы, где реквизит Организация не соответствует нужной нам компании.
  2. Очистка движений: Важно понимать, что при удалении объектов могут остаться записи в регистрах. Используем процедуру Тестирование и исправление (ТиИ) с опцией "Очищать ссылки при наличии битых ссылок".
  3. Работа со справочниками: После удаления документов многие элементы справочников (Сотрудники, ФизическиеЛица, Договоры) становятся ненужными. Проанализируем ситуацию: просто так удалить их не удастся, так как на них могут ссылаться независимые регистры сведений.

Посмотрим на пример логики для удаления документов в коде 1С:


ВыборкаДокументов = Документы.ПриемНаРаботу.Выбрать();
Пока ВыборкаДокументов.Следующий() Цикл
    Если ВыборкаДокументов.Организация <> НужнаяОрганизация Тогда
        ОбъектДок = ВыборкаДокументов.ПолучитьОбъект();
        ОбъектДок.ОбменДанными.Загрузка = Истина; // Отключаем проверки
        ОбъектДок.Удалить();
    КонецЕсли;
КонецЦикла;

Обратите внимание на использование ОбменДанными.Загрузка = Истина. Это критически важно, чтобы пропустить стандартные проверки при записи и удалении, что значительно ускоряет процесс и позволяет избежать блокировок от бизнес-логики программы.

Проблема независимых регистров сведений

Разберем по шагам, почему при попытке очистить справочники после удаления документов система часто выдает ошибку о наличии ссылок. В ЗУП 3.1 КОРП используется множество независимых регистров сведений, таких как ПлановыеНачисления, ГрафикиРаботыСотрудников или КадроваяИсторияСотрудников.

Эти регистры не имеют документа-регистратора, поэтому при удалении документов записи в них остаются. Чтобы очистить базу полностью, необходимо:

Использование обработки "Выгрузка и загрузка данных XML"

Рассмотрим еще один профессиональный способ. Вместо создания РИБ, мы можем использовать универсальную обработку "Выгрузка и загрузка данных XML" (из состава инструментов разработчика). Она позволяет выгрузить данные с отбором.

Выясним преимущества этого метода:

  1. Выгрузка по ссылкам: Вы можете выбрать только справочник Организации (нужный элемент) и документы по этой организации, установив флаг "Выгружать объекты по ссылкам".
  2. Чистота данных: В новую базу попадут только те объекты, которые действительно связаны с вашим учетом. Это позволяет избежать переноса "мусора", который часто мигрирует при создании РИБ.
  3. Контроль объема: Вы можете выгружать данные частями (например, по годам или по разделам учета), что снижает риск падения системы по памяти.

Рекомендации по оптимизации процесса

Независимо от выбранного метода, создание разделенной базы в ЗУП КОРП — ресурсоемкая задача. Проанализируем, как ускорить работу:

1. Подготовка SQL-сервера: Если база клиент-серверная, перед началом процесса рекомендуется перевести базу в режим Simple (простая модель восстановления) в настройках MS SQL Server, чтобы лог транзакций не раздувался до терабайтных размеров.

2. Тестирование и исправление: Перед разделением обязательно выполните пересчет итогов. Это ускорит работу выборок, которые делает платформа при миграции данных РИБ.

3. Полнотекстовый поиск: Отключите индексацию полнотекстового поиска. Это освободит значительную часть дисковой активности сервера.

4. Ожидание: Как показывает практика работы с ЗУП КОРП, создание начального образа для базы объемом более 50 Гб может занимать от 24 до 72 часов. Если процесс rphost потребляет ресурсы процессора, значит, работа идет — прерывать её нельзя.

Таким образом, для успешного разделения базы ЗУП 3.1 КОРП мы рекомендуем сначала убедиться в работоспособности регламентных заданий при настройке РИБ. Если же стандартный метод не помогает, следует переходить к программной очистке с обязательным учетом записей в независимых регистрах сведений.

← На главную