При работе с крупными базами данных (100 Гб и выше) на платформе 1С:Предприятие 8 часто возникают ситуации, когда стандартные средства обслуживания (Тестирование и исправление, выгрузка в dt) перестают работать. Конфигуратор внезапно закрывается с ошибкой APPCRASH в модуле backend.dll с кодом исключения c0000005. Разберем подробно, почему это происходит и как восстановить работоспособность базы с помощью инструментов MS SQL Server.
Ошибка c0000005 (Access Violation) означает, что приложение попыталось обратиться к области памяти, к которой у него нет доступа. В контексте 1С это чаще всего происходит по трем причинам:
Config и Params остаются записи, блокирующие нормальную работу.1cv8.exe ограничен 2 Гб оперативной памяти. При реструктуризации таблиц огромного объема конфигуратор может просто «захлебнуться» при построении индексов.Рассмотрим пошагово методы решения проблемы, начиная от самых простых и заканчивая прямым вмешательством в структуру SQL-таблиц.
Как показывает практика, часто виновником краша является конкретное регламентное задание (РЗ). Если при выполнении теста логической целостности система падает на проверке определенного РЗ, это указывает на повреждение его настроек в базе данных. Выясним, как это исправить.
У каждого регламентного задания в SQL-базе есть своя техническая таблица вида _ScheduledJobsXXXXX. Рассмотрим алгоритм действий:
_ScheduledJobs.
-- Очистка данных регламентного задания (замените ИмяТаблицы на вашу)
TRUNCATE TABLE [ИмяВашейБД].[dbo].[_ScheduledJobs12345]
После очистки таблицы на уровне SQL выполним следующие действия в Конфигураторе:
Динамическое обновление (так называемое «обновление демоном») — удобная, но опасная функция. Она часто приводит к рассинхронизации таблиц Config и ConfigSave. Если база перестала обновляться после такого действия, нам нужно принудительно очистить признаки динамического обновления на уровне СУБД.
Выполним следующие SQL-запросы для очистки системных таблиц:
-- Удаление записей о динамическом обновлении из таблицы Config
DELETE FROM [ИмяВашейБД].[dbo].[Config]
WHERE [FileName] LIKE '%DynamicallyUpdated%'
-- Удаление записей о динамическом обновлении из таблицы Params
DELETE FROM [ИмяВашейБД].[dbo].[Params]
WHERE [FileName] LIKE '%DynamicallyUpdated%'
Важный момент: Перед выполнением любых запросов DELETE или TRUNCATE обязательно создавайте полную резервную копию базы данных в формате .bak средствами SQL Server!
Иногда единственным способом «оживить» конфигурацию является полная замена таблицы Config из исправного бэкапа или пустой базы с той же конфигурацией. Однако после такой операции пользователи часто сталкиваются с ошибкой «Недостаточно прав» при входе.
Проанализируем причину: список пользователей 1С хранится в таблице v8users, но их связь с метаданными зашита в файле users.usr, который находится внутри таблицы Config. Если вы подменили Config, возникнет конфликт. Разберем, как его решить:
v8users в v8users_old.v8users, синхронизированную с текущей таблицей Config.Если визуально не удается определить, на каком объекте падает система, нам поможет Технологический журнал (ТЖ). Стандартных логов недостаточно, поэтому создадим файл logcfg.xml в папке conf (обычно это C:\Program Files\1cv8\conf) со следующим содержанием:
<config xmlns="http://v8.1c.ru/7.4/config/logcfg">
<dump location="C:\Dumps" create="1" type="2"/>
<log location="C:\Logs1C" history="24">
<event>
<eq property="Name" value="EXCP"/>
</event>
<event>
<eq property="Name" value="SDBL"/>
</event>
</log>
</config>
Проанализируем полученные логи после краша. Нас интересуют последние записи перед событием EXCP. Часто там фигурирует SQL-запрос к конкретной таблице (например, _InfoReg12345). Именно этот объект и является «битым». Попробуйте очистить эту таблицу через SQL или удалить/пересоздать соответствующий объект метаданных в конфигурации.
Рассмотрим еще несколько технических нюансов, которые помогут избежать ошибки backend.dll:
%AppData%\1C\1cv8 и %LocalAppData%\1C\1cv8 как на сервере, так и на рабочих станциях.Large Address Aware для исполняемого файла 1cv8.exe, чтобы расширить доступную память до 4 Гб.DBCC CHECKDB для проверки физической целостности страниц данных и UPDATE STATISTICS для актуализации статистики индексов.Таким образом, если штатные средства 1С бессильны, прямое взаимодействие с таблицами MS SQL Server позволяет точечно вырезать проблемные данные и вернуть базу в рабочее состояние без потери всей накопленной информации.