Ошибки 1С:Предприятия 8.3 — разбор по источнику: код, база, СУБД, сервер

· 10 мин

Содержание

Чтобы понять, что за ошибка в 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С:Предприятие выполняет перенос данных. Если его прервали, часть данных осталась в старом формате.

Как исправить прерванное обновление

  1. Выгоните пользователей и сделайте резервную копию.
  2. Откройте Конфигуратор, меню Конфигурация → Обновить конфигурацию базы данных (клавиша F7).
  3. Примите изменения структуры.
  4. Запустите базу в режиме 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С

Многие описанные выше сбои предсказуемы. Регламент из нескольких пунктов снимает заметную их часть.

Регламент стабильной работы 1С
Выполнено: 0 / 8

Отдельно про антивирус. Сканирование файла 1Cv8.1CD и каталогов кэша на лету даёт случайные ошибки чтения и порчу кэша. Исключения настраиваются один раз и экономят массу расследований.

Ещё одна мера — тестовая копия. Разверните выгрузку .dt рабочей базы в отдельную информационную базу и проверяйте на ней каждое обновление. Ошибка, найденная на копии, не останавливает работу бухгалтерии.

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

Можно ли просто нажать «ОК» и продолжить работу после ошибки?**\nЕсли ошибка разовая и документ записался — да. Если она повторяется на одном и том же действии, данные могли не сохраниться: проверьте документ и зафиксируйте текст ошибки.\n\n**Почему ошибка есть у одного пользователя, а у других нет?**\nЧаще всего виноваты кэш клиента, другая сборка платформы на компьютере или права этого пользователя. Начните с запуска с параметром /ClearCache.\n\n**Помогает ли переустановка платформы?**\nТолько когда повреждены файлы самой платформы или на клиенте стоит не та сборка. На ошибки кода и СУБД переустановка не влияет.\n\n**Что делать, если ошибка появилась после установки внешней обработки?**\nУберите обработку из списка дополнительных и повторите действие. Если ошибка ушла — обработка несовместима с текущим релизом, нужна её доработка.\n\n**Где взять текст ошибки, если пользователь закрыл окно?**\nВ журнале регистрации: отбор по пользователю, времени и уровню «Ошибка». Текст там сохраняется полностью, вместе со стеком вызова.