При обслуживании большого количества типовых баз (например, 40 и более) у администраторов и программистов 1С часто возникает вопрос оптимизации времени. Штатное обновление через меню Конфигурация — Поддержка — Обновить конфигурацию требует времени на сравнение объектов и расчет разницы. Метод Загрузить конфигурацию из файла (через .cf) работает значительно быстрее. Однако за этой скоростью скрываются технические нюансы, которые могут привести к фатальной потере данных. Разберем детально, как работают эти механизмы, какие риски существуют и как правильно автоматизировать процесс.
Рассмотрим, что происходит внутри платформы при использовании разных методов. Когда мы используем штатное обновление через .cfu (файл обновления) или .cf (полный файл конфигурации) в режиме Обновить конфигурацию, платформа выполняет трехстороннее сравнение: текущая основная конфигурация, конфигурация поставщика и новая конфигурация. В этом режиме система сопоставляет объекты по их внутренним идентификаторам (UUID).
Проанализируем ситуацию с Загрузить конфигурацию из файла. В этом режиме платформа полностью замещает структуру метаданных основной конфигурации данными из файла. Если конфигурация абсолютно типовая, «стоит на замке» и файл .cf взят из официального дистрибутива той же версии, то UUID объектов совпадут. В этом случае загрузка действительно эквивалентна обновлению по поддержке. Но если в базе были минимальные изменения или база когда-то снималась с поддержки, идентификаторы могут разойтись.
Выясним основную причину, по которой опытные специалисты предостерегают от простой загрузки .cf. Если UUID объекта в загружаемом файле отличается от того, что был в базе, 1С воспримет это не как изменение старого объекта, а как удаление старого и создание нового.
При выполнении команды Обновить конфигурацию базы данных (F7) платформа удалит таблицу в SQL, содержащую данные старого объекта, и создаст пустую таблицу для нового. Разберем пример: в релизе «А» у справочника Номенклатура был реквизит СтавкаНДС. В релизе «Б» разработчики 1С решили его заменить. Если вы загрузите .cf «перепрыгнув» через промежуточные релизы, где происходила конвертация данных, вы рискуете получить пустые поля в документах и справочниках.
Современные типовые конфигурации (БП 3.0, ЗУП 3.1, УТ 11) построены на базе Библиотеки стандартных подсистем (БСП). Процесс обновления в них состоит из двух этапов:
Рассмотрим подробнее работу обработчиков. Каждая версия конфигурации содержит программный код, который переносит данные из старых реквизитов в новые или заполняет новые константы. Если мы обновляемся штатно, шаг за шагом, эти процедуры выполняются последовательно. При «прыжке» через 10 релизов методом загрузки .cf, платформа запустит процедуры миграции данных при первом старте.
Однако здесь кроется ловушка: разработчики 1С периодически вычищают старый код БСП. Если в новом релизе уже нет кода для миграции данных из версии, которая была у вас три месяца назад, данные просто не будут перенесены. Проанализируем пример из практики: в конфигурации БГУ 2.0 в некоторых релизах вырезались обработчики для версий, вышедших полгода назад. В итоге, загрузив свежий .cf на старую базу, вы получите рабочую программу с «дырами» в учетных данных.
Посмотрим на ситуацию, когда метод загрузки допустим. Это возможно, если:
.cf на остальные идентичные базы.Вместо рискованной ручной загрузки .cf, правильнее использовать автоматизацию. Платформа 1С поддерживает пакетный режим работы. Мы можем написать командный файл (батник), который будет последовательно обновлять базы. Рассмотрим пример команды для пакетного обновления:
"C:\Program Files\1cv8\common\1cestart.exe" DESIGNER /F "D:\Bases\MyBase" /N "Admin" /P "Pass" /UpdateCfg "D:\Updates\1cv8.cfu" /UpdateDBCfg
Разберем параметры этого метода:
/UpdateCfg — выполняет поиск файла обновления и применяет его к конфигурации поставщика и основной конфигурации./UpdateDBCfg — применяет изменения к структуре таблиц базы данных (эквивалент нажатия F7).Если баз много, рекомендуется использовать специализированное ПО, такое как «Обновлятор 1С». Эти инструменты используют штатные механизмы платформы, но позволяют запускать процесс в несколько потоков, автоматически делают резервные копии и проверяют результат выполнения обработчиков обновления.
Проанализировав все «за» и «против», можно сделать следующие выводы:
.cf через Загрузить конфигурацию из файла формально замещает конфигурацию поставщика, но не гарантирует корректность цепочки обновлений в будущем, если файл не является «родным» для этой базы..cf для нетиповых (доработанных) конфигураций — это гарантированно уничтожит все ваши доработки в метаданных.Помните, что экономия 10 минут на процессе обновления может обернуться часами или днями восстановления данных из архивов. Всегда делайте бэкап перед любыми манипуляциями со структурой конфигурации.