Ситуация, когда база «1С:Комплексная автоматизация» (КА) не успевает выгрузиться из облачного сервиса до плановой перезагрузки серверов, встречается довольно часто. Проблема осложняется тем, что стандартные механизмы выгрузки в облаках (особенно в формате XML для перехода в локальную версию) работают крайне медленно на больших объемах данных. Рассмотрим детально причины такой низкой производительности и разберем пошагово методы, которые позволят получить копию базы.
Прежде чем искать «многопоточную обработку», выясним, почему процесс занимает десятки часов. В большинстве случаев проблема не в мощности серверов облака, а в структуре данных самой базы. Основными факторами замедления являются:
ВерсииОбъектов может занимать до 70% объема всей базы. При выгрузке через «Мастер перехода» система перебирает каждую запись, что чудовищно замедляет процесс.Проанализируем состояние базы. Если клиент планирует «свалить» с облака или просто получить архив, нам необходимо максимально облегчить структуру данных. Самый эффективный метод — работа с версионированием.
Рассмотрим порядок действий:
ОчисткаНенужныхДанных (если она доступна в конкретном облачном сервисе) для удаления временных файлов и логов.Очистка регистра ВерсииОбъектов может сократить время выгрузки с 30 часов до 2–3 часов, что позволит «уложиться» в технологическое окно до перезагрузки облака.
Если база данных настолько велика, что даже после оптимизации она не выгружается за один сеанс, проанализируем механизм «Автономного рабочего места». Это штатный функционал многих облачных сервисов (включая 1C:Fresh).
Суть метода заключается в следующем:
После завершения полной синхронизации у вас на локальном компьютере будет полноценная копия базы, которую можно отвязать от облака и использовать как самостоятельную локальную версию.
Как справедливо отмечено в обсуждении, иногда «не нужно выёживаться», а стоит обратиться в техподдержку. Облачные провайдеры делают ежедневные бэкапы на уровне СУБД (файлы .bak). Выгрузка через .dt или XML-мастер — это пользовательский интерфейс, который всегда медленнее прямого копирования базы администратором.
Посмотрим, что можно запросить у службы поддержки:
.dt, сформированного на стороне сервера (это быстрее, чем тянуть его через браузер).В некоторых сервисах (например, 1C:Fresh) предусмотрена возможность поставить выгрузку «в очередь» на стороне сервера. Проанализируем этот путь:
Вместо того чтобы запускать выгрузку интерактивно в браузере, мы заходим в личный кабинет сервиса и инициируем создание архивной копии. В этом случае процесс идет в фоновом режиме непосредственно на серверах облака. После завершения формирования архива вам придет уведомление, и вы сможете просто скачать готовый файл по ссылке. Это исключает проблему разрыва соединения с вашим компьютером.
Автор вопроса интересовался наличием многопоточной обработки. Важно понимать, что штатный механизм ВыгрузитьДанныеДляПереходаВЛокальнуюВерсию() работает в один поток, так как он формирует единый последовательный файл XML. Написать внешнюю компоненту для многопоточной выгрузки всей базы «с нуля» — задача крайне трудозатратная и нецелесообразная для разовой задачи.
Однако, если вы обладаете правами на запуск внешних обработок, можно использовать универсальные обмены данными и выгружать информацию по частям (например, по организациям или периодам), используя код для разделения выборки:
// Пример логики разделения выгрузки по периодам для уменьшения объема порции
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ Ссылка ИЗ Документ.РеализацияТоваровУслуг ГДЕ Дата МЕЖДУ &Начало И &Конец";
Запрос.УстановитьПараметр("Начало", ДатаНачала);
Запрос.УстановитьПараметр("Конец", ДатаОкончания);
// Далее следует передача выборки в универсальный механизм обмена
Резюме: Если база КА «небольшая», но выгружается сутки — ищите проблему в регистре версий или присоединенных файлах. Очистка этих данных — самый быстрый способ. Если очистка невозможна — используйте Автономное рабочее место или запрашивайте прямой бэкап у администраторов облака.