В процессе сопровождения сложных и сильно кастомизированных баз, таких как «1С:Управление производственным предприятием» (УПП) ред. 1.3, программисты часто сталкиваются с ситуацией, когда штатный механизм обновления перестает работать корректно. Система либо не видит файлы обновления (.cfu), либо предлагает «откатиться» на версию, которая была актуальна несколько лет назад. Рассмотрим подробно, почему возникает эта проблема и как ее безопасно решить, сохранив при этом все свои доработки.
Для понимания сути проблемы разберем внутреннее устройство системы 1С. В любой базе, стоящей на поддержке, одновременно существуют три конфигурации:
Проблема, описанная в теме, возникает из-за того, что предыдущие разработчики обновляли базу некорректно. Вместо использования штатного режима «Конфигурация — Поддержка — Обновить конфигурацию», они просто использовали «Сравнение и объединение». В результате код в «Основной конфигурации» менялся, а «Конфигурация поставщика» застряла на старом релизе (например, 1.3.21.1). Когда вы пытаетесь применить файл обновления .cfu, система видит, что ваша конфигурация поставщика имеет версию 1.3.21.1, и предлагает только те обновления, которые предназначены именно для этого старого релиза.
Прежде чем приступать к активным действиям, проанализируем текущую ситуацию в вашей базе. Перейдем в меню «Конфигурация — Поддержка — Настройка поддержки». В открывшемся окне в верхней части вы увидите колонку «Версия». Если там указано 1.3.21.1, а в окне «О программе» или в функции ВерсияБиблиотеки() фигурирует 1.3.91.2, значит, налицо разрыв версий между реально работающим кодом и учетными данными поставщика.
Посмотрим на пример функции, которая часто вводит в заблуждение:
Функция ВерсияБиблиотеки()
// Этот номер версии может быть изменен вручную программистом,
// но он не влияет на работу механизма обновления конфигуратора.
Возврат "1.3.91.2";
КонецФункции
Помните: номер версии в коде — это просто строка. Настоящий контроль версий происходит на уровне метаданных поддержки.
Поскольку стандартные файлы обновления .cfu требуют строгой последовательности, они нам не подходят. Нам необходимо «подтянуть» версию поставщика сразу до актуального состояния. Для этого выполним следующие действия:
1cv8.cf) той версии, которая фактически сейчас установлена у вас в основной конфигурации (в нашем примере это 1.3.91.2)..cf файлу версии 1.3.91.2.После того как система обработает файл, откроется окно «Сравнение и объединение конфигураций». В этот момент нужно быть предельно внимательными, чтобы не затереть сделанные ранее доработки:
В окне сравнения ОБЯЗАТЕЛЬНО снимите все галочки! Мы не хотим менять код основной конфигурации (он и так у нас версии 1.3.91.2), нам нужно только обновить «подложку» — конфигурацию поставщика.
Рассмотрим алгоритм в окне сравнения:
После выполнения этой операции система обновит только версию поставщика в таблицах метаданных. Теперь, если вы снова зайдете в «Настройку поддержки», вы увидите долгожданную версию 1.3.91.2. Теперь штатные файлы обновления .cfu для версии 1.3.92.1 станут видимыми и доступными для установки.
Если при попытке выбрать .cf файл система выдает ошибку о несоответствии версий, выясним причину. Скорее всего, ваша база была обновлена настолько «криво», что даже основные объекты метаданных не соответствуют заявленной версии. В этом случае нам поможет метод «перепостановки» на поддержку:
.cf версии 1.3.91.2.Проанализируем ситуацию после успешного выравнивания версий. Есть риск, что предыдущие программисты перенесли только программный код модулей, но не создали новые реквизиты, регистры или справочники, которые появились в типовой конфигурации между версиями 1.3.21 и 1.3.91. Это называется «неполное обновление метаданных».
Проверим это следующим образом:
.cfu файлом.Также проанализируем работу Библиотеки Стандартных Подсистем (БСП). При первом запуске в режиме «Предприятие» после ваших манипуляций должны запуститься обработчики обновления. Проверить их статус можно через консоль запросов или в регистре сведений СведенияОбОбновлении (название может варьироваться). Если обработчики не запустились, возможно, потребуется принудительно вызвать процедуру обновления, иначе новые функции (например, расчет НДС 20%) не будут работать корректно в пользовательском интерфейсе.
Мы выяснили, что основной причиной проблемы является разрыв между основной конфигурацией и конфигурацией поставщика. Для исправления ситуации мы использовали метод обновления через полный .cf файл с отключением всех изменений в окне сравнения.
Золотые правила при такой работе:
.cf файлы для выравнивания версий.Таким образом, вы сможете вернуть базу в штатное русло обновлений и успешно внедрить необходимый функционал, такой как изменение ставок налогов или новые формы отчетности.