Ремонт базы и конфигурации 1С 8.3 средствами Конфигуратора

· 10 мин

Содержание

Большинство ошибок 1С 8.3 исправляют в Конфигураторе двумя инструментами. Повреждённые данные лечит Администрирование → Тестирование и исправление…. Ошибки в коде и метаданных находит Конфигурация → Проверка конфигурации…. Для первого нужен монопольный доступ к базе, для второго — нет.

Типичная ситуация: утром бухгалтер открывает базу и видит Ошибка формата потока или Неустранимая ошибка, а вчера всё работало. Или после правки модуля программа ругается на Ошибка компиляции модуля. Ниже — порядок действий для обоих случаев: от безопасной диагностики до ремонта файла базы.

Перед любым исправлением сделайте резервную копию. Для файловой базы скопируйте папку с файлом 1Cv8.1CD, для клиент-серверной — снимите копию средствами СУБД или выгрузите базу в .dt через Администрирование → Выгрузить информационную базу…. Режим исправления меняет и удаляет данные, отката у него нет.

Сначала понять, где ошибка: в данных, коде или кэше

Одна и та же ошибка лечится по-разному в зависимости от источника. Прежде чем запускать ремонт, определите, к какой группе она относится.

ПризнакГде проблемаЧем исправлять
Ошибка формата потока сразу при запуске любого пользователяКэш или повреждённые данныеОчистка кэша, затем тестирование базы
Файл базы данных поврежден, Нарушена целостностьФайл 1Cv8.1CD или таблицы СУБДТестирование и исправление, chdbfl.exe
Ошибка компиляции модуля с указанием строкиКод конфигурацииПроверка конфигурации, правка модуля
Конфигурация базы данных не соответствует сохраненной конфигурацииНезавершённое обновлениеОбновление конфигурации БД или откат
Ошибка установки монопольного режимаОткрытые сеансыЗавершение сеансов, блокировка входа
Объект не найден (…) в документахБитые ссылкиТестирование с проверкой ссылочной целостности

Если не открывается сам Конфигуратор

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

  1. Закройте все окна 1С на этом компьютере.
  2. Запустите 1С с параметром /ClearCache — его можно дописать в поле «Дополнительные параметры запуска» в свойствах базы в окне запуска.
  3. Если не помогло, удалите вручную папки с длинными именами из GUID в каталогах %APPDATA%\1C\1cv8 и %LOCALAPPDATA%\1C\1cv8.

💡 Удалять нужно именно папки-идентификаторы, а не весь каталог 1cv8: там же хранятся настройки списка баз. Если сотрёте лишнее, список баз придётся добавлять заново.

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

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

Тестирование и исправление, загрузка .dt и обновление структуры базы требуют, чтобы в ней не было других сеансов. Обычная правка кода в Конфигураторе этого не требует — можно работать параллельно с пользователями.

Если при запуске тестирования появляется Ошибка установки монопольного режима, кто-то ещё держит базу. Варианты действий:

  • 👥 Попросить пользователей выйти. Самый мягкий способ, подходит для маленькой фирмы.
  • 🔒 Заблокировать вход из самой программы. В типовых конфигурациях: Администрирование → Обслуживание → Блокировка работы пользователей. Укажите время начала, сообщение и код разрешения — с ним администратор сможет зайти сам.
  • 🖥️ Через консоль кластера (клиент-серверная база ). В свойствах информационной базы включите «Блокировка начала сеансов включена», затем удалите оставшиеся сеансы в списке «Сеансы».
  • 📁 Файловая база. Сеансы видны только по открытым файлам. Проверьте, кто держит 1Cv8.1CD, на сервере, где лежит папка базы: в Windows это «Управление компьютером → Общие папки → Открытые файлы».

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

Зависшие процессы 1cv8.exe на терминальном сервере тоже мешают монопольному доступу. Найдите их в диспетчере задач на вкладке «Подробности» и завершите — снова только когда пользователи предупреждены.

Тестирование и исправление информационной базы

Это главный инструмент ремонта данных. Он находится в Конфигураторе: Администрирование → Тестирование и исправление….

Какие галочки ставить

В окне шесть проверок. Каждая решает свою задачу:

ПроверкаЧто делаетКогда включать
Реиндексация таблицПересобирает индексыТормозит поиск, ошибки при отборе списков
Проверка логической целостностиИщет нарушения структуры данныхПочти всегда
Проверка ссылочной целостностиИщет ссылки на несуществующие объекты«Объект не найден», битые реквизиты
Пересчёт итоговПересчитывает итоги регистровНеверные остатки в отчётах
Сжатие таблицУбирает удалённые записи, уменьшает файлПосле массового удаления объектов
Реструктуризация таблицПересоздаёт таблицы базыТолько при серьёзном повреждении

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

Сначала только тестирование

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

Затем переключитесь на «Тестирование и исправление» и настройте поведение при проблемах:

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

💡 Для огромных баз есть флажок ограничения времени тестирования и возможность продолжить с точки прерывания. Так проверку можно растянуть на несколько ночей.

Запуск из командной строки

Тестирование можно запустить без интерфейса, например по расписанию. Пример для файловой базы:

"C:\Program Files\1cv8\8.3.24.1548\bin\1cv8.exe" DESIGNER /F"D:\Bases\Buh" /N"Администратор" /P"пароль" /IBCheckAndRepair -LogIntegrity -RecalcTotals -BadRefCreate /Out"D:\Logs\check.txt"

Ключ -TestOnly включает режим без исправлений. Номер версии в пути замените на установленный у вас. Результат проверки пишется в файл, указанный в /Out.

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

Бывает, что файл 1Cv8.1CD повреждён так, что Конфигуратор не открывает базу вовсе. Тогда тестирование изнутри недоступно, и на помощь приходит внешняя утилита chdbfl.exe.

  1. Найдите её в каталоге установленной платформы: C:\Program Files\1cv8\<версия>\bin\chdbfl.exe.
  2. Убедитесь, что базу никто не открыл: ни пользователи, ни Конфигуратор.
  3. Запустите утилиту, укажите путь к файлу 1Cv8.1CD.
  4. Сначала проверьте без флажка «Исправлять обнаруженные ошибки». Посмотрите отчёт.
  5. Если ошибки есть, включите флажок и запустите повторно.
  6. После успешной проверки откройте базу в Конфигураторе и выполните «Тестирование и исправление» в обычном порядке.

Утилита работает напрямую с файлом базы. Без копии 1Cv8.1CD её не запускайте: при тяжёлом повреждении часть данных может не восстановиться.

Для клиент-серверной базы chdbfl.exe не подходит. Повреждения на стороне СУБД лечат её средствами: для MS SQL Server это DBCC CHECKDB, а для PostgreSQL — проверка и восстановление по документации СУБД. Такие операции выполняет администратор сервера баз данных.

Ошибки компиляции: поиск и исправление в коде

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

{ОбщийМодуль.РаботаСДокументами.Модуль(125)}: Переменная не определена (СуммаСНДС)

В фигурных скобках — модуль и номер строки. Это и есть адрес ошибки.

Как найти все ошибки сразу

Не ищите их по одной, запуская программу. В Конфигураторе откройте Конфигурация → Проверка конфигурации… и отметьте:

  • ✅ синтаксический контроль модулей;
  • ✅ логическую проверку конфигурации;
  • ✅ поиск некорректных ссылок;
  • ✅ режимы, в которых работает база: тонкий клиент, веб-клиент, сервер, внешнее соединение.

Результат появится в окне сообщений. Двойной щелчок по строке открывает модуль на нужной строке.

Для одного модуля быстрее синтаксическая проверка прямо в редакторе: правый щелчок по тексту модуля → «Синтаксический контроль» или клавиши Ctrl+F7.

Частые причины и что делать

  • 🔤 Переменная не определена. Опечатка в имени или переменная объявлена в другой процедуре. Проверьте написание, объявите Перем или передайте значение параметром.
  • 🧩 Процедура или функция не найдена. Метод общего модуля не экспортирован или модуль не доступен на клиенте. Добавьте Экспорт и проверьте флажки «Клиент», «Сервер» в свойствах общего модуля.
  • 🖥️ Ошибка только в одном режиме. Код с серверными объектами вызван на клиенте. Перенесите вызов в процедуру с директивой &НаСервере.
  • 📦 Ошибка после обновления типовой. Доработка конфликтует с новым кодом поставщика. Сравните модуль с конфигурацией поставщика и перенесите правку заново.

💡 Если ошибка вызвана расширением, отключите его в режиме 1С:Предприятие (Администрирование → Печатные формы, отчеты и обработки → Расширения) и проверьте, исчезла ли она. Отключённое расширение не удаляет его данные.

После правки кода выполните Конфигурация → Обновить конфигурацию базы данных (F7), иначе пользователи продолжат работать со старой версией модуля.

Обновление конфигурации базы данных: ошибки и откат

Конфигуратор хранит две конфигурации: основную (ту, что вы редактируете) и конфигурацию базы данных (ту, с которой работают пользователи). Ошибки часто возникают на стыке.

Обновление не применяется

Если F7 выдаёт сообщение о необходимости монопольного режима, значит изменилась структура данных: добавлен реквизит, регистр, табличная часть. Освободите базу, как описано выше, и повторите.

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

Обновление прервалось

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

Варианты:

  1. Довести обновление. Откройте Конфигуратор, освободите базу и снова нажмите F7. Обычно этого достаточно.
  2. Откатить изменения. Конфигурация → Конфигурация базы данных → Вернуться к конфигурации БД. Основная конфигурация станет такой же, как у пользователей, все несохранённые в базе правки пропадут.
  3. Восстановить из копии, если оба пути дают ошибку.

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

Ошибки при обновлении типовой конфигурации

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

  • 📌 номер текущего релиза в Справка → О программе — обновление ставится только на тот релиз, для которого предназначено;
  • 📌 номер платформы — он должен быть не ниже минимального, указанного в описании обновления;
  • 📌 режим поддержки в Конфигурация → Поддержка → Настройка поддержки.
Диагностика: выберите симптом

Если исправление не помогло

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

  1. Выгрузка и загрузка .dt. Администрирование → Выгрузить информационную базу…, затем загрузка в новую пустую базу. При выгрузке данные перечитываются и записываются заново, мелкие повреждения часто исчезают. Если выгрузка падает на конкретном объекте, это подсказка, где искать проблему.
  2. Перенос в новую файловую базу. Создайте пустую базу, загрузите в неё .dt. Старый повреждённый 1Cv8.1CD оставьте как архив.
  3. Сохранение конфигурации отдельно от данных. Если сломана только конфигурация, сохраните её в .cf из рабочей копии, а данные восстановите из последней удачной резервной копии.
  4. Восстановление из резервной копии. Самый надёжный путь, если копия свежая. Потерянные операции после даты копии придётся ввести заново.

💡 Чтобы проблема не повторилась, настройте регулярное резервное копирование и раз в месяц запускайте «Только тестирование» в нерабочее время. Ранние ошибки целостности проще лечить, чем полностью разрушенную базу.

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

Можно ли запускать тестирование и исправление, пока пользователи работают?
Нет. Режим требует монопольного доступа, программа не запустит проверку при открытых сеансах. Запускайте его вечером или в выходной.
Сколько длится тестирование базы?
Файловая база на 2–3 ГБ проверяется за 10–30 минут. Клиент-серверная на десятки гигабайт с реструктуризацией — несколько часов.
Удалит ли исправление мои документы?
Может, если выбрать «Удалять объекты» при частичной потере данных. Режим «Создавать объекты» сохраняет заглушки, а «Только тестирование» не меняет ничего.
Почему после исправления остались объекты с названием «Объект не найден»?
Это заглушки, которые программа создала вместо потерянных объектов. Найдите их по поиску в списках, заполните или замените ссылки на правильные и пометьте заглушки на удаление.
Нужно ли быть программистом, чтобы исправлять ошибки в Конфигураторе?
Для тестирования базы и очистки кэша — нет, достаточно прав администратора. Для правки ошибок компиляции нужны знания встроенного языка 1С.