Каждый администратор и программист 1С рано или поздно сталкивается с ситуацией, когда типовая база данных по какой-то причине теряет статус «полной поддержки». При этом реальных изменений в коде или структуре данных может не быть вовсе, однако при каждом обновлении система открывает окно сравнения и объединения, требуя ручного вмешательства. Попытка вернуть базу «на замок» часто вызывает опасения, особенно когда после загрузки типовой конфигурации .cf и выполнения тестирования со сжатием база резко уменьшается в размерах (например, с 5 ГБ до 4 ГБ). Давайте детально разберем природу этого явления, выясним, почему уменьшается база, и рассмотрим безопасный пошаговый алгоритм возврата конфигурации на полную поддержку без потери пользовательских данных.
Иногда при сравнении основной конфигурации с конфигурацией поставщика платформа 1С показывает различия в таких объектах, как справочная информация (справка) подсистем или макеты отчетов (например, незначительное изменение положения диаграмм или таблиц). Пользователи и разработчики при этом утверждают, что объект никто не редактировал. Проанализируем, почему так происходит:
<meta name="GENERATOR" content="...">) или переупорядочивать CSS-стили форматирования. Платформа фиксирует эти скрытые бинарные различия как модификацию объекта, хотя визуально текст справки остается идентичным.Таким образом, конфигурация может формально считаться «измененной», хотя фактически никакого вмешательства в бизнес-логику не происходило.
Опасение потерять пользовательские данные при уменьшении размера базы — один из самых частых страхов администраторов. Однако уменьшение объема файла базы данных (особенно файловой базы .1CD) после загрузки чистого файла конфигурации .cf и выполнения сжатия таблиц является абсолютно естественным и безопасным процессом. Рассмотрим причины этого поведения:
ConfigSave, могут оставаться временные конфигурации, черновики изменений и кэш предыдущих обновлений. Файл конфигурации современных тяжелых решений (например, 1С:Комплексная автоматизация или 1С:ERP) в распакованном виде занимает в СУБД более 1 гигабайта. При возврате базы на полную поддержку («на замок») потребность в хранении избыточных копий отпадает. Платформа удаляет дублирующиеся конфигурации и очищает системные таблицы, что моментально высвобождает дисковое пространство.
VACUUM в SQLite или SHRINK в MS SQL Server. Из файла базы данных физически удаляются «пустоты» и свободные страницы, которые ранее занимала удаленная избыточная конфигурация..cf обновляет исключительно таблицы метаданных (такие как Config). Данная операция физически не способна затронуть таблицы пользовательских данных (например, таблицы с префиксами _Reference или _Document), если структура этих таблиц полностью совпадает.Чтобы окончательно убедиться в безопасности проведенной процедуры, обратим внимание на механизм реорганизации базы данных. Если загружаемый файл .cf содержит изменения в структуре метаданных (например, в нем отсутствуют какие-то реквизиты, табличные части или целые справочники, которые были созданы в вашей базе ранее), то при применении конфигурации (клавиша F7) платформа обязательно откроет модальное окно «Реорганизация информации».
В этом окне платформа выведет предупреждение со списком удаляемых или изменяемых объектов метаданных. Если такое окно не появилось (или в нем отсутствовали пункты об удалении объектов), это является 100% гарантией того, что структура данных осталась прежней и ни одна запись пользователя не пострадала.
Рассмотрим правильную и безопасную последовательность действий для перевода базы данных на автоматическое обновление без риска повреждения структуры.
Шаг 1. Создание резервной копии. Это обязательное и непреложное правило перед любыми административными действиями в конфигураторе 1С. Сделайте копию файла базы данных (для файлового варианта) или бэкап средствами СУБД (для клиент-серверного варианта).
Шаг 2. Получение эталонного файла конфигурации. Откройте базу данных в режиме «Конфигуратор». Перейдите в меню Конфигурация — Поддержка — Настройка поддержки. Нажмите кнопку Сохранить в файл и выгрузите чистый файл конфигурации поставщика (например, под именем vendor.cf). Этот файл гарантированно соответствует текущему релизу вашей базы, но не содержит лишнего мусора и «ложных» изменений.
Шаг 3. Снятие конфигурации с поддержки. В том же окне «Настройка поддержки» нажмите кнопку Снять с поддержки. Подтвердите действие. Не беспокойтесь: эта операция удаляет только связи и служебные таблицы конфигуратора, пользовательские данные при этом остаются в полной сохранности.
Шаг 4. Загрузка эталонного файла конфигурации. Перейдите в меню Конфигурация — Загрузить конфигурацию из файла... и выберите сохраненный на Шаге 2 файл vendor.cf. Обратите внимание: нужно использовать именно команду «Загрузить», а не «Объединить». Платформа выдаст предупреждение о том, что текущая конфигурация будет полностью заменена. Соглашаемся с этим предупреждением.
Шаг 5. Применение изменений. Нажмите клавишу F7 (или выберите пункт меню Конфигурация — Обновить конфигурацию базы данных). Если конфигурации были идентичны по структуре, обновление пройдет мгновенно без вывода предупреждений о реорганизации. На корневом элементе дерева метаданных и на всех дочерних объектах снова появится значок закрытого желтого замочка.
Шаг 6. Сжатие таблиц базы данных. Для завершения процесса и оптимизации дискового пространства перейдите в меню Администрирование — Тестирование и исправление.... Отметьте маркер Сжатие таблиц базы данных и нажмите кнопку Выполнить. После завершения операции физический размер файла базы данных уменьшится, освободив дисковое пространство.
Для автоматизации некоторых рутинных процессов администраторы часто используют запуск конфигуратора из командной строки. Ниже приведен пример сценария (бат-файла) для загрузки подготовленного файла конфигурации и обновления базы данных в пакетном режиме:
@echo off
echo Выполняется загрузка конфигурации из файла...
"C:\Program Files\1cv8\8.3.22.1709\bin\1cv8.exe" DESIGNER /F "C:\1C_Bases\KA" /N "Администратор" /P "Пароль" /LoadCfg "C:\Temp\vendor.cf" /UpdateDBCfg
echo Процесс успешно завершен.
pause
Применяя данный подход, вы гарантированно вернете конфигурацию на автоматическое обновление, избавитесь от рутинных ручных операций при каждом обновлении и наведете порядок в служебных таблицах базы данных 1С.