Как выгрузить 1С:Комплексная автоматизация из облака, если процесс длится более 24 часов и прерывается?

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

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

Проанализируем причины долгой выгрузки

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

  1. Версионирование объектов. В конфигурации «1С:Комплексная автоматизация» часто включено хранение истории изменений. Регистр сведений ВерсииОбъектов может занимать до 70% объема всей базы. При выгрузке через «Мастер перехода» система перебирает каждую запись, что чудовищно замедляет процесс.
  2. Присоединенные файлы. Сканы договоров, PDF-счета и картинки товаров, хранящиеся непосредственно в базе данных (а не в томах на диске), требуют сериализации при выгрузке в XML. Если файлов сотни тысяч, процесс может длиться бесконечно.
  3. Неактуальные итоги и индексы. Если в облаке давно не выполнялись регламентные операции по обслуживанию базы, чтение данных для экспорта будет происходить с минимальной скоростью.

Способ 1: Оптимизация данных перед выгрузкой

Проанализируем состояние базы. Если клиент планирует «свалить» с облака или просто получить архив, нам необходимо максимально облегчить структуру данных. Самый эффективный метод — работа с версионированием.

Рассмотрим порядок действий:

  1. Перейдем в раздел Администрирование — Общие настройки — История изменений.
  2. Проверим объем хранимых версий. Если они не критичны для переноса, выполним очистку за старые периоды.
  3. Воспользуемся стандартной обработкой ОчисткаНенужныхДанных (если она доступна в конкретном облачном сервисе) для удаления временных файлов и логов.

Очистка регистра ВерсииОбъектов может сократить время выгрузки с 30 часов до 2–3 часов, что позволит «уложиться» в технологическое окно до перезагрузки облака.

Способ 2: Использование «Автономного рабочего места» (АРМ)

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

Суть метода заключается в следующем:

  1. В облачной базе создается настройка автономного рабочего места.
  2. На локальный компьютер устанавливается пустая база «1С:Комплексная автоматизация» той же версии.
  3. Запускается синхронизация. В отличие от полной выгрузки, АРМ передает данные порциями.
  4. Преимущество: Если связь прервется или сервер облака перезагрузится в 22:00, синхронизация не начнется заново, а продолжится с того момента, на котором остановилась.

После завершения полной синхронизации у вас на локальном компьютере будет полноценная копия базы, которую можно отвязать от облака и использовать как самостоятельную локальную версию.

Способ 3: Взаимодействие с администраторами облака

Как справедливо отмечено в обсуждении, иногда «не нужно выёживаться», а стоит обратиться в техподдержку. Облачные провайдеры делают ежедневные бэкапы на уровне СУБД (файлы .bak). Выгрузка через .dt или XML-мастер — это пользовательский интерфейс, который всегда медленнее прямого копирования базы администратором.

Посмотрим, что можно запросить у службы поддержки:

Способ 4: Настройка фонового задания в сервисе

В некоторых сервисах (например, 1C:Fresh) предусмотрена возможность поставить выгрузку «в очередь» на стороне сервера. Проанализируем этот путь:

Вместо того чтобы запускать выгрузку интерактивно в браузере, мы заходим в личный кабинет сервиса и инициируем создание архивной копии. В этом случае процесс идет в фоновом режиме непосредственно на серверах облака. После завершения формирования архива вам придет уведомление, и вы сможете просто скачать готовый файл по ссылке. Это исключает проблему разрыва соединения с вашим компьютером.

Технические нюансы многопоточной выгрузки

Автор вопроса интересовался наличием многопоточной обработки. Важно понимать, что штатный механизм ВыгрузитьДанныеДляПереходаВЛокальнуюВерсию() работает в один поток, так как он формирует единый последовательный файл XML. Написать внешнюю компоненту для многопоточной выгрузки всей базы «с нуля» — задача крайне трудозатратная и нецелесообразная для разовой задачи.

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


// Пример логики разделения выгрузки по периодам для уменьшения объема порции
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ Ссылка ИЗ Документ.РеализацияТоваровУслуг ГДЕ Дата МЕЖДУ &Начало И &Конец";
Запрос.УстановитьПараметр("Начало", ДатаНачала);
Запрос.УстановитьПараметр("Конец", ДатаОкончания);
// Далее следует передача выборки в универсальный механизм обмена

Резюме: Если база КА «небольшая», но выгружается сутки — ищите проблему в регистре версий или присоединенных файлах. Очистка этих данных — самый быстрый способ. Если очистка невозможна — используйте Автономное рабочее место или запрашивайте прямой бэкап у администраторов облака.

← На главную