Рассмотрим достаточно распространенную и неприятную ситуацию, возникающую при обновлении типовых конфигураций (например, «Бухгалтерия предприятия» редакции 2.0). При попытке накатить обновление (файл .cfu) через конфигуратор платформа выдает сообщение: «Файл не содержит доступных обновлений». При этом в окне выбора конфигураций нужный релиз присутствует. Дополнительно в журнале регистрации может появляться запись: «Для выполнения команды требуется разблокировать все объекты», а на некоторых версиях платформы случается аварийное завершение работы (Runtime error).
Проанализируем причины такого поведения системы и разберем по шагам, как корректно восстановить возможность штатного обновления базы данных.
Выясним причину, по которой платформа 1С отказывается принимать файл обновления, несмотря на визуальное совпадение номеров релизов в меню «О программе».
.cfu..cfu содержит разницу (дифф) не с текущей конфигурацией базы данных, а со строго определенным эталонным снимком метаданных конфигурации поставщика. Если ранее базу обновляли некорректно (через команду «Сравнить, объединить...» без настройки правил поддержки), внутренняя таблица конфигурации поставщика остается старой. Платформа «видит» этот старый релиз под капотом и сообщает об отсутствии обновлений.Часто разработчики или администраторы уверены, что база абсолютно типовая и находится на полной поддержке. Посмотрим на пример из практики: разработчик выгрузил файл полной конфигурации (.cf) из чистой эталонной базы нужного релиза и попытался загрузить его в проблемную базу. При сравнении обнаружились отличающиеся объекты.
Это означает, что конфигурация была снята с полной поддержки, в нее вносились изменения (возможно, создавался отдельный файл поставки от предыдущего программиста), но визуально номер версии был подменен. Если просто выполнить команду «Загрузить конфигурацию из файла», все пользовательские доработки будут безвозвратно удалены. Поэтому мы рассмотрим другой, безопасный метод.
Если в базе есть доработки, которые нужно сохранить, конфигурацию поставщика необходимо восстановить специальным образом. Разберем по шагам алгоритм действий:
.cf) исходного релиза, который сейчас установлен в вашей базе (например, 2.0.65.20). Получить его можно, развернув чистую базу этого релиза из шаблонов..cf. На вопрос системы о постановке конфигурации на поддержку ответьте «Да».После выполнения этой процедуры внутренняя конфигурация поставщика обновится до эталонного состояния, все ваши доработки сохранятся, а последующие обновления через файлы .cfu будут проходить в штатном режиме.
Рассмотрим дополнительные технические нюансы, которые необходимо учитывать при обновлении старых конфигураций на обычных формах.
Аварийное завершение на платформе 8.3: Конфигурации линейки 2.0 разрабатывались под платформу 8.2 (режимы совместимости 8.2.13 или 8.2.16). При выполнении тяжелых операций реструктуризации или сравнения/объединения на ранних и промежуточных релизах 8.3 (например, 8.3.8) Конфигуратор может падать с ошибкой Runtime error из-за несовместимости графической подсистемы обычных форм. Промежуточные обновления внутри ветки 2.0 рекомендуется выполнять на стабильных релизах платформы 8.2 (например, 8.2.19.130). Переходить на 8.3 следует только непосредственно перед финальным обновлением на редакцию 3.0.
Тестирование и исправление: Ошибки при обновлении файловых баз часто связаны со скрытыми повреждениями таблицы метаданных. Перед любыми манипуляциями выполните следующие действия:
1Cv8.1CD) утилитой chdbfl.exe (находится в папке bin установленной платформы).