Обновление 1С встало на полпути: как понять причину и довести его до конца
Содержание
Если обновление 1С 8.3 зависло, не закрывайте окно сразу. Откройте диспетчер задач и посмотрите на процесс 1cv8.exe: если он грузит процессор или диск, обновление идёт, просто медленно. Если нагрузки нет 15–20 минут, это настоящее зависание. Тогда нужно найти, что держит базу: другой сеанс, блокировку на SQL, антивирус или испорченный кэш.
Обновление проходит в три этапа, и способ исправления зависит от того, на каком из них всё остановилось. Чаще всего «висит» реструктуризация таблиц в Конфигураторе или обработчики обновления при первом запуске в режиме 1С:Предприятие.
С чего начать: на каком этапе остановилось обновление
Сначала определите этап. От этого зависит, можно ли прерывать процесс и что делать дальше.
| Этап | Где идёт | Как выглядит зависание |
|---|---|---|
| 1. Сравнение и объединение конфигураций | Конфигуратор, загрузка .cfu | Окно «Обновление» без движения полосы прогресса |
| 2. Обновление конфигурации базы данных (реструктуризация) | Конфигуратор | Полоса стоит на одной таблице, окно «Не отвечает» |
| 3. Обработчики обновления | Режим 1С:Предприятие, форма «Обновление версии программы» | Процент не меняется, надпись про обработку данных |
Как проверить, живой ли процесс
- Откройте диспетчер задач (
Ctrl+Shift+Esc), вкладку «Подробности». - Найдите
1cv8.exe(у файловой базы) илиrphost.exeна сервере 1С (у клиент-серверной). - Смотрите на столбцы «ЦП» и, через монитор ресурсов, на чтение и запись диска.
💡 Реструктуризация большой таблицы — например, регистра бухгалтерии за несколько лет — может идти час и дольше. Полоса прогресса в это время стоит, а окно Конфигуратора пишет «Не отвечает». Это нормально, если процесс пишет на диск.
Признаки реального зависания
- ⏸️ ЦП у процесса около 0%, диск не пишет больше 15–20 минут.
- 🔒 Конфигуратор сообщает
Ошибка блокировки информационной базы для конфигурированияилиОшибка установки монопольного режима. - ⏳ На SQL-сервере запрос сеанса 1С стоит в ожидании блокировки (как проверить — ниже).
- 📋 В журнале регистрации последнее событие давно, новых записей нет.
Журнал открывается в Конфигураторе: Администрирование → Журнал регистрации. В режиме 1С:Предприятие в типовых конфигурациях на БСП он лежит в разделе Администрирование → Обслуживание.
Зависание обновления в файловой базе
В файловом варианте база — это один файл 1Cv8.1CD. Им одновременно может пользоваться только тот, кто держит монопольный доступ. Любой открытый сеанс на другом компьютере остановит реструктуризацию.
Шаг 1. Найдите, кто держит базу
- Попросите всех выйти из программы. Сеансы на соседних компьютерах — частая причина.
- Проверьте свой компьютер: в диспетчере задач не должно быть второго
1cv8.exeили1cv8c.exe. - Если база открыта по сети, на сервере с общей папкой откройте
Управление компьютером → Общие папки → Открытые файлы. Там видно, с какого компьютера открыт1Cv8.1CD.
Закрытие открытого файла через «Общие папки» обрывает сеанс пользователя без сохранения. Делайте это, только когда все предупреждены.
Шаг 2. Если процесс пришлось снять
Когда Конфигуратор не отвечает и диск не пишет, процесс снимают через диспетчер задач. Перед этим убедитесь, что у вас есть резервная копия базы (.dt или копия папки).
После принудительного завершения:
- Скопируйте папку базы целиком в другое место.
- Запустите тестирование и исправление. В Конфигураторе:
Администрирование → Тестирование и исправление. Для файловой базы есть и отдельная утилитаchdbfl.exeв папкеbinплатформы. - Откройте Конфигуратор и посмотрите, отличается ли основная конфигурация от конфигурации базы данных.
Если обновление прервалось между загрузкой и реструктуризацией, у вас есть выбор:
- ✅ повторить
Конфигурация → Обновить конфигурацию базы данныхи довести его до конца; - ↩️ отменить изменения через
Конфигурация → Конфигурация базы данных → Вернуться к конфигурации БД, а потом начать обновление заново.
Шаг 3. Проверьте место на диске
Реструктуризация создаёт временные копии таблиц. При нехватке места процесс может замедлиться почти до остановки. Держите свободными на диске с базой не меньше её размера, а лучше вдвое больше.
Клиент-серверная база: блокировки на стороне SQL
В серверном варианте за базу отвечают сервер 1С и СУБД (MS SQL Server или PostgreSQL). Здесь обновление чаще всего ждёт блокировку, которую держит чужой сеанс или фоновое задание.
Шаг 1. Заблокируйте вход и регламентные задания
- Откройте консоль администрирования серверов 1С.
- В кластере выберите информационную базу и откройте её свойства.
- Включите «Блокировка начала сеансов включена», задайте время и код разрешения.
- Там же поставьте флажок «Блокировка регламентных заданий включена».
- В разделе «Сеансы» завершите оставшиеся сеансы этой базы.
Код разрешения передают Конфигуратору ключом /UC<код>, чтобы он смог войти в заблокированную базу.
Завершение сеансов в консоли обрывает работу пользователей: несохранённые документы пропадут. Делайте это в нерабочее время или после предупреждения.
Шаг 2. Посмотрите, кто блокирует на стороне СУБД
Для MS SQL Server выполните в Management Studio:
SELECT session_id, blocking_session_id, wait_type, wait_time, command, status
FROM sys.dm_exec_requests
WHERE blocking_session_id <> 0;
Столбец blocking_session_id покажет сеанс, который держит блокировку. Посмотреть, что это за подключение, можно процедурой sp_who2.
Для PostgreSQL:
SELECT pid, state, wait_event_type, wait_event, now() - query_start AS duration, left(query, 80)
FROM pg_stat_activity
WHERE datname = 'имя_базы'
ORDER BY query_start;
Если запрос сеанса 1С давно стоит с wait_event_type = 'Lock', ищите, кто держит эту блокировку. Обычно это забытое подключение: открытая консоль запросов, внешний отчёт, обмен.
Шаг 3. Когда можно снимать процессы
Снимать блокирующий сеанс на стороне СУБД безопаснее, чем завершать rphost.exe целиком: рабочий процесс обслуживает сразу много сеансов, включая чужие базы. Перезапуск службы сервера 1С — крайняя мера, только когда все пользователи вышли.
💡 СУБД выполняет реструктуризацию в транзакции. Если её прервать, изменения откатываются, и база остаётся на старой структуре. Откат большой транзакции сам по себе может длиться долго — не перезапускайте службу СУБД повторно, пока он идёт.
Обработчики обновления, которые «висят»
После реструктуризации типовые конфигурации запускают обработчики обновления данных. Их разделяют на основные (идут сразу, база недоступна) и отложенные (работают в фоне, пользователи уже могут входить).
- 🧾 Ход отложенного обновления смотрят в
Администрирование → Обслуживание → Результаты обновления программы(название ссылки в разных релизах слегка отличается). - ⚠️ Если обработчик завершился с ошибкой, текст будет в журнале регистрации с событием «Обновление информационной базы».
- 🔁 После исправления причины обработку запускают заново из той же формы.
Очистка кэша после зависшего обновления
После сбойного обновления клиент часто держит старые метаданные в кэше. Признаки: ошибки при открытии форм, сообщение о несоответствии конфигурации, повторное зависание при входе.
Кэш на компьютере пользователя
Самый простой способ — запустить базу с ключом /ClearCache. В окне запуска выберите базу, нажмите «Изменить», дойдите до последней страницы и впишите ключ в поле «Дополнительные параметры запуска».
Ручной способ:
- Закройте все окна 1С.
- Откройте папки
%APPDATA%\1C\1cv8и%LOCALAPPDATA%\1C\1cv8. - Удалите папки с длинными именами вида GUID. Файлы со списком баз (
ibases.v8i) и настройки не трогайте.
Сеансовые данные на сервере 1С
Если кэш сбоит у всех пользователей серверной базы, причина может быть в сеансовых данных сервера. Они лежат в каталоге кластера, обычно srvinfo\reg_1541, в папках с именем, начинающимся на snccntx.
Эти папки удаляют только при остановленной службе сервера 1С. Остановка службы обрывает все сеансы всех баз кластера. Сначала сделайте копию каталога srvinfo, а реестр кластера (1CV8Clst.lst) не трогайте.
Права доступа и антивирус
Обновление пишет в папку базы, во временный каталог и в каталог кэша. Если на какую-то из них нет прав, процесс обрывается или зависает на попытке записи.
Что проверить по правам
- 📁 Файловая база: у пользователя Windows должны быть права на изменение папки базы, а не только на чтение. Это касается и сетевой папки, и прав общего доступа к ней.
- 🖥️ Серверная база: служба агента сервера 1С работает от отдельной учётной записи (часто
USR1CV8). Ей нужны права на каталог кластера и на временную папку. - 🗄️ СУБД: у пользователя, под которым сервер 1С подключается к SQL, должны быть права на изменение структуры базы. Только чтение и запись данных для реструктуризации не хватит.
- 👤 В самой 1С: обновлять конфигурацию может только пользователь с ролью «Администрирование» (в типовых — «Полные права» и «Администратор системы»).
Антивирус
Антивирус проверяет каждый файл, который пишет реструктуризация. На больших базах это растягивает обновление в разы, а иногда файл блокируется совсем.
Добавьте в исключения:
- Папку файловой базы (файл
1Cv8.1CD). - Каталоги кэша
%APPDATA%\1Cи%LOCALAPPDATA%\1C. - Каталог кластера
srvinfoна сервере 1С. - Папки файлов данных и журналов СУБД.
- Каталог временных файлов, куда сохраняется
.cfuпри распаковке.
Пакетное обновление: ключи командной строки
Если интерфейс Конфигуратора зависает, обновление можно провести без окон, из командной строки. Так виден итог в файле журнала, и процесс не мешают открытые формы.
Пример для файловой базы:
"C:\Program Files\1cv8\8.3.24.1586\bin\1cv8.exe" DESIGNER /F"D:\Bases\Buh" /N"Администратор" /P"пароль" /UpdateCfg "D:\Upd\1cv8.cfu" /UpdateDBCfg /DisableStartupMessages /Out"D:\Upd\log.txt"
Для серверной базы вместо /F используется /S"сервер\имя_базы". Путь к 1cv8.exe подставьте свой — номер версии в нём должен совпадать с установленной платформой.
| Ключ | Что делает |
|---|---|
DESIGNER | Запуск в режиме Конфигуратора |
/F или /S | Путь к файловой базе или адрес серверной |
/N, /P | Имя и пароль пользователя 1С |
/UpdateCfg | Обновление конфигурации из файла .cfu (только для конфигурации на поддержке) |
/UpdateDBCfg | Обновление конфигурации базы данных |
/UC | Код разрешения входа при заблокированных сеансах |
/DisableStartupMessages | Не показывать стартовые предупреждения |
/Out | Файл, куда пишутся сообщения |
/ClearCache | Очистка клиентского кэша при запуске |
После пакетного обновления конфигурации запустите обработчики обновления. Для конфигураций на БСП это делается запуском в режиме 1С:Предприятие с параметром /C"ЗапуститьОбновлениеИнформационнойБазы":
"C:\Program Files\1cv8\8.3.24.1586\bin\1cv8.exe" ENTERPRISE /F"D:\Bases\Buh" /N"Администратор" /P"пароль" /C"ЗапуститьОбновлениеИнформационнойБазы" /DisableStartupMessages
💡 Сначала откройте файл из /Out. Если в нём ошибка блокировки — вернитесь к поиску чужих сеансов, а не запускайте команду ещё раз.
Как не допустить зависания при следующем обновлении
Большинство зависаний предсказуемы. Перед каждым обновлением пройдите короткую подготовку.
Настройки сервера и СУБД
- 💾 MS SQL: следите за ростом журнала транзакций. При полной модели восстановления большая реструктуризация раздувает файл журнала; если диск под ним кончится, процесс встанет.
- 🐘 PostgreSQL: держите включённым автовакуум и после крупного обновления выполните
VACUUM ANALYZEпо базе. Устаревшая статистика замедляет и сам процесс, и работу после него. - 🧠 Сервер 1С: в свойствах рабочего сервера задаются ограничения памяти рабочих процессов. Слишком жёсткий лимит приводит к перезапуску
rphost.exeв середине тяжёлой операции. - 🔄 Пропуск релизов: не перескакивайте через обязательные промежуточные версии. Если между вашим и новым релизом нужна цепочка, ставьте её по шагам — так обработчикам обновления меньше работы за один раз.
Обновление на копии
Самый надёжный способ узнать, сколько займёт обновление, — прогнать его на копии базы. Так вы увидите, на каком этапе возникает пауза, и запланируете окно для рабочей базы с запасом.
Частые вопросы
Сколько может длиться обновление базы 1С?
Можно ли работать в базе, пока идут отложенные обработчики?
Что будет, если выключить компьютер во время обновления?
Почему обновление зависает только на одном компьютере?
/ClearCache и проверьте исключения антивируса.