Почему падает рабочий процесс фонового задания при удалении помеченных объектов в 1С 8.3 и как это исправить?

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

При администрировании и разработке в среде «1С:Предприятие» технические специалисты нередко сталкиваются с ситуациями, когда стандартные, годами отработанные операции внезапно начинают давать системные сбои. Одной из таких крайне неприятных проблем является аварийное завершение рабочего процесса сервера (rphost) или аварийное закрытие клиентского приложения при попытке выполнить тривиальное удаление помеченных объектов. Особенно остро эта проблема проявила себя на платформе версий 8.3.12.1469 и 8.3.12.1529 в клиент-серверных базах под управлением СУБД MS SQL Server, а также в файловых вариантах работы.

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

Симптомы проблемы и поведение системы

Давайте проанализируем типичную ситуацию, с которой сталкивается администратор базы данных или разработчик при возникновении этой ошибки:

  1. При запуске стандартной обработки «Удаление помеченных объектов» (в монопольном или фоновом режиме) процесс прерывается практически в самом начале анализа связей.
  2. В клиентском приложении выводится критическое сообщение: «Аварийно завершился рабочий процесс фонового задания». При этом Журнал регистрации (ЖР) не фиксирует никаких подробных технических деталей сбоя и «молчит как рыба», поскольку рабочий процесс rphost завершается операционной системой аварийно до того, как успевает записать лог.
  3. В файловом варианте работы базы данных происходит мгновенное падение платформы с закрытием окна программы («черный экран» или стандартное окно ОС об ошибке приложения 1cv8.exe).
  4. При попытке открыть Конструктор запросов в режиме «1С:Предприятие» или выполнить обращение к расширенным таблицам (например, к Регистру бухгалтерии) система также мгновенно завершает свою работу.

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

Выясняем техническую причину: связь с механизмом расширений

Для того чтобы понять природу ошибки, нам необходимо заглянуть под капот механизма взаимодействия платформы 1С с СУБД при использовании расширений конфигурации. Начиная с версии платформы 8.3.12, разработчики фирмы «1С» активно внедряли новые возможности расширения метаданных. Появилась возможность заимствовать сложные объекты, изменять их структуру и добавлять новые реквизиты в таблицы базы данных.

Однако в релизах 8.3.12.1469 и 8.3.12.1529 была допущена критическая ошибка в ядре платформы, связанная с динамическим анализом метаданных. При запуске процедуры удаления помеченных объектов система выполняет колоссальный объем работы: фоновое задание опрашивает абсолютно все таблицы базы данных на предмет наличия ссылок на удаляемые элементы. Это необходимо для обеспечения ссылочной целостности.

Если в активном расширении конфигурации содержатся заимствованные сложные объекты метаданных, такие как:

То в этот момент фоновое задание не может корректно сопоставить физическую структуру таблиц СУБД (MS SQL, PostgreSQL и др.) с логической структурой метаданных, которая была модифицирована расширением. Происходит обращение к неинициализированным или несуществующим адресам в оперативной памяти процесса (так называемый Null Pointer Dereference или Segmentation Fault). Операционная система мгновенно принудительно завершает процесс rphost (на сервере) или 1cv8.exe (на клиенте) для предотвращения порчи данных.

Именно поэтому блокировка регламентных заданий в консоли администрирования кластера серверов 1С не дает никакого эффекта — ведь падает само фоновое задание, запущенное пользователем для удаления объектов, а не сторонние фоновые процессы.

Разберем по шагам методы решения проблемы

Существует несколько способов преодоления этой критической ошибки: от оперативных обходных путей («костылей») до фундаментального исправления на уровне инфраструктуры. Рассмотрим каждый из них.

Способ 1. Временное отключение или удаление расширения (Быстрый обходной путь)

Если вам необходимо срочно выполнить удаление помеченных объектов в работающей базе, а времени на обновление платформы прямо сейчас нет, воспользуемся проверенным практическим методом:

  1. Запланируйте технологический перерыв и попросите всех пользователей выйти из информационной базы.
  2. Запустите конфигуратор и создайте резервную копию базы данных (выгрузку .dt) или сделайте бэкап средствами СУБД MS SQL. Это обязательный шаг!
  3. Перейдите в меню Конфигурация — Расширения конфигурации.
  4. Выделите расширение, которое вносит изменения в структуру данных или заимствует сложные регистры, и сохраните его в файл на диск (кнопка «Сохранить расширение в файл...»), чтобы не потерять внесенные доработки.
  5. Удалите это расширение из списка активных расширений в конфигураторе. Обратите внимание: если расширение просто деактивировать (снять галочку «Активно»), то при удалении объектов все равно может возникнуть ошибка совместимости структур данных, поэтому надежнее именно полностью удалить его на время процедуры.
  6. Запустите сеанс «1С:Предприятие» в монопольном режиме.
  7. Выполните стандартное Удаление помеченных объектов. Процедура должна пройти в штатном режиме без аварийных завершений, так как структура СУБД теперь полностью соответствует основной конфигурации.
  8. После успешного завершения удаления вернитесь в конфигуратор, добавьте расширение заново, загрузив его из сохраненного ранее файла, и активируйте его.

Способ 2. Очистка серверного и локального кэша

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

  1. Остановите службу сервера «1С:Предприятие 8.3» (через оснастку services.msc).
  2. Перейдите в каталог хранения данных сервера (по умолчанию для 64-битной версии это C:\Program Files\1cv8\srvinfo\reg_1541).
  3. Найдите и полностью очистите каталог временных файлов сеансов и метаданных snccntry.
  4. Очистите временные файлы в системных папках профиля пользователя, под которым запускается служба сервера 1С (обычно это Local\Temp в папке пользователя USR1CV8).
  5. Запустите службу сервера 1С заново и повторите операцию удаления помеченных.

Способ 3. Кардинальное решение — обновление технологической платформы

Описанная проблема является зарегистрированной и признанной ошибкой платформы 1С. Использование временных обходных путей с удалением расширений — это мера, пригодная лишь для разового применения. Для обеспечения стабильной и безопасной работы системы необходимо обновить платформу.

Рекомендации разработчикам по проектированию расширений (Best Practices)

Чтобы минимизировать риски возникновения подобных аппаратных сбоев и ошибок СУБД в будущем, рекомендуем придерживаться золотых правил разработки с использованием расширений:

Таким образом, мы выяснили природу сбоя платформы 8.3.12 при удалении помеченных объектов, пошагово разобрали экспресс-метод восстановления работоспособности базы данных и определили стратегию предотвращения подобных ошибок в будущем.

← На главную