Ситуация, когда Конфигуратор 1С перестает «видеть» обновления или ведет себя неадекватно при попытке их применить, знакома многим администраторам и программистам. Вроде бы файл .cfu на месте, права доступа есть, а после нажатия кнопки «Далее» — либо тишина, либо невнятная «ошибка файловой операции». Разберем подробно, почему так происходит и как вернуть систему в рабочее состояние, когда стандартная очистка кэша уже не помогает.
Когда мы нажимаем «Далее» в окне поиска обновлений, Конфигуратор начинает сканировать указанные каталоги шаблонов. Если в течение пары секунд отображаются «песочные часы», а затем окно просто возвращается в исходное состояние без сообщений об ошибках, это сигнализирует о том, что 1С не нашла подходящей связки между вашей текущей версией и версиями, прописанными в манифесте обновления.
Рассмотрим основные причины такого поведения:
UpdInfo.txt. Именно из него 1С узнает, для каких версий предназначено данное обновление (параметр FromVersions). Если ваша текущая версия отсутствует в этом списке, обновление «не увидится».Одной из самых эффективных методик, упомянутых опытными коллегами, является метод «переподключения» конфигурации поставщика. Это необходимо, если база когда-то обновлялась некорректно (например, простым сравнением с .cf без обновления поддержки), из-за чего связь между текущими метаданными и эталоном поставщика нарушилась.
Выполним следующие шаги вместе:
.cf через меню Конфигурация — Сохранить конфигурацию в файл.....cf файл поставщика этой же версии..cf файл поставщика из пункта 2. На вопрос о постановке на поддержку отвечаем утвердительно..cfu. В большинстве случаев этот метод «сбрасывает» внутренние ошибки идентификации версий, и обновление становится видимым.Если же Конфигуратор видит обновление, но при попытке его прочитать выдает ошибку файловой операции, проблема кроется в среде выполнения платформы. Рассмотрим, как это исправить.
Очистка системных временных папок (TEMP): 1С активно использует папку %TEMP% для распаковки содержимого .cfu. Если в этой папке скопилось критическое количество файлов или у пользователя нет прав на запись в конкретный подкаталог, возникнет ошибка. Рекомендуется полностью очистить содержимое каталогов:
C:\Users\ИмяПользователя\AppData\Local\Temp и C:\Windows\Temp.
Анализ таблиц SQL (для серверных баз): Если база работает на MS SQL Server или PostgreSQL, проблема может быть в «зависших» записях в таблицах конфигурации. При динамическом обновлении иногда возникают ситуации, когда записи в таблице Config конфликтуют с ConfigSave. Хотя прямое редактирование таблиц SQL не рекомендуется, в критических случаях помогает очистка таблицы DBCfgEvants, которая хранит информацию о незавершенных фоновых обновлениях.
Если Конфигуратор продолжает упорствовать, проанализируем альтернативные пути доставки кода в базу.
В современных конфигурациях на управляемых формах (БП 3.0, ЗУП 3.1) встроен мощный механизм обновления. Перейдем в раздел Администрирование — Обслуживание — Обновление программы. Здесь можно указать путь к файлу .cfu напрямую. Часто программный код этого модуля обходит некоторые ограничения Конфигуратора и успешно завершает процедуру.
Иногда файл обновления .cfu (который является лишь «дельтой» или разницей) не может примениться из-за накопленных ошибок в метаданных. В таком случае попробуем выполнить обновление через полный файл конфигурации (.cf).
Для этого скачиваем не «Обновление», а «Дистрибутив для установки», извлекаем из него 1cv8.cf и используем его в режиме сравнения/объединения или через меню Поддержка — Обновить конфигурацию, выбрав файл вручную.
Проанализируем влияние версии платформы. В ветке 8.3.9 были замечены специфические баги, связанные с работой 64-битных клиентов и криптографии, которые косвенно влияли на работу с файловыми потоками. Если вы столкнулись с проблемой на конкретной версии (например, 8.3.9.1818), попробуйте запустить процесс обновления через более свежую версию платформы (например, 8.3.12+), так как формат хранения метаданных в файлах обновлений также совершенствуется.
Посмотрим на пример того, как проверить соответствие версий через код, если вы пишете свою обработку для мониторинга версий:
// Пример получения версии конфигурации программно
ТекВерсия = Метаданные.Версия;
Сообщить("Текущая версия базы: " + ТекВерсия);
// Проверка версии через системную информацию
Инфо = Система.ИнформацияОПрограмме();
Сообщить("Платформа: " + Инфо.ВерсияПлатформы);
Важное замечание: Всегда перед выполнением процедур «Снятия с поддержки» или манипуляций с файлом поставщика делайте резервную копию базы данных (файл .dt или бэкап SQL). Ошибки при объединении конфигураций могут привести к потере пользовательских данных в реквизитах, если они были добавлены в базу вне механизма расширений.
Если 1С не видит обновления, мы действуем по алгоритму:
TEMP и кэш пользователя..cf.Эти шаги позволяют решить проблему в 99% случаев, даже когда стандартные инструменты пасуют перед «ошибкой файловой операции».