Ошибки 1С:Предприятия 8.3 — разбор по источнику: код, база, СУБД, сервер
Содержание
Чтобы понять, что за ошибка в 1С, смотрите на первые слова сообщения и на фигурные скобки. Текст в скобках вида {ОбщийМодуль.Имя.Модуль(125)} — ошибка в программном коде конфигурации. Префикс Ошибка СУБД: — сбой на стороне SQL Server или PostgreSQL. Если окно 1С просто закрылось без сообщения — это аварийное завершение платформы, и его причину ищут в технологическом журнале и дампах.
От типа зависит, кто чинит. Ошибку кода исправляет программист или обновление конфигурации . Ошибку СУБД — администратор базы данных. Аварийный сбой платформы — администратор сервера 1С. От пользователя нужно одно — точно зафиксировать текст и момент сбоя. Всё, что ниже, относится к платформе 8.3 и типовым конфигурациям — БП 3.0, ЗУП 3.1, УТ 11 — одинаково.
Как по тексту сообщения определить, что за ошибка 1С
Отдельных числовых кодов, как у Windows, у большинства ошибок 1С нет. Источник сбоя выдают формулировка и служебные пометки в тексте. Разделите ошибки на шесть групп — так сразу ясно, куда смотреть.
| Группа | Как выглядит | Кто разбирается |
|---|---|---|
| 🧩 Ошибка встроенного языка | Поле объекта не обнаружено, Метод объекта не обнаружен, Значение не является значением объектного типа, Деление на 0; рядом путь к модулю и номер строки | Программист, обновление конфигурации |
| 🗄️ Ошибка СУБД | Начинается с Ошибка СУБД:, дальше текст от SQL Server или PostgreSQL | Администратор СУБД |
| 🔒 Блокировки | Конфликт блокировок при выполнении транзакции, превышено время ожидания блокировки | Администратор, программист |
| 💥 Аварийное завершение | Окно закрывается само, иногда с предложением отправить отчёт | Администратор сервера 1С |
| 🌐 Связь и лицензии | Сервер 1С:Предприятия не обнаружен, Не обнаружено свободной лицензии | Системный администратор |
| 📦 Структура и данные | Нарушена целостность структуры конфигурации, Ошибка формата потока, расхождение конфигурации базы данных с сохранённой | Администратор 1С |
Как читать текст ошибки кода
Сообщение об ошибке встроенного языка состоит из стека. Каждая строка — один уровень вызова: модуль и номер строки в скобках, затем текст. Нижняя строка показывает место, где произошло исключение. Верхняя — откуда пользователь его вызвал.
Пример:
{Документ.РеализацияТоваровУслуг.МодульОбъекта(412)}: Ошибка при вызове метода контекста (Записать)
{ОбщийМодуль.ПроведениеСервер.Модуль(1840)}: Поле объекта не обнаружено (СкладОтгрузки)
Здесь документ не записался, потому что общий модуль обратился к реквизиту, которого нет. Типичная картина после доработки, которую не перенесли на новый релиз.
Если в стеке встречается имя модуля расширения или внешней обработки — первым делом отключите их и повторите действие. Так вы отделите сбой типовой конфигурации от сбоя доработки.
Что сохранить перед тем, как звать специалиста
- 📝 Полный текст ошибки. Откройте подробный текст в окне сообщения и скопируйте его целиком, а не скриншот первой строки.
- 🕒 Время сбоя с точностью до минуты — по нему находят запись в журнале регистрации.
- 👤 Пользователя и документ, на котором ошибка возникла.
- 🔁 Повторяется ли ошибка у других пользователей и на другом компьютере.
Последний пункт часто решает половину задачи. Ошибка только на одном ПК указывает на клиента: кэш, версию платформы, антивирус. Ошибка у всех — на базу, сервер или конфигурацию.
Сбои при запуске 1С: последовательная диагностика
Ошибки на старте самые неприятные: в базу нельзя попасть, и журнал регистрации изнутри не открыть. Идите от простого к радикальному.
Шаг 1. Проверить, у кого не запускается
Попросите коллегу открыть ту же базу. Если у него открывается — проблема на вашем компьютере. Если нет — в базе или на сервере.
Шаг 2. Очистить кэш клиента
Испорченный локальный кэш даёт странные ошибки: бесконечную загрузку, ошибки формы, Ошибка формата потока при открытии. Самый безопасный способ — запуск с параметром /ClearCache. В окне запуска выберите базу, нажмите Изменить, на последней странице мастера в поле дополнительных параметров запуска впишите:
/ClearCache
Запустите базу один раз, затем параметр уберите. Второй способ — закрыть все сеансы 1С на компьютере и удалить папки с длинными именами-идентификаторами из %APPDATA%\1C\1cv8 и %LOCALAPPDATA%\1C\1cv8. Сами базы при этом не затрагиваются, но список баз и настройки окна запуска лежат там же — файл ibases.v8i не трогайте.
Шаг 3. Сверить версии клиента и сервера
В клиент-серверном варианте версия платформы на клиенте должна совпадать с версией сервера 1С до последней цифры сборки. После обновления сервера клиенты со старой платформой не подключаются. Поставьте на клиент ту же сборку, что и на сервере.
Шаг 4. Проверить связь с сервером
Сообщение Сервер 1С:Предприятия не обнаружен означает, что клиент не достучался до агента сервера. Клиент сначала обращается к агенту (порт 1540), затем к менеджеру кластера (1541) и к рабочим процессам — их диапазон задаётся в свойствах рабочего сервера, по умолчанию 1560–1591. Проверьте, что служба агента запущена, а порты открыты в брандмауэре.
Test-NetConnection srv1c -Port 1540
Test-NetConnection srv1c -Port 1541
Команды выполняются в PowerShell на компьютере пользователя. srv1c замените на имя своего сервера.
Шаг 5. Тестирование и исправление базы
Если ошибка появляется у всех и указывает на данные — Ошибка формата потока, Нарушена целостность структуры конфигурации — нужна проверка базы. Откройте Конфигуратор, меню Администрирование → Тестирование и исправление. Для режима нужен монопольный доступ, поэтому все пользователи должны выйти.
Перед тестированием сделайте резервную копию: режим исправления может удалить битые объекты без возможности вернуть их. Для файловой базы копия — это файл 1Cv8.1CD, скопированный при закрытой базе. Для серверной — бэкап средствами СУБД или выгрузка .dt.
Для файловой базы, которая не открывается даже в Конфигураторе, есть утилита chdbfl.exe в каталоге bin установленной платформы. Она проверяет физическую целостность файла 1Cv8.1CD без запуска 1С.
Файл блокировки 1Cv8.1CL рядом с файловой базой удаляйте только когда точно никто не работает в базе. Иначе открытые сеансы оборвутся с потерей несохранённых данных.
Ошибки СУБД и SQL: что значат и где лечить
В клиент-серверной базе данные хранит SQL Server или PostgreSQL. Когда СУБД отказывает, 1С показывает Ошибка СУБД: и после двоеточия передаёт текст самой СУБД. Читайте именно эту часть: в ней настоящая причина.
| Признак в тексте | Что произошло | Что делать |
|---|---|---|
| Нет места на диске, файл журнала транзакций переполнен | Закончилось место под данные, журнал или tempdb | Освободить диск, настроить резервное копирование журнала или простую модель восстановления |
| Взаимоблокировка (deadlock) | Две транзакции ждали друг друга, СУБД прервала одну | Повторить операцию; при частом повторе — разбор техжурнала программистом |
| Тайм-аут, превышено время ожидания | Долгий запрос или ожидание блокировки | Найти, кто держит блокировку, через консоль кластера |
| Нет связи с сервером СУБД | Сеть, остановленная служба, смена пароля пользователя СУБД | Проверить службу СУБД и параметры базы в консоли кластера |
| Ошибки страниц, контрольных сумм | Повреждение файлов базы данных | Проверка средствами СУБД, восстановление из бэкапа |
Проверка целостности средствами СУБД
Для SQL Server проверка выполняется командой:
DBCC CHECKDB ('buh_base') WITH NO_INFOMSGS;
Если команда сообщает об ошибках, восстанавливайтесь из последней исправной резервной копии. Режимы исправления с потерей данных — последнее средство, только после копии и с пониманием, какие таблицы пострадают.
Для PostgreSQL регулярное обслуживание — VACUUM ANALYZE. Без него таблицы разрастаются, запросы замедляются, и 1С начинает упираться в тайм-ауты.
Блокировки 1С и блокировки СУБД — не одно и то же
Сообщение Конфликт блокировок при выполнении транзакции бывает двух видов. Если в тексте есть префикс Ошибка СУБД: — блокировку выставил SQL-сервер. Если префикса нет — сработали управляемые блокировки самой 1С: два пользователя одновременно проводят документы, которые меняют одни и те же остатки.
Разовая ошибка в часы закрытия месяца — нормальное явление: повторите проведение. Ошибка по десять раз на дню — повод для разбора: длинные транзакции, тяжёлые обработки в рабочее время, регламентные задания поверх пользователей.
Конфликты версий после обновления
Вопрос «что за ошибка 1С» часто возникает в первые дни после обновления. Причины повторяются.
- 🔢 Платформа ниже требуемой. Новый релиз конфигурации требует номер платформы не ниже указанного в описании обновления. На старой платформе база не откроется или будет выдавать ошибки в формах.
- ⏸️ Обновление прервалось на середине. Конфигурация загружена, но реструктуризация базы данных не завершилась. Признак — при входе в Конфигуратор сообщение о расхождении конфигурации базы данных с сохранённой.
- 🧩 Расширения и внешние обработки. Расширение было написано под старый релиз и перехватывает процедуры, которых больше нет или у которых сменились параметры. В стеке ошибки — имя расширения.
- 🔄 Не отработал обработчик обновления. После обновления первый запуск в режиме 1С:Предприятие выполняет перенос данных. Если его прервали, часть данных осталась в старом формате.
Как исправить прерванное обновление
- Выгоните пользователей и сделайте резервную копию.
- Откройте Конфигуратор, меню
Конфигурация → Обновить конфигурацию базы данных(клавишаF7). - Примите изменения структуры.
- Запустите базу в режиме 1С:Предприятие под администратором и дождитесь завершения обновления данных.
Как проверить расширения
В БП 3.0, ЗУП 3.1 и УТ 11 список расширений открывается в разделе Администрирование → Печатные формы, отчеты и обработки → Расширения. Снимите флажок активности у подозрительного расширения, перезапустите сеанс и повторите действие. Ошибка исчезла — расширение надо адаптировать к новому релизу.
Журнал регистрации, технологический журнал и консоль кластера
Три инструмента отвечают на разные вопросы. Не пытайтесь всё найти в одном.
| Инструмент | Что показывает | Когда открывать |
|---|---|---|
| Журнал регистрации | Действия пользователей и ошибки на уровне прикладной логики | Ошибка кода, «кто и когда удалил документ» |
| Технологический журнал | События платформы: исключения, запросы к СУБД, блокировки, дампы | Аварийные завершения, медленная работа, взаимоблокировки |
| Консоль администрирования серверов | Сеансы, соединения, рабочие процессы, лицензии | Зависшие сеансы, нехватка лицензий, перегрузка сервера |
Журнал регистрации
В Конфигураторе — меню Администрирование → Журнал регистрации. В типовых конфигурациях он доступен и из режима 1С:Предприятие в разделе Администрирование. Установите отбор по интервалу вокруг времени сбоя и по уровню «Ошибка». В строке события будет тот же текст, что видел пользователь, плюс компьютер и сеанс.
Технологический журнал
Включается файлом logcfg.xml в каталоге conf установленной платформы, например C:\Program Files\1cv8\conf. Пример настройки, которая собирает исключения и дампы аварийных завершений:
<?xml version="1.0" encoding="UTF-8"?>
<config xmlns="http://v8.1c.ru/v8/tech-log">
<log location="D:\techlog" history="24">
<event>
<eq property="name" value="EXCP"/>
</event>
<property name="all"/>
</log>
<dump create="true" location="D:\dumps" type="0"/>
</config>
Параметр history задаёт, сколько часов хранить файлы. Для поиска взаимоблокировок добавляют события TLOCK, TDEADLOCK, TTIMEOUT; для медленных запросов к SQL Server — DBMSSQL.
Полный технологический журнал на рабочем сервере за час может занять десятки гигабайт. Включайте только нужные события, на ограниченный срок и на диск, где есть место. После диагностики удалите или переименуйте logcfg.xml.
Консоль администрирования серверов
В консоли видно, сколько сеансов открыто, какие из них давно не активны и сколько памяти занимает каждый рабочий процесс rphost. Зависший сеанс можно завершить, но пользователь потеряет несохранённые данные — предупредите его заранее.
Если консоль после обновления платформы не открывается и ругается на оснастку, перерегистрируйте библиотеку новой версии. Командная строка от имени администратора:
regsvr32 "C:\Program Files\1cv8\8.3.25.1374\bin\radmin.dll"
Номер версии в пути замените на установленный у вас. Для работы без консоли есть утилита rac: например, rac cluster list выводит кластеры, а rac session list --licenses показывает, какие сеансы занимают лицензии. Остальные команды смотрите в справке rac help.
Профилактика: как реже видеть ошибки 1С
Многие описанные выше сбои предсказуемы. Регламент из нескольких пунктов снимает заметную их часть.
Отдельно про антивирус. Сканирование файла 1Cv8.1CD и каталогов кэша на лету даёт случайные ошибки чтения и порчу кэша. Исключения настраиваются один раз и экономят массу расследований.
Ещё одна мера — тестовая копия. Разверните выгрузку .dt рабочей базы в отдельную информационную базу и проверяйте на ней каждое обновление. Ошибка, найденная на копии, не останавливает работу бухгалтерии.