Как правильно разделить базу 1С:УТП на управленческий и бухгалтерский учет и сколько времени занимает выгрузка?

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

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

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

Оценка времени выгрузки и резервного копирования базы 1С

Утверждения о том, что выгрузка информационной базы размером 67 Гб может занять около года, абсолютно не соответствуют действительности. Проанализируем реальные показатели скорости выполнения операций дампа и выгрузки для баз, работающих под управлением MS SQL Server:

  1. Выгрузка средствами MS SQL Server (backup .bak): Создание резервной копии базы объемом 67–150 Гб на сервере с дисками SATA/SAS или RAID-массивом занимает от 15 до 30 минут. Восстановление из дампа на аналогичное железо выполняется за 20–40 минут.
  2. Выгрузка в файл информационной базы (.dt): Формирование файла .dt через Конфигуратор 1С с проверкой целостности данных для базы объемом ~70 Гб занимает в среднем от 1,5 до 2 часов в зависимости от частоты процессора сервера и дисковой подсистемы. Загрузка файла .dt обычно длится от 3 до 6 часов.

Завышенные требования специалистов к установке скоростных SSD-дисков чаще всего связаны не с самой операцией выгрузки, а с необходимостью развертывания отдельного тестового контура. Отладка тяжелых алгоритмов свёртки данных и массового перепроведения документов на рабочем сервере может приводить к высокой нагрузке на CPU и диски, что блокирует работу пользователей. Для работы разработчика оптимально предоставить отдельную тестовую среду с локальным SSD и лицензией MS SQL Server Developer Edition.

Почему стратегия «копирование базы и удаление лишних данных» неэффективна

Частая ошибка при разделении учета — создание полной копии рабочей базы с последующей попыткой вырезать из нее «ненужные» документы за прошлые годы (например, с 2011 года) и выполнить полное перепроведение. Проанализируем, почему этот путь приводит к проблемам:

  1. Экспоненциальный рост времени перепроведения: Если перепроведение документов за один месяц занимает около 4 часов, то последовательная обработка данных за несколько лет потребует сотен часов непрерывной работы СУБД.
  2. Рассинхронизация и расхождение итогов: При массовом удалении и перепроведении исторических документов неизбежно разрушаются цепочки партионного учета, списываются партии по нулевой стоимости и возникают негативные остатки на регистрах. В итоге данные разделенной базы перестают совпадать с фактическими отчетами.
  3. Блокировки и переполнение TempDB: Каскадное физическое удаление ссылочных объектов в 1С генерирует огромный объем транзакций в MS SQL Server, что приводит к роздутию файла журнала транзакций (.ldf) и переполнению служебных таблиц.

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

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

Рассмотрим пошагово этот процесс:

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

Технические оптимизации при массовых манипуляциях с базой

Если в процессе подготовки разделенной базы вам все же требуется выполнить массовую загрузку или корректировку большого массива документов, используйте следующие технические приемы оптимизации платформы 1С и СУБД:

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


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

// ... Выполнение массовой обработки документов ...

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

2. Пакетная обработка в транзакциях
Не записывайте и не проводите объекты по одному. Объединяйте обработку в порции по 500–1000 документов с явным фиксатором транзакции ЗафиксироватьТранзакцию().


ВыборкаДокументов = Документы.РеализацияТоваровУслуг.Выбрать(ДатаНачала, ДатаОкончания);
Счетчик = 0;

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

Если ТранзакцияАктивна() Тогда
    ЗафиксироватьТранзакцию();
КонецЕсли;

3. Перевод MS SQL в простую модель восстановления (Simple)
На время выполнения технических работ переведите модель восстановления базы MS SQL из режима Full в Simple. Это предотвратит бесконечный рост журнала транзакций .ldf и снизит нагрузку на диски. По завершении разделения баз выполните обслуживающие процедуры (реиндексацию ALTER INDEX REBUILD и обновление статистики) и верните режим Full.

← На главную