Ремонт базы и конфигурации 1С 8.3 средствами Конфигуратора
Содержание
Большинство ошибок 1С 8.3 исправляют в Конфигураторе двумя инструментами. Повреждённые данные лечит Администрирование → Тестирование и исправление…. Ошибки в коде и метаданных находит Конфигурация → Проверка конфигурации…. Для первого нужен монопольный доступ к базе, для второго — нет.
Типичная ситуация: утром бухгалтер открывает базу и видит Ошибка формата потока или Неустранимая ошибка, а вчера всё работало. Или после правки модуля программа ругается на Ошибка компиляции модуля. Ниже — порядок действий для обоих случаев: от безопасной диагностики до ремонта файла базы.
Перед любым исправлением сделайте резервную копию. Для файловой базы скопируйте папку с файлом 1Cv8.1CD, для клиент-серверной — снимите копию средствами СУБД или выгрузите базу в .dt через Администрирование → Выгрузить информационную базу…. Режим исправления меняет и удаляет данные, отката у него нет.
Сначала понять, где ошибка: в данных, коде или кэше
Одна и та же ошибка лечится по-разному в зависимости от источника. Прежде чем запускать ремонт, определите, к какой группе она относится.
| Признак | Где проблема | Чем исправлять |
|---|---|---|
Ошибка формата потока сразу при запуске любого пользователя | Кэш или повреждённые данные | Очистка кэша, затем тестирование базы |
Файл базы данных поврежден, Нарушена целостность | Файл 1Cv8.1CD или таблицы СУБД | Тестирование и исправление, chdbfl.exe |
Ошибка компиляции модуля с указанием строки | Код конфигурации | Проверка конфигурации, правка модуля |
Конфигурация базы данных не соответствует сохраненной конфигурации | Незавершённое обновление | Обновление конфигурации БД или откат |
Ошибка установки монопольного режима | Открытые сеансы | Завершение сеансов, блокировка входа |
Объект не найден (…) в документах | Битые ссылки | Тестирование с проверкой ссылочной целостности |
Если не открывается сам Конфигуратор
Начните с самого безопасного шага — очистки локального кэша. Он лежит на компьютере пользователя, а не в базе, поэтому его удаление данные не трогает.
- Закройте все окна 1С на этом компьютере.
- Запустите 1С с параметром
/ClearCache— его можно дописать в поле «Дополнительные параметры запуска» в свойствах базы в окне запуска. - Если не помогло, удалите вручную папки с длинными именами из 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.
- Найдите её в каталоге установленной платформы:
C:\Program Files\1cv8\<версия>\bin\chdbfl.exe. - Убедитесь, что базу никто не открыл: ни пользователи, ни Конфигуратор.
- Запустите утилиту, укажите путь к файлу
1Cv8.1CD. - Сначала проверьте без флажка «Исправлять обнаруженные ошибки». Посмотрите отчёт.
- Если ошибки есть, включите флажок и запустите повторно.
- После успешной проверки откройте базу в Конфигураторе и выполните «Тестирование и исправление» в обычном порядке.
Утилита работает напрямую с файлом базы. Без копии 1Cv8.1CD её не запускайте: при тяжёлом повреждении часть данных может не восстановиться.
Для клиент-серверной базы chdbfl.exe не подходит. Повреждения на стороне СУБД лечат её средствами: для MS SQL Server это DBCC CHECKDB, а для PostgreSQL — проверка и восстановление по документации СУБД. Такие операции выполняет администратор сервера баз данных.
Ошибки компиляции: поиск и исправление в коде
Ошибка компиляции появляется, когда код модуля содержит синтаксическую ошибку или обращается к несуществующему объекту. Платформа показывает текст вида:
{ОбщийМодуль.РаботаСДокументами.Модуль(125)}: Переменная не определена (СуммаСНДС)
В фигурных скобках — модуль и номер строки. Это и есть адрес ошибки.
Как найти все ошибки сразу
Не ищите их по одной, запуская программу. В Конфигураторе откройте Конфигурация → Проверка конфигурации… и отметьте:
- ✅ синтаксический контроль модулей;
- ✅ логическую проверку конфигурации;
- ✅ поиск некорректных ссылок;
- ✅ режимы, в которых работает база: тонкий клиент, веб-клиент, сервер, внешнее соединение.
Результат появится в окне сообщений. Двойной щелчок по строке открывает модуль на нужной строке.
Для одного модуля быстрее синтаксическая проверка прямо в редакторе: правый щелчок по тексту модуля → «Синтаксический контроль» или клавиши Ctrl+F7.
Частые причины и что делать
- 🔤 Переменная не определена. Опечатка в имени или переменная объявлена в другой процедуре. Проверьте написание, объявите
Перемили передайте значение параметром. - 🧩 Процедура или функция не найдена. Метод общего модуля не экспортирован или модуль не доступен на клиенте. Добавьте
Экспорти проверьте флажки «Клиент», «Сервер» в свойствах общего модуля. - 🖥️ Ошибка только в одном режиме. Код с серверными объектами вызван на клиенте. Перенесите вызов в процедуру с директивой
&НаСервере. - 📦 Ошибка после обновления типовой. Доработка конфликтует с новым кодом поставщика. Сравните модуль с конфигурацией поставщика и перенесите правку заново.
💡 Если ошибка вызвана расширением, отключите его в режиме 1С:Предприятие (Администрирование → Печатные формы, отчеты и обработки → Расширения) и проверьте, исчезла ли она. Отключённое расширение не удаляет его данные.
После правки кода выполните Конфигурация → Обновить конфигурацию базы данных (F7), иначе пользователи продолжат работать со старой версией модуля.
Обновление конфигурации базы данных: ошибки и откат
Конфигуратор хранит две конфигурации: основную (ту, что вы редактируете) и конфигурацию базы данных (ту, с которой работают пользователи). Ошибки часто возникают на стыке.
Обновление не применяется
Если F7 выдаёт сообщение о необходимости монопольного режима, значит изменилась структура данных: добавлен реквизит, регистр, табличная часть. Освободите базу, как описано выше, и повторите.
Изменения только в модулях часто удаётся применить динамически, без выгона пользователей. Но после такого обновления им всё равно нужно перезайти, чтобы увидеть новый код.
Обновление прервалось
Свет моргнул, сервер перезагрузился — обновление оборвано на середине. При следующем запуске появляется Конфигурация базы данных не соответствует сохраненной конфигурации. Продолжить?
Варианты:
- Довести обновление. Откройте Конфигуратор, освободите базу и снова нажмите
F7. Обычно этого достаточно. - Откатить изменения.
Конфигурация → Конфигурация базы данных → Вернуться к конфигурации БД. Основная конфигурация станет такой же, как у пользователей, все несохранённые в базе правки пропадут. - Восстановить из копии, если оба пути дают ошибку.
«Вернуться к конфигурации БД» стирает доработки, которые не были применены к базе. Если они нужны, сначала сохраните основную конфигурацию в файл: Конфигурация → Сохранить конфигурацию в файл….
Ошибки при обновлении типовой конфигурации
При загрузке обновления из файла .cfu Конфигуратор может сообщить, что конфигурация не находится на поддержке или что не подходит версия. Проверьте:
- 📌 номер текущего релиза в
Справка → О программе— обновление ставится только на тот релиз, для которого предназначено; - 📌 номер платформы — он должен быть не ниже минимального, указанного в описании обновления;
- 📌 режим поддержки в
Конфигурация → Поддержка → Настройка поддержки.
Если исправление не помогло
Бывает, что после всех проверок база всё равно падает. Тогда остаются радикальные способы — по порядку от мягкого к жёсткому.
- Выгрузка и загрузка
.dt.Администрирование → Выгрузить информационную базу…, затем загрузка в новую пустую базу. При выгрузке данные перечитываются и записываются заново, мелкие повреждения часто исчезают. Если выгрузка падает на конкретном объекте, это подсказка, где искать проблему. - Перенос в новую файловую базу. Создайте пустую базу, загрузите в неё
.dt. Старый повреждённый1Cv8.1CDоставьте как архив. - Сохранение конфигурации отдельно от данных. Если сломана только конфигурация, сохраните её в
.cfиз рабочей копии, а данные восстановите из последней удачной резервной копии. - Восстановление из резервной копии. Самый надёжный путь, если копия свежая. Потерянные операции после даты копии придётся ввести заново.
💡 Чтобы проблема не повторилась, настройте регулярное резервное копирование и раз в месяц запускайте «Только тестирование» в нерабочее время. Ранние ошибки целостности проще лечить, чем полностью разрушенную базу.