1С закрывается сама: как найти причину сбоя и устранить её
Содержание
Если 1С вылетает сразу после запуска, ищите причину на стороне компьютера: драйвер ключа, разрядность, повреждённый кэш. Если падает в одном и том же месте базы или документе, смотрите саму базу и внешние компоненты. Если сбой плавающий и зависит от нагрузки, начинайте с памяти и антивируса.
Окно «Платформа 1С:Предприятие прекратила работу» не называет причину. Её надо вытащить из журнала Windows или технологического журнала. Дальше идёт проверка по убыванию вероятности: от безобидных действий к тем, что меняют систему.
Перед очисткой кэша, переустановкой драйверов и любой работой с базой предупредите пользователей: их сеансы оборвутся. Для файловой базы заранее скопируйте файл 1Cv8.1CD, для серверной сделайте выгрузку или резервную копию средствами СУБД.
Как понять, что именно упало: журнал Windows и коды сбоя
Начните с просмотра событий Windows. Откройте «Просмотр событий» (eventvwr.msc) и перейдите в «Журналы Windows → Приложение». Отфильтруйте записи с уровнем «Ошибка» за время сбоя.
Нужны две записи:
- 🔴 Application Error — аварийное завершение процесса. В тексте есть имя приложения (
1cv8.exe,1cv8c.exe) и «имя модуля с ошибкой». - 🟡 Application Hang — зависание без ответа. Пользователь видит «Не отвечает» и закрывает программу вручную.
Главное в записи — модуль, в котором произошёл сбой. По нему сразу сужается круг:
| Модуль с ошибкой | Что это обычно значит | Куда идти |
|---|---|---|
ntdll.dll, KERNELBASE.dll | Системный сбой, чаще нехватка памяти или повреждённые данные | Разделы про память и базу |
nethasp.dll, hasp_windows_x64.dll и подобные | Драйвер или библиотека ключа защиты | Раздел про HASP |
msvcrt.dll, ucrtbase.dll | Внешняя компонента или несовпадение библиотек | Раздел про компоненты |
| Файл из папки антивируса или стороннего ПО | Чужая библиотека внедрилась в процесс | Исключения антивируса |
1cv8.exe / wbase*.dll | Сбой в самой платформе | Обновление платформы |
Если журнала Windows мало, включите технологический журнал платформы. В каталоге установки платформы есть папка conf, в ней создают файл logcfg.xml. Для разбора вылетов достаточно события EXCP (исключения) и, при необходимости, создания дампа. Точный синтаксис файла смотрите в документации платформы, а лог складывайте на диск с запасом места: он растёт быстро.
Включайте технологический журнал только на время поиска сбоя и ограничьте срок хранения файлов. Иначе через пару дней он займёт десятки гигабайт.
Ключ защиты и драйвер HASP: когда клиент падает при запуске
Если платформа берёт лицензию с USB-ключа (HASP или Sentinel), сбой драйвера способен уронить процесс ещё до открытия базы. Признак — в журнале Windows модуль с hasp в имени, а сообщение об ошибке появляется при обращении к лицензии.
Порядок проверки:
- Откройте в браузере
http://localhost:1947. Это административная панель драйвера Sentinel. Если она не открывается, драйвер не работает. - На вкладке «Ключи доступа Sentinel» убедитесь, что ключ виден. Если ключа нет, проверьте порт, замените USB-удлинитель, подключите ключ напрямую к компьютеру.
- Если ключ виден, а сбой остаётся, переустановите драйвер. Актуальный установщик драйвера защиты лежит на установочном диске платформы и в её каталоге. Сначала удалите старый драйвер через «Программы и компоненты», затем поставьте новый.
- Если ключ стоит на сервере лицензий, проверьте, что на клиенте нет старой копии драйвера, которая перехватывает запросы.
Не вынимайте ключ из порта на работающем сервере 1С. Все сеансы, держащие лицензии, потеряют их и завершатся.
Для программных лицензий (файл активации) путь другой: драйвера нет, но есть привязка к конфигурации компьютера. После замены оборудования или переустановки Windows платформа может отказаться запускаться, и это не вылет в строгом смысле. Лицензию в таком случае восстанавливают через менеджер лицензий, а не переустановкой платформы.
Память и разрядность: почему 1С падает на больших объёмах
Платформа бывает 32-разрядной и 64-разрядной. У 32-разрядного клиента есть жёсткий потолок адресного пространства: вне зависимости от оперативной памяти на машине, процесс не может занять больше нескольких гигабайт. Тяжёлый отчёт по большому периоду упирается в этот потолок и закрывается.
Признаки:
- 📈 вылет идёт строго при формировании тяжёлого отчёта или обработке большого списка;
- 📉 в диспетчере задач процесс
1cv8.exeк моменту сбоя занимает около 2-3 ГБ; - 🔁 при повторе на том же отчёте сбой воспроизводится стабильно.
Что делать:
- Установите 64-разрядную платформу. Для файловых баз и толстого клиента это снимает потолок памяти клиента. Разрядность определяется при установке, у одной и той же версии платформы 32- и 64-разрядные сборки ставятся отдельными компонентами.
- Не смешивайте разрядности. Внешние компоненты и драйверы подключений должны быть той же разрядности, что и клиент.
- Разбейте отчёт: сократите период, добавьте отбор, откажитесь от лишних группировок.
- Проверьте файл подкачки Windows. Размер «по выбору системы» обычно устраивает, но на дисках, забитых под завязку, система не может его расширить.
Если вылетает именно серверная часть, смотрите рабочие процессы кластера. Перед завершением процесса помните, что у его пользователей оборвутся сеансы, поэтому делайте это в нерабочее время.
На терминальном сервере каждый пользователь запускает свой процесс. Десять человек, формирующих большие отчёты, способны исчерпать память сервера целиком, и тогда падает не один клиент, а все подряд.
Повреждённая база и мусор в кэше клиента
Это самая частая группа причин. Начинайте с безопасного.
Шаг 1. Очистка кэша клиента
Кэш 1С — это локальные данные пользователя: сведения о конфигурации, настройки форм, списки. Он хранится в профиле Windows:
%LOCALAPPDATA%\1C\1cv8%APPDATA%\1C\1cv8
Закройте 1С, перейдите в эти папки и удалите вложенные папки с именами в виде длинных идентификаторов. Сам файл списка баз лежит отдельно (%APPDATA%\1C\1CEStart\ibases.v8i), его не трогайте — иначе пропадёт список баз в окне запуска.
Альтернатива без ручного удаления — параметр запуска /ClearCache. Его пишут в свойствах информационной базы в поле «Дополнительные параметры запуска».
Шаг 2. Проверка файловой базы
Для файловой базы есть утилита chdbfl.exe в каталоге платформы. Она проверяет физическую структуру файла 1Cv8.1CD и умеет исправлять часть повреждений. Запускайте её на копии базы и только когда в базу никто не заходит.
Шаг 3. Тестирование и исправление через Конфигуратор
Откройте базу в Конфигураторе, затем «Администрирование → Тестирование и исправление». Выберите проверку логической и ссылочной целостности и режим «Тестирование и исправление». Для этой операции нужен монопольный доступ к базе.
Сначала сделайте тест без исправления и посмотрите, что найдено. Если ошибок нет, а вылет остался, причина не в данных.
Шаг 4. Выгрузка и загрузка
Если тестирование не помогло, выгрузите базу в файл .dt («Администрирование → Выгрузить информационную базу») и загрузите в новую пустую базу. Это пересобирает внутренние структуры. Исходную базу не удаляйте, пока не убедитесь, что новая работает и данные на месте.
Права Windows, режим совместимости и защита системы
Платформа пишет на диск в нескольких местах, и если запись не удалась, часть сбоев выглядит как падение.
Проверьте:
- 📁 Папка временных файлов. Переменные
TEMPиTMPдолжны указывать на существующую папку, где у пользователя есть право записи. На терминальных серверах эти папки иногда переполняются или создаются с неверными правами. - 📁 Каталог файловой базы. У пользователя нужны права на чтение и запись. Достаточно на папку базы, администратором быть не нужно.
- 📁 Профиль пользователя. Повреждённый профиль приводит к вылету сразу после запуска у одного человека при нормальной работе остальных. Проверка простая: зайдите на этот же компьютер под другой учётной записью.
Теперь о режиме совместимости. Свойство ярлыка «Запустить программу в режиме совместимости с…» кому-то советуют как лекарство от вылетов. Для современной платформы 8.3 этот режим не нужен. Если он включён, снимите галочку: чаще он приносит проблемы, чем решает.
Не запускайте 1С «от имени администратора» постоянно. Сбой это не лечит, а права на файлы базы и профиль меняются, и потом обычный запуск работает иначе, чем администраторский.
Отдельно про антивирус. Резидентная защита перехватывает обращения к файлу базы и библиотекам платформы. Добавьте в исключения каталог платформы и каталог файловой базы. Сначала проверьте на одном компьютере: если сбой пропал, добавляйте исключения по политике безопасности организации, а не отключайте антивирус целиком.
Внешние компоненты и COM-объекты как скрытая причина
Если база давно стабильна, а вылеты начались после установки нового ПО, подозревайте внешние компоненты. К ним относятся драйверы торгового оборудования, компоненты обмена с банком, средства работы с криптографией и печатные библиотеки.
Типовые сценарии:
- Разная разрядность. 32-разрядная компонента зарегистрирована для 64-разрядной платформы или наоборот. Регистрация идёт в разные ветки реестра. Решение: поставить компоненту нужной разрядности.
- Не зарегистрирована или повреждена. Команда
regsvr32для регистрации библиотеки запускается из командной строки от имени администратора. Для 32-разрядной библиотеки на 64-разрядной Windows используйтеregsvr32из папкиSysWOW64. - Конфликт версий. Компонента обновилась вместе с другим продуктом, а конфигурация ждёт старый интерфейс.
Как отличить: сбой повторяется только при действии, которое вызывает компоненту (печать на фискальный регистратор, подпись документа, обмен). Выполните то же действие на компьютере без этого оборудования или компоненты. Если там всё работает, виновник найден.
Не скачивайте компоненты и драйверы с сайтов-«зеркал». Берите их у производителя оборудования или из состава конфигурации.
Если вылетает на обработке, подключённой через внешний файл, проверьте, не использует ли она устаревший COM-объект Office. Для работы с Excel отсутствие или повреждённая установка Microsoft Office нередко заканчивается именно аварийным закрытием.
Обновление платформы: когда вылет вызван самой платформой
Если журнал указывает на модули платформы, а клиент, кэш и база в порядке, проблема в версии. Известные дефекты исправляют в следующих релизах, поэтому:
- 🔧 сравните номер релиза платформы на сбойном компьютере с остальными, где всё работает;
- 🔧 установите последний релиз вашей ветки 8.3 и проверьте воспроизведение;
- 🔧 для сервера 1С держите одинаковую версию платформы на сервере и клиентах, расхождение по номеру релиза приводит к ошибкам подключения.
Номер версии узнают в окне «О программе» или в разделе справки платформы. Для конфигураций учитывайте требования к минимальной версии платформы: более новый релиз конфигурации может требовать платформу не ниже определённого номера, а старая платформа начнёт падать на новых механизмах.