Что ломает базу 1С: сценарии отказа и как их избежать

· 9 мин

Содержание

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

Ниже — сценарии, по которым 1С:Предприятие 8.3 уходит в отказ, и за каждым сломом — простое правило, как его не допустить. Разбор пригодится, если вы администрируете базу и хотите понимать границы, за которые заходить нельзя.

Общее правило перед любой операцией из этой статьи: сначала резервная копия, потом действие. Копию базы делайте выгрузкой в .dt или средствами СУБД, а не копированием каталога работающей базы.

Правка конфигурации вслепую — самый быстрый способ отказа

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

Что реально ломает базу на этом уровне:

  • 🔧 Изменение структуры без понимания. Удаление реквизита, смена типа, переименование объекта метаданных меняет таблицы СУБД. Неудачная реструктуризация на большой базе может оборваться по таймауту или нехватке места и оставить структуру в промежуточном состоянии.
  • 🧩 Снятие с поддержки без необходимости. После этого типовое обновление перестаёт накатываться автоматически, и каждый релиз превращается в ручное сравнение-объединение.
  • 🗃️ Правка данных напрямую в СУБД в обход платформы. Прямые UPDATE/DELETE в SQL по таблицам 1С рушат ссылочную целостность и итоги регистров — платформа этого не прощает.

Монопольный доступ платформа требует не всегда. Он нужен для изменения структуры базы при обновлении, загрузки файла .dt и запуска тестирования и исправления. Для правки форм, модулей и отчётов без изменения структуры монополия не нужна — динамическое обновление применяет такие изменения, не выгоняя пользователей.

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

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

Прямые изменения в таблицах СУБД в обход 1С — это гарантированная порча базы, даже если «всего одно поле».

Обрыв транзакций и зависшие блокировки

Сама по себе блокировка базу не ломает — она лишь тормозит работу. К отказу приводит неправильная реакция на неё. Пользователь жалуется, что «1С висит», администратор нервно снимает процессы — и вот тогда начинаются проблемы.

Разберём, что происходит на самом деле:

  • Взаимоблокировка (deadlock). Два сеанса ждут ресурсы друг друга. Платформа сама разрывает одну из транзакций — это штатное поведение, база не страдает, страдает только прерванная операция.
  • Длинная транзакция. Групповое проведение или обмен держит блокировку на регистре, и остальные ждут. Решается не «убийством» сеанса, а оптимизацией операции и выбором времени.
  • Завершение сеанса. Корректное завершение сеанса из консоли администрирования откатывает незавершённую транзакцию — база остаётся целой.

Опаснее другое — грубое вмешательство на уровне ОС:

Снятие рабочего процесса rphost через диспетчер задач, остановка службы сервера 1С или службы СУБД под нагрузкой обрывают все активные сеансы разом. Делайте это только когда понимаете, что идёт откат, и только после предупреждения пользователей — иначе кто-то потеряет несохранённую работу.

Отдельный источник отказа в клиент-серверном варианте — переполнение. Если журнал транзакций СУБД или диск под tempdb заканчиваются во время большой операции, транзакция не может завершиться, и база встаёт. Это не «сломанная 1С» — это кончившееся место, но пользователь видит одно и то же: работать нельзя.

Ошибки в консоли кластера серверов

Консоль администрирования серверов 1С — мощный инструмент, которым легко навредить, потому что многие действия выглядят безобидно.

Частые ошибки здесь:

  1. Удаление информационной базы из списка кластера. Пункт «Удалить» убирает регистрацию базы в кластере, а с галочкой очистки — и саму базу в СУБД. Без копии данные не вернуть.
  2. Агрессивные лимиты рабочих процессов. Слишком низкий порог памяти или времени на процесс заставляет кластер перезапускать rphost прямо под пользователями, обрывая сеансы.
  3. Жёсткие тайм-ауты сеансов. Короткий интервал принудительного завершения выкидывает людей из базы в середине работы.

Отдельная болезненная ситуация — потерянный пароль администратора кластера. Не пытайтесь «пересоздать кластер» или удалить его настройки — так вы потеряете регистрации всех баз. Правильный путь: остановить службу агента сервера , восстановить файл со списком кластеров из резервной копии каталога сервера или обратиться к администратору сервера, у которого есть доступ к хосту.

Команды утилиты rac безопаснее консоли для диагностики: rac cluster list покажет кластеры, rac session list — активные сеансы. Параметры, в которых не уверены, уточняйте через rac help — не подбирайте ключи наугад.

При проблемах с консолью после переустановки платформы помогает перерегистрация её COM-компоненты (radmin.dll) — без этого консоль может просто не подключаться к агенту.

Порча файла базы в файловом режиме

Файловая база — это один файл 1Cv8.1CD, и обращаются с ним так, будто это обычный документ. Отсюда большинство «неоткрывающихся» баз.

Что приводит к повреждению файла:

  • 📁 Копирование или перемещение .1CD при работающих пользователях. Файл в этот момент меняется; копия получается битой, а оригинал — с риском.
  • 🌐 Файловая база на сетевом диске или в облачной папке. Работа файловой базы по SMB-шаре или через синхронизируемую папку (облачные клиенты) не рассчитана на одновременный доступ и обрывы сети — это классический путь к порче.
  • 🛡️ Антивирус, который блокирует файл в момент записи, и жёсткое выключение компьютера под нагрузкой.

Если база после сбоя не открывается, порядок восстановления такой:

  1. Сделайте копию текущего (пусть и битого) файла .1CD — вдруг понадобится.
  2. Запустите штатную утилиту проверки файловых баз chdbfl.exe из каталога платформы, включив режим исправления. Все пользователи при этом должны выйти — проверка требует монопольного доступа.
  3. Если chdbfl.exe не справился — разворачивайте последнюю резервную копию. Поэтому копии и делают.

Файловую базу , с которой работает больше 2-3 человек, держите не на сетевой папке, а переводите в клиент-серверный вариант — это снимает главную причину порчи.

Массовые обработки и групповые изменения

Самый тихий способ «сломать» базу — не уронить её, а незаметно испортить данные. Внешне всё работает, а отчёты врут.

Опасные операции без копии:

  • 🔁 Групповое перепроведение всех документов за период меняет последовательность движений и закрытые итоги. На большой базе это ещё и часы блокировок.
  • ✏️ Групповое изменение реквизитов справочников и документов применяется сразу ко всему отбору. Ошиблись в отборе — изменили не то и не вернёте без копии.
  • 🗑️ Удаление помеченных объектов без контроля ссылок. Платформа не даст удалить то, на что ссылаются, но массовая чистка легко задевает нужные объекты.
  • 🔄 Повторный запуск обмена данными, который задваивает документы, если настройки узлов сбиты.

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

Особая осторожность — с операциями, которые трогают последовательности и закрытие периода . Перепроведение и восстановление последовательности пересчитывают движения по хронологии, и если в середине вмешаться (прервать, запустить параллельно ещё одну массовую обработку), итоги разъедутся. Закрытие месяца тоже чувствительно: повторный запуск поверх уже закрытого периода без понимания, что делаете, легко испортит проводки. Такие операции делают по одной, до конца и с контролем отчётов после.

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

Сеть, разрывы соединений и таймауты

В клиент-серверном варианте сеть — отдельный источник сбоев, но ломает она по-разному.

Тонкий клиент переживает короткий разрыв: при восстановлении связи сеанс обычно подхватывается, а зависший сеанс кластер закроет по тайм-ауту. Настоящие проблемы начинаются в других местах:

  • 📡 Нестабильная связь сервера 1С с СУБД. Если рвётся канал между сервером приложений и SQL-сервером, прерываются транзакции и копятся ошибки — это бьёт по всем пользователям сразу.
  • 🧮 Короткие тайм-ауты на длинных операциях. Разрыв по тайм-ауту в середине большого проведения или закрытия месяца откатывает всю операцию.
  • 🔌 Работа файловой базы по VPN или медленному каналу. Тот же сетевой доступ к .1CD, только хуже — высокая задержка и обрывы прямо провоцируют порчу файла.

Для удалённой работы не раздавайте файловую базу по сети. Либо переходите в клиент-серверный режим, либо публикуйте базу через веб-сервер и работайте тонким клиентом по HTTP — это устойчивее к обрывам, чем прямой доступ к файлу.

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

Ещё одна сетевая ловушка — рост журнала регистрации и временных файлов. При активном обмене и нестабильной сети платформа копит записи и временные таблицы; на сервере с тесным диском это однажды заканчивается нехваткой места, и база встаёт не из-за «поломки», а из-за заполненного раздела. Мониторьте свободное место на дисках сервера 1С и СУБД — это дешевле любого восстановления.

Частые ошибки и как их избежать

Короткий список того, на чём спотыкаются чаще всего — без повторения шагов выше.

ДействиеЧем оборачиваетсяКак правильно
Копирование каталога работающей базыБитая копияВыгрузка .dt или остановка пользователей
Снятие с поддержки «ради одной формы»Потеря типовых обновленийДоработка в расширении
Снятие rphost через диспетчер задачОбрыв всех сеансовЗавершение сеансов из консоли
Массовая обработка на продуктиве днёмБлокировки и испорченные данныеКопия + нерабочее время
Файловая база на сетевой папкеПорча .1CDКлиент-сервер или веб-публикация
Прямой UPDATE в таблицах 1СНарушение целостностиТолько через объекты платформы
Перед опасной операцией
Выполнено: 0 / 5

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

Можно ли восстановить базу после жёсткого выключения сервера?
Часто да. В файловом режиме помогает chdbfl.exe с исправлением, в клиент-серверном — тестирование и исправление средствами платформы и штатное восстановление СУБД. Если структура повреждена необратимо, разворачивают последнюю резервную копию.
Опасно ли завершать зависший сеанс пользователя?
Нет, если делать это штатно — из консоли администрирования или утилитой rac. Платформа откатит незавершённую транзакцию, база останется целой. Опасно снимать процесс rphost или останавливать службу под нагрузкой.
Почему нельзя держать файловую базу на сетевом диске?
Файловый формат не рассчитан на одновременный доступ через сетевую шару и обрывы связи. Любой сбой во время записи файла .1CD может его повредить. Для нескольких пользователей нужен клиент-серверный вариант или веб-публикация.
Может ли антивирус сломать базу 1С?
Да, если он блокирует или «лечит» файл базы во время записи. Каталоги баз и временные файлы платформы стоит добавить в исключения антивируса — но только на доверенных серверах и с согласованием со службой безопасности.
Что делать, если база не открывается после сбоя?
Не удаляйте ничего. Сделайте копию текущего файла, запустите проверку (chdbfl.exe для файловой или тестирование и исправление для клиент-серверной), и если не помогло — восстановите резервную копию. Пересоздавать базу или кластер не нужно.