Обрезание (сворачивание) базы 1С
Для оптимизации базы 1С применяют операцию обрезания. Это позволяет экономить место на диске, экономить время архивирования базы и скрыть архивные данные.
Обрезание базы происходит следующим образом. Выбирается дата среза, с которой в базе ведется учет по документам. До даты среза удаляются все документы. Вместо этих документов переносятся все остатки и данные периодических регистров сведений на дату среза.
Таким образом из базы можно вырезать блок данных, например, все документы до начала текущего года. Перенесенные остатки на дату среза позволят продолжить работу в штатном режиме. Теоретически, база должна работать как раньше, до обрезания. На практике возникает много нюансов, связанных с заменой движений документов на итоговые данные на дату среза.
В данной статье рассмотрены проблемы, с которыми столкнулся автор при обрезании рабочей базы 1С. Также представлена обработка, с помощью которой переносились данные.
Поставляется как часть программного продукта «Обработка Командер 1С», описанного в статье автора //infostart.ru/public/682078/.
К статье приложена видео-инструкция, где подробно рассмотрен процесс обрезания базы.
Технические требования
Обработка тестировалась на платформе 8.3.9.2170, обработка универсальна, поэтому будет работать и на более поздних версиях платформы.
Перенос данных в исходной базе работает в толстом и в тонком клиенте.
Есть ограничение по регистрам. Регистры расчета (Зарплата) не доступны для отправки, т.к. на практике не было необходимости их переносить.
Поэтапный перенос данных в новую базу
В начале был вопрос как делать обрезание базы. Рассматривались такие варианты
1. остановить рабочую базу (выгнать всех пользователей), в рабочей базе перенести остатки на дату среза и удалить все документы до даты среза с движениями.
2. остановить рабочую базу и перенести данные в новую базу.
3. создать узел обмена в рабочей базе для ведения списка измененных объектов, перенести данные в новую базу, по узлу обмена перенести объекты, которые были изменены/созданы во время переноса данных.
Рабочую базу надо было обрезать на 3 месяца назад. В базе накопились документы за 6 лет работы. Удаление документов с движениями заняло бы неделю. Останавливать на такое долгое время рабочую базу, естественно, нельзя. Поэтому первый вариант был отвергнут сразу. Также и 2 вариант был не пригоден, т.к. в момент переноса вылезло много ошибок и ньюансов, которые приходилось решать. Да и сам перенос занял сутки, что тоже критично для крупного предприятия.
Поэтапный перенос без остановки рабочей базы по 3 варианту позволил решить все проблемы по созданию обрезанной копии рабочей базы с актуальными данными не отключая пользователей.
Подготовка конфигурации
Конфигурацию новой базы берем из рабочей базы, т.к. все алгоритмы должны также работать и метаданные должны полностью соответствовать для копирования объектов.
Для переноса остатков в конфигурации новой базы должен быть документ КорректировкаЗаписейРегистров или ОперацияБух (для БП). Это стандартный документ для типовых конфигураций. В самописных или нетиповых конфигурациях этот документ необходимо добавить. Этот функционал не получается сделать универсальным под все конфигурации, т.к. остатки по регистрам в 1С нельзя записать без документа-регистратора. Соответственно необходимо учитывать специфику конфигурации: нужным документом вводить остатки. Обработка на данный момент автоматически перенесет остатки в следующих конфигурациях: УТ11, БП3, Альфа-Авто.
Ссылки на документы до среза
На практике был добавлен регистр сведений _ОбъектыДоСреза в новую конфигурацию. Этот регистр нужен для учета документов, которые заведены до даты среза и на которые будут ссылки при переносе данных. Например, документы-партии в регистре «Товары на складах» при партионном учете. При переносе данных, если склад не пустой, то очень вероятно, что остатки будут на документах-партиях, заведенных до даты среза. Соответственно, в отчетах по складу вместо этих документов будут ссылки без объектов, многих пользователей это пугает. Также может быть большая проблема при проведении документов по партиям, т.к. в этих алгоритмах документы-партии сортируются по дате. Ссылка без объекта выдаст ошибку.
При переносе данных анализируются все ссылочные объекты. Если встречается документ до даты среза, то записываем ссылку на него в регистр _ОбъектыДоСреза. После переноса всех объектов в новую базу переносим все документы из регистра без движений. Естественно, делаем запрет в новой базе на проведение документов до даты среза во избежание дублирования движений.
Документы со смещенными движениями
В 1С версии 8 появилась возможность у документов делать движения на произвольную дату, не только на дату самого документа. В базе могут быть документы до даты среза, имеющие движения после даты среза. Такие документы не перенесутся вообще либо перенесутся без движений. На практике такие документы искусственно корректируются так, чтобы все движения были за одну дату, которая равна дате документа.
Удаление предопределенных документов
При отправке ссылочных объектов (справочники, документы и др.) в новую базу внутренние идентификаторы этих объектов копируются. Это самый надежный способ соответствия объектов старой и новой базы. Связь по реквизитам не так удобна, т.к. все поля можно изменить (можно завести несколько элементов справочников с одним кодом и наименованием) и все ссылки можно стандартизировать (они задаются видом объекта и идентификатором).
Проблема возникает с предопределенными элементами. При создании новой базы во время первого обновления базы данных предопределенные элементы создаются с новыми идентификаторами, отличными от идентификаторов из старой базы. Решается эта проблема просто: удалением всех предопределенных элементов до начала переноса. При переносе эти объекты создадутся, как и непредопределенные, с нужными внутренними идентификаторами.
Непосредственный перенос данных
Порядок переноса данных можно менять. Но можно выделить первичные и вторичные объекты. Вторичные объекты ссылаются на первичные, м.б. за небольшим исключением.
К первичным объектам можно отнести: Константы, Пользователи, Справочники, Планы видов характеристик, Планы счетов.
К вторичным объектам можно отнести: Документы и Регистры.
Примерный план переноса данных
1.Добавить в конфигурацию документ по записи остатков в регистры, при отсутствии (КорректировкаРегистров,ОперацияБух,др)
В конфигурацию-приемнике (временно):
Добавить регистр сведений _ОбъектыДоСреза, _Параметры (из файла конфигурации)
Удалить регламентные задания, подписки на события
Сдвинуть документы где Дата среза между Датой движений и Датой документа
Переименовать реквизит Заблокирован для справочников (Встречался у Контрагентов)
(!) В модуле перечислений могут совпадать экспортные методы (Проц./Функ.) с именем одного из значений перечисления, переименовать методы временно.
Установить версия совместимости минимум Версия 8.3.6 (до 8.3.10 не возникает ошибка создания таблиц с 1 номером).
Создать в исходной конфигурации план обмена со всеми Спр,Док,ПВХ для учитывания изменений во время переноса данных (если нет)
Запрет редактирования в исходной базе на дату среза
2.Выгрузить предопределенные (Справочники,Планы видов характеристик,Планы счетов)
Создать узел обмена для добавленного плана обмена
Отправка справочников,планов видов характеристик,Задач,Бизнес-процессов
Отправка констант,планов обмена
3.Отправка остатков остаточных регистров накопления
Отправка регистров сведений (выборочно)
Отправка регистров бухгалтерии (при наличии)
4.Отправка документов
5.Регистрация документов с разным количеством движений
Загрузка документов из регистра Объекты до среза
Отправка пользователей ИБ
6.Отправка измененных объектов через узел обмена
7.Загрузка оригинальной конфигурации в обрезанную базу
Установка даты запрета изменения данных после среза (рекомендуется)
Обработка переноса данных
Для создания обрезанной копии исходной базы необходимо подготовить конфигурацию как было описано ранее. В исходной базе запускается обработка «Командер 1С».
На закладке «Конфигурация» устанавливаем флаг «Итоги» чтобы увидеть общее количество объектов по видам метаданных. Можно наложить условие вывода, например, выводить только те метаданные, в которых заведен хотя бы 1 объект текущей базы.
Далее на вкладке "База" задаем параметры подключения к новой базе. Допускается файловый и серверный варианты подключения.
При успешном подключении появится зеленая надпись «Подключено…» и справа внизу появится надпись "Внешняя база".
Далее возвращаемся во вкладку "Конфигурация" и поэтапно выбираем виды метаданных с помощью клавиши Shift и мышки. Выбираем действие "Выгрузить обрезанную базу", задаем дату среза и вспомогательный счет (если необходимо будет переносить проводки). Для некоторых видов метаданных можно указать отбор по любым полям объекта, если не всё нужно переносить (либо доотправить необходимо часть объектов).
После настройки всех параметров запускаем обмен по кнопке «Выполнить».
После выполнения выгрузки появится сообщение о результате выполнения операций.
В тонком клиенте функционал аналогичен.
К статье приложена подробная практическая видео-инструкция по сворачиванию базы Альфа-Авто.
Проверено на следующих конфигурациях и релизах:
- Бухгалтерия предприятия, редакция 3.0, релизы 3.0.150.29
Достоинства
- Перезапись предопределенных элементов для достижения одинаковых внутренних идентификаторов между исходной и обрезанной базой. При обновлении базы данных в обрезанной базе предопределенные элементы создаются с новыми внутренними идентификаторами. В обработке есть функция по перезаписи таких элементов (счета плана счетов, предопределенные справочники и планы видов характеристик), описано в инструкции.
- Пошаговый, выборочный перенос данных. В приложенной инструкции описана методика переноса тяжелых объектов в условии нестабильного сеанса. Бывают перегруженные базы, перенос данных из которых даже по 1 виду метаданных может занять несколько дней. Предложено решение через сортировку отправляемых данных и протоколирование процесса переноса.
- Обработка позволяет использовать произвольные отборы при переносе данных. Отборы можно применять выборочно для разных видов объектов. Позволяет урезать нежелательную информацию. Отборы задаются аналогично выражениям в языке запросов 1С, любой сложности.
- Вычисление планируемого времени выполнения процесса. Для длительных операций обработка показывает, сколько времени потребуется для завершения при текущей скорости процесса (примерно).
- Отправка электронного письма по завершению переноса переноса.
- Возможность отправлять объекты, зарегистрированные в плане обмена. С помощью этой функции можно не прерывать работу в исходной базе при переносе данных. По окончанию основного переноса данных измененные во время переноса объекты можно точечно выгрузить по узлу плана обмена. По данной методике остановка рабочей базы составит несколько минут.