Наверное, каждый специалист, обслуживающий систему на платформе 1С, сталкивался с проблемой изменения структуры объектов 1С, вызванной очень долгой реструктуризации соответствующих таблиц в случае их большого размера.
Начиная с платформы версии 8.3.11.2867 1С оптимизировала типовой алгоритм реструктуризации, поэтому разработка наиболее актуальна для более ранних версий 8.3 и 8.2.
О реструктуризации опубликовано достаточно много информации, но все же кратко опишу, что это и в чем проблема.
Реструктуризация в рамках 1С - это изменение структуры и состава таблиц базы данных и перенос имеющихся данных в изменённые таблицы. Обычно реструктуризация выполняется в тот момент, когда вы нажимаете "Обновить конфигурацию базы данных" в Конфигураторе.
Основная проблема заключается в том, что при типовой реструктуризации (в платформах до версии 8.3.11.2867) создается пустая таблица новой структуры, в которую копируются данные из исходной таблицы. В случае большого размера исходной таблицы реструктуризация может затянуться на несколько часов, а иногда и дней. При этом БД остается недоступной и повышается риск порчи БД вследствие возможных системных сбоев.
Одно из решений - подмена проблемной таблицы пустой копией, обновление базы и приведение структуры исходной таблицы в соответствие с новой структурой таблицы подмены вручную.
Но этот способ связан с необходимостью выполнения ряда рутинных и достаточно нудных, на мой взгляд, действий:
- анализ объектов реструктуризации в 1С;
- получение внутренних имен подменяемых таблиц в 1С;
- генерация скриптов сознания копий подменяемых таблиц в ms management studio;
- создание копий и подмена исходных таблиц в ms management studio;
- обновление базы в 1С;
- анализ новой структуры таблиц подмены в ms management studio;
- подготовка скриптов корректировки структуры исходных таблиц, либо корректировка исходных таблиц в форме мастера в ms management studio;
- подмена пустых копий исходными таблицами в ms management studio;
- удаление пустых копий ms management studio;
Представленная обработка полностью автоматизирует действия до и после обновления базы в 1С.
Ограничения: доступна быстрая реструктуризация только таблиц журналов, документов, справочников и регистров сведений. Обработка не предназначена для ускорения реструктуризации при расширении ссылочного типа до составного ссылочного. Обработка только для клиент-серверных баз 1С, для использования необходим доступ к серверу SQL с правом создания и изменения объектов
Порядок проведения быстрой реструктуризации с помощью обработки "БыстроеОбновлениеБД.epf":
1. Заблокируйте доступ к обновляемой БД.
2. Выполните монопольный вход в программу и запустите обработку "БыстроеОбновлениеБД.epf".
3. Убедитесь в наличии актуальной копии БД с помощью команды "Получить дату последней резервной копии".
4. Выберите в списке объекты, которые необходимо обновить с подменой таблиц.
5. Выполните команду "Подготовить базу к реструктуризации".
6. Закройте монопольную сессию;
7. Выполните обновление БД в конфигураторе.
8. Выполните монопольный вход в программу и запустите обработку "БыстроеОбновлениеБД.epf".
9. Выполните команду "Завершить реструктуризацию".
10. Разблокируйте доступ к обновляемой БД - база готова к работе.
Результаты выполнения всех команд отображаются в поле "Журнал выполнения".
Дополнительные команды обработки:
"Анализ выбранных/подмененных таблиц" - выводит в поле журнала информацию о размере выбранных объектов:
"Показать скрипт подмены таблиц" - выводит в поле журнала текст скрипта SQL для подмены рабочих таблиц пустыми копиями:
"Отмена: откат к исходному состоянию" - команда возвращает базу в состояние до подмены таблиц, пустые копии удаляются;
"Анализ изменения структуры таблиц после обновления базы" - выводит в поле журнала информацию о изменениях внутренней структуры выбранных объектов после обновления конфигурации БД:
"Показать скрипт завершения реструктуризации" - выводит в поле журнала текст скрипта SQL для корректировки структуры исходных таблиц и обратной подмены:
В завершение, обращаю внимание, что данный метод осуществляет изменение структуры данных не типовыми средствами. Используйте его в крайнем случае, когда очень нужно, а по-другому никак. Рекомендую предварительный проверочный запуск реструктуризации с использованием представленной обработки в тестовой базе. И обязательно убедитесь в наличии актуальной резервной копии обновляемой БД.
Всем удачи!