Программа 1С выдаёт ошибку: от текста сообщения до рабочей базы

· 10 мин

Содержание

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

Ниже — порядок диагностики и устранения сбоев в 1С:Предприятии 8.3, от безопасных действий к тем, что требуют монопольного режима. Порядок общий для платформы: он одинаков для Бухгалтерии, ЗУП, УТ и других типовых конфигураций.

1. Первичная диагностика ошибки: текст, журнал регистрации, техжурнал

Самая частая причина долгого поиска — работа с обрывком сообщения. Фраза Ошибка при выполнении операции над данными сама по себе ничего не говорит. Причина обычно написана ниже, в подробном тексте.

Что записать сразу

  • 📝 полный текст ошибки, включая строки с {ОбщийМодуль...} или {Документ...МодульОбъекта(...)} — это имя модуля и номер строки;
  • 🕐 время, когда ошибка возникла, с точностью до минуты;
  • 👤 пользователя и компьютер;
  • 🔁 повторяется ли ошибка у других пользователей и на другом компьютере;
  • 🔢 версию платформы и конфигурации: Справка → О программе (кнопка с буквой «i» или меню с тремя полосками).

Последний пункт нужен почти всегда. Специалист первым делом спросит именно это: многие ошибки привязаны к конкретному релизу.

Журнал регистрации

Журнал регистрации пишет каждая база. Открыть его можно двумя способами:

  1. В режиме «Предприятие» — Администрирование → Обслуживание → Журнал регистрации (в типовых конфигурациях на БСП).
  2. В Конфигураторе — Администрирование → Журнал регистрации. Этот путь работает в любой конфигурации.

Поставьте отбор по интервалу (5–10 минут вокруг момента сбоя), по пользователю и по уровню «Ошибка». В колонке «Комментарий» будет тот же текст, что видел пользователь, а в «Данных» — ссылка на документ или элемент справочника, на котором программа споткнулась.

Если ошибка воспроизводится только на одном документе, а остальные проводятся нормально, дело почти наверняка в данных этого документа, а не в базе целиком. Откройте документ, проверьте реквизиты и табличные части на пустые и «битые» значения вида <Объект не найден>.

Технологический журнал для плавающих сбоев

Если ошибка случается раз в день и в журнале регистрации видна только верхушка, включите технологический журнал. Это текстовые логи платформы. Настраиваются они файлом 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="C:\1C_techlog" history="24">
    <event>
      <eq property="name" value="EXCP"/>
    </event>
    <property name="all"/>
  </log>
</config>

Параметр history="24" хранит логи 24 часа. Платформа подхватывает файл в течение минуты, перезапуск не нужен.

Техжурнал без отборов быстро забивает диск. Не оставляйте его включённым после диагностики — удалите или переименуйте logcfg.xml.

2. Ошибки блокировок данных: как найти, кто держит запись

Типичные тексты:

  • Конфликт блокировок при выполнении транзакции;
  • Превышено максимальное время ожидания предоставления блокировки;
  • Ошибка блокировки объекта. Объект уже заблокирован;
  • Неуспешная попытка блокирования объекта при открытии документа на редактирование.

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

Что делать по шагам

  1. Узнайте, кто работает в базе. В режиме «Предприятие» — Администрирование → Обслуживание → Активные пользователи. В Конфигураторе — Администрирование → Активные пользователи.
  2. Если ошибка разовая — просто повторите операцию через минуту. Длинная транзакция соседа закончится, и блокировка снимется.
  3. Если ошибка возникает при проведении одного и того же документа у одного и того же пользователя, посмотрите, не висит ли у него второй «зависший» сеанс. В клиент-серверной базе это видно в консоли администрирования серверов: Информационные базы → <база> → Сеансы. Колонки «Время вызова» и «Заблокировано СУБД» подскажут, кто держит.
  4. Тяжёлые операции (закрытие месяца , перепроведение, групповую обработку) запускайте, когда остальные не проводят документы по тем же разделам учёта.

Завершение сеанса из консоли кластера обрывает работу пользователя без сохранения. Сначала предупредите его и дайте закрыть открытые формы.

Файловая база

В файловом варианте ожидание блокировки обычно связано с сетью. База лежит на общем ресурсе, и один медленный клиент тормозит остальных. Если в файловой базе больше 5–7 человек одновременно и конфликты стали ежедневными, это сигнал переходить на клиент-серверный вариант или хотя бы на публикацию через веб-сервер.

3. Очистка кэша клиента и временных файлов

Кэш — это копия метаданных конфигурации на компьютере пользователя. После обновления или сбоя он может не совпасть с базой. Симптомы:

  • 🖥 ошибки формы, которые возникают на одном компьютере и не повторяются на другом;
  • 🧩 после обновления у части пользователей «старые» формы или пропали новые реквизиты;
  • 🐢 база стала долго открываться только у одного человека;
  • ❓ ошибки вида Неверный формат хранилища данных или непонятные сообщения при старте.

Способ 1: параметр запуска

Самый безопасный путь — запустить базу с ключом /ClearCache. В окне выбора баз выберите базу, нажмите «Изменить», дойдите до последней страницы мастера и в поле «Дополнительные параметры запуска» впишите:

/ClearCache

Запустите базу один раз, затем уберите параметр — иначе кэш будет сбрасываться при каждом входе и база будет открываться медленнее.

Способ 2: удаление папок кэша

Если параметр не помог, удалите кэш вручную. Перед этим закройте все окна 1С на компьютере.

  1. Нажмите Win+R, введите %APPDATA%\1C\1cv8 и нажмите Enter.
  2. Удалите папки с длинными именами вида a1b2c3d4-... (это идентификаторы баз).
  3. Повторите для %LOCALAPPDATA%\1C\1cv8.

Файлы и папки с обычными именами не трогайте. Список баз хранится отдельно, в %APPDATA%\1C\1CEStart\ibases.v8i, и при чистке кэша не пропадает.

Для нескольких компьютеров удобно сделать bat-файл:

@echo off
rem Закройте 1С перед запуском
for /d %%D in ("%APPDATA%\1C\1cv8\*-*-*-*-*") do rd /s /q "%%D"
for /d %%D in ("%LOCALAPPDATA%\1C\1cv8\*-*-*-*-*") do rd /s /q "%%D"
echo Кэш 1С очищен
pause

Маска *-*-*-*-* выбирает только папки с идентификаторами, служебные папки остаются.

Не путайте кэш клиента с временными файлами пользователя. Папка %TEMP% тоже может разрастаться, но ошибки 1С из-за неё случаются редко — обычно при нехватке места на системном диске.

Кэш на сервере 1С

В клиент-серверном варианте кэш есть и на сервере — в каталоге кластера srvinfo. Его чистят, только когда ошибки идут у всех пользователей сразу и не лечатся на клиентах. Для этого останавливают службу «Агент сервера 1С:Предприятия».

Остановка службы обрывает сеансы всех пользователей всех баз на этом сервере. Делайте это вне рабочего времени и сохраните копию каталога srvinfo перед любыми изменениями в нём.

4. Проверка целостности базы и исправление повреждений

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

Тестирование и исправление в Конфигураторе

Перед запуском:

  1. Сделайте резервную копию: Администрирование → Выгрузить информационную базу (файл .dt), а для файловой базы дополнительно скопируйте файл 1Cv8.1CD.
  2. Попросите всех выйти из базы — режиму нужен монопольный доступ.

Затем Администрирование → Тестирование и исправление. Флажки:

ПроверкаКогда включать
Реиндексация таблицпочти всегда, безопасна
Проверка логической целостностипри ошибках структуры и чтения данных
Проверка ссылочной целостностипри <Объект не найден> в документах
Пересчёт итоговпри неверных остатках в отчётах
Сжатие таблицдля файловой базы, после массового удаления
Реструктуризация таблицпо рекомендации специалиста, долго

Для начала выберите режим «Тестирование» без исправления и посмотрите отчёт. Если проблемы найдены — повторите с режимом «Тестирование и исправление».

При битых ссылках программа спросит, что делать. Вариант «Создавать объекты» безопаснее: появятся элементы-заглушки, которые потом можно найти и заполнить. «Очищать ссылки» стирает значение реквизита, и восстановить его будет нечем.

Утилита chdbfl.exe для файловой базы

Если файловая база не открывается вообще, Конфигуратор запустить не получится. Тогда используйте утилиту chdbfl.exe из каталога bin установленной платформы:

  1. Скопируйте файл 1Cv8.1CD в отдельную папку — работайте с копией.
  2. Запустите chdbfl.exe, укажите путь к файлу базы.
  3. Поставьте флажок «Исправлять обнаруженные ошибки» и нажмите «Выполнить».

Никогда не проверяйте единственный экземпляр базы. Если исправление пойдёт не так, без копии данные не вернуть.

Для клиент-серверной базы на MS SQL или PostgreSQL повреждения на уровне файлов ищут средствами самой СУБД. Это задача администратора сервера.

5. Права доступа и роли пользователей

Ошибки прав выглядят так:

  • Недостаточно прав для просмотра;
  • Нарушение прав доступа!;
  • Недостаточно прав для выполнения операции;
  • пользователь не видит раздел или кнопку, которые есть у коллеги.

Проверка в типовой конфигурации

В конфигурациях на БСП права настраивают в режиме «Предприятие», через группы доступа и профили:

  1. Администрирование → Настройки пользователей и прав → Пользователи.
  2. Откройте карточку пользователя и перейдите к правам доступа.
  3. Сверьте профили групп доступа с коллегой, у которого всё работает.

Быстрая проверка — войти под пользователем с полными правами и повторить операцию. Если ошибка ушла, причина точно в правах, а не в данных.

Ограничения могут действовать не на весь документ, а на записи: например, пользователю открыт только один склад или одна организация. Тогда ошибка возникает при выборе «чужой» организации в документе.

Почему не стоит править права в Конфигураторе

Конфигуратор позволяет назначить роли напрямую через Администрирование → Пользователи. В типовых конфигурациях этого делать не нужно: при следующей синхронизации групп доступа роли будут пересчитаны, и ручные правки пропадут или войдут в противоречие с профилями. Конфигуратор оставьте на случай, когда в режим «Предприятие» вообще никто не может войти с правами администратора.

6. Обновление платформы и конфигурации

Многие ошибки уже исправлены разработчиками — нужно просто поставить актуальный релиз. Признаки, что дело в версиях:

  • 🔺 при запуске сообщение, что конфигурация требует платформу с номером не ниже указанного;
  • 🔺 ошибка возникает в типовом модуле, а у коллег на свежем релизе её нет;
  • 🔺 после обновления платформы на сервере клиенты не подключаются с сообщением о несоответствии версий.

Платформа

Версия клиента и сервера в клиент-серверном варианте должна совпадать до последней цифры. Если на сервере стоит одна сборка, а у пользователя другая, подключение не пройдёт. Проверьте версию у пользователя в Справка → О программе и у сервера в консоли администрирования.

После установки новой платформы старые версии можно оставить: стартер 1cestart.exe сам выберет нужную, если в свойствах базы указана версия.

Конфигурация

Типовую конфигурацию без доработок обновляют в режиме «Предприятие» через интернет-поддержку или в Конфигураторе:

  1. Сделайте копию базы (.dt).
  2. Конфигурация → Поддержка → Обновить конфигурацию, укажите файл обновления .cfu или получите его через интернет .
  3. После загрузки — Конфигурация → Обновить конфигурацию базы данных (F7).
  4. Запустите базу в режиме «Предприятие» и дождитесь окончания обработки данных.

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

Если конфигурация дорабатывалась, обновление идёт через сравнение и объединение. Такую работу лучше отдать программисту: неверно принятое изменение даёт новые ошибки уже после обновления.

7. Если ничего не помогло

Подберите действие по симптому:

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

Дальше — эскалация. Для обращения к своему программисту или на линию консультаций подготовьте:

  1. Полный текст ошибки и снимок экрана.
  2. Выгрузку журнала регистрации за интервал сбоя.
  3. Версию платформы и релиз конфигурации.
  4. Порядок действий, которые приводят к ошибке.
  5. Копию базы .dt, если специалист попросит воспроизвести.

С таким набором ошибку в программе 1С обычно находят за один подход, без переписки «пришлите ещё вот это».

Не проводите копию проблемного документа в рабочей базе ради проверки: она сделает движения по регистрам и задвоит остатки. Если всё же провели — отмените проведение и удалите копию.

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

Можно ли запускать тестирование и исправление, пока люди работают?
Нет. Режиму нужен монопольный доступ к базе. Выберите время, когда в базе никого нет, и заранее сделайте копию.
Пропадут ли данные при очистке кэша?
Нет. Кэш содержит только копию метаданных и служебные файлы. Документы и справочники хранятся в базе, а не на компьютере пользователя. Может сброситься внешний вид форм, если настройки ещё не успели сохраниться.
Чем журнал регистрации отличается от технологического журнала?
Журнал регистрации пишет события базы: кто и что изменил, какие были ошибки. Технологический журнал пишет события платформы: исключения, запросы, блокировки. Первый включён всегда, второй включают на время диагностики.
Сколько хранить журнал регистрации?
По умолчанию он растёт без ограничений. В Конфигураторе в Администрирование → Настройка журнала регистрации можно сократить состав событий или удалить старые записи, предварительно сохранив их в файл.
Почему ошибка исчезла после перезапуска, а через день вернулась?
Перезапуск сбрасывает сеанс и временные данные, но не устраняет причину. Такие плавающие ошибки удобнее всего ловить технологическим журналом с отбором по исключениям.