Обновление 1С встало на полпути: как понять причину и довести его до конца

· 9 мин

Содержание

Если обновление 1С 8.3 зависло, не закрывайте окно сразу. Откройте диспетчер задач и посмотрите на процесс 1cv8.exe: если он грузит процессор или диск, обновление идёт, просто медленно. Если нагрузки нет 15–20 минут, это настоящее зависание. Тогда нужно найти, что держит базу: другой сеанс, блокировку на SQL, антивирус или испорченный кэш.

Обновление проходит в три этапа, и способ исправления зависит от того, на каком из них всё остановилось. Чаще всего «висит» реструктуризация таблиц в Конфигураторе или обработчики обновления при первом запуске в режиме 1С:Предприятие.

С чего начать: на каком этапе остановилось обновление

Сначала определите этап. От этого зависит, можно ли прерывать процесс и что делать дальше.

ЭтапГде идётКак выглядит зависание
1. Сравнение и объединение конфигурацийКонфигуратор, загрузка .cfuОкно «Обновление» без движения полосы прогресса
2. Обновление конфигурации базы данных (реструктуризация)КонфигураторПолоса стоит на одной таблице, окно «Не отвечает»
3. Обработчики обновленияРежим 1С:Предприятие, форма «Обновление версии программы»Процент не меняется, надпись про обработку данных

Как проверить, живой ли процесс

  1. Откройте диспетчер задач (Ctrl+Shift+Esc), вкладку «Подробности».
  2. Найдите 1cv8.exe (у файловой базы) или rphost.exe на сервере 1С (у клиент-серверной).
  3. Смотрите на столбцы «ЦП» и, через монитор ресурсов, на чтение и запись диска.

💡 Реструктуризация большой таблицы — например, регистра бухгалтерии за несколько лет — может идти час и дольше. Полоса прогресса в это время стоит, а окно Конфигуратора пишет «Не отвечает». Это нормально, если процесс пишет на диск.

Признаки реального зависания

  • ⏸️ ЦП у процесса около 0%, диск не пишет больше 15–20 минут.
  • 🔒 Конфигуратор сообщает Ошибка блокировки информационной базы для конфигурирования или Ошибка установки монопольного режима.
  • ⏳ На SQL-сервере запрос сеанса 1С стоит в ожидании блокировки (как проверить — ниже).
  • 📋 В журнале регистрации последнее событие давно, новых записей нет.

Журнал открывается в Конфигураторе: Администрирование → Журнал регистрации. В режиме 1С:Предприятие в типовых конфигурациях на БСП он лежит в разделе Администрирование → Обслуживание.

Диагностика: выберите симптом

Зависание обновления в файловой базе

В файловом варианте база — это один файл 1Cv8.1CD. Им одновременно может пользоваться только тот, кто держит монопольный доступ. Любой открытый сеанс на другом компьютере остановит реструктуризацию.

Шаг 1. Найдите, кто держит базу

  1. Попросите всех выйти из программы. Сеансы на соседних компьютерах — частая причина.
  2. Проверьте свой компьютер: в диспетчере задач не должно быть второго 1cv8.exe или 1cv8c.exe.
  3. Если база открыта по сети, на сервере с общей папкой откройте Управление компьютером → Общие папки → Открытые файлы. Там видно, с какого компьютера открыт 1Cv8.1CD.

Закрытие открытого файла через «Общие папки» обрывает сеанс пользователя без сохранения. Делайте это, только когда все предупреждены.

Шаг 2. Если процесс пришлось снять

Когда Конфигуратор не отвечает и диск не пишет, процесс снимают через диспетчер задач. Перед этим убедитесь, что у вас есть резервная копия базы (.dt или копия папки).

После принудительного завершения:

  1. Скопируйте папку базы целиком в другое место.
  2. Запустите тестирование и исправление. В Конфигураторе: Администрирование → Тестирование и исправление. Для файловой базы есть и отдельная утилита chdbfl.exe в папке bin платформы.
  3. Откройте Конфигуратор и посмотрите, отличается ли основная конфигурация от конфигурации базы данных.

Если обновление прервалось между загрузкой и реструктуризацией, у вас есть выбор:

  • ✅ повторить Конфигурация → Обновить конфигурацию базы данных и довести его до конца;
  • ↩️ отменить изменения через Конфигурация → Конфигурация базы данных → Вернуться к конфигурации БД, а потом начать обновление заново.

Шаг 3. Проверьте место на диске

Реструктуризация создаёт временные копии таблиц. При нехватке места процесс может замедлиться почти до остановки. Держите свободными на диске с базой не меньше её размера, а лучше вдвое больше.

Клиент-серверная база: блокировки на стороне SQL

В серверном варианте за базу отвечают сервер 1С и СУБД (MS SQL Server или PostgreSQL). Здесь обновление чаще всего ждёт блокировку, которую держит чужой сеанс или фоновое задание.

Шаг 1. Заблокируйте вход и регламентные задания

  1. Откройте консоль администрирования серверов 1С.
  2. В кластере выберите информационную базу и откройте её свойства.
  3. Включите «Блокировка начала сеансов включена», задайте время и код разрешения.
  4. Там же поставьте флажок «Блокировка регламентных заданий включена».
  5. В разделе «Сеансы» завершите оставшиеся сеансы этой базы.

Код разрешения передают Конфигуратору ключом /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. Закройте все окна 1С.
  2. Откройте папки %APPDATA%\1C\1cv8 и %LOCALAPPDATA%\1C\1cv8.
  3. Удалите папки с длинными именами вида GUID. Файлы со списком баз (ibases.v8i) и настройки не трогайте.

Сеансовые данные на сервере 1С

Если кэш сбоит у всех пользователей серверной базы, причина может быть в сеансовых данных сервера. Они лежат в каталоге кластера, обычно srvinfo\reg_1541, в папках с именем, начинающимся на snccntx.

Эти папки удаляют только при остановленной службе сервера 1С. Остановка службы обрывает все сеансы всех баз кластера. Сначала сделайте копию каталога srvinfo, а реестр кластера (1CV8Clst.lst) не трогайте.

Права доступа и антивирус

Обновление пишет в папку базы, во временный каталог и в каталог кэша. Если на какую-то из них нет прав, процесс обрывается или зависает на попытке записи.

Что проверить по правам

  • 📁 Файловая база: у пользователя Windows должны быть права на изменение папки базы, а не только на чтение. Это касается и сетевой папки, и прав общего доступа к ней.
  • 🖥️ Серверная база: служба агента сервера 1С работает от отдельной учётной записи (часто USR1CV8). Ей нужны права на каталог кластера и на временную папку.
  • 🗄️ СУБД: у пользователя, под которым сервер 1С подключается к SQL, должны быть права на изменение структуры базы. Только чтение и запись данных для реструктуризации не хватит.
  • 👤 В самой 1С: обновлять конфигурацию может только пользователь с ролью «Администрирование» (в типовых — «Полные права» и «Администратор системы»).

Антивирус

Антивирус проверяет каждый файл, который пишет реструктуризация. На больших базах это растягивает обновление в разы, а иногда файл блокируется совсем.

Добавьте в исключения:

  1. Папку файловой базы (файл 1Cv8.1CD).
  2. Каталоги кэша %APPDATA%\1C и %LOCALAPPDATA%\1C.
  3. Каталог кластера srvinfo на сервере 1С.
  4. Папки файлов данных и журналов СУБД.
  5. Каталог временных файлов, куда сохраняется .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. Если в нём ошибка блокировки — вернитесь к поиску чужих сеансов, а не запускайте команду ещё раз.

Как не допустить зависания при следующем обновлении

Большинство зависаний предсказуемы. Перед каждым обновлением пройдите короткую подготовку.

Перед обновлением 1С
Выполнено: 0 / 7

Настройки сервера и СУБД

  • 💾 MS SQL: следите за ростом журнала транзакций. При полной модели восстановления большая реструктуризация раздувает файл журнала; если диск под ним кончится, процесс встанет.
  • 🐘 PostgreSQL: держите включённым автовакуум и после крупного обновления выполните VACUUM ANALYZE по базе. Устаревшая статистика замедляет и сам процесс, и работу после него.
  • 🧠 Сервер 1С: в свойствах рабочего сервера задаются ограничения памяти рабочих процессов. Слишком жёсткий лимит приводит к перезапуску rphost.exe в середине тяжёлой операции.
  • 🔄 Пропуск релизов: не перескакивайте через обязательные промежуточные версии. Если между вашим и новым релизом нужна цепочка, ставьте её по шагам — так обработчикам обновления меньше работы за один раз.

Обновление на копии

Самый надёжный способ узнать, сколько займёт обновление, — прогнать его на копии базы. Так вы увидите, на каком этапе возникает пауза, и запланируете окно для рабочей базы с запасом.

Частые вопросы

Сколько может длиться обновление базы 1С?
Небольшая файловая база обновляется за 5–15 минут. Серверная база в десятки и сотни гигабайт может реструктурироваться несколько часов. Точное время показывает только пробный прогон на копии.
Можно ли работать в базе, пока идут отложенные обработчики?
Да, отложенные обработчики для того и сделаны, чтобы пользователи работали параллельно. Но часть отчётов может показывать неполные данные до их завершения.
Что будет, если выключить компьютер во время обновления?
Серверная база обычно откатится к прежней структуре. Файловая может повредиться — восстановите её из копии или запустите тестирование и исправление.
Почему обновление зависает только на одном компьютере?
Чаще всего виноват кэш или антивирус этого компьютера. Очистите кэш ключом /ClearCache и проверьте исключения антивируса.
Нужно ли перезапускать сервер 1С после зависшего обновления?
Не обязательно. Сначала завершите зависший сеанс в консоли или блокирующий запрос в СУБД. Перезапуск службы нужен, только если это не помогло, и всегда при вышедших пользователях.