Ситуация, когда после удаления метаданных в расширении (например, регистров сведений или реквизитов табличных частей) база данных 1С начинает выдавать критическую ошибку при попытке выгрузки в .dt, является довольно распространенной и крайне неприятной. Ошибка часто сопровождается текстом «Соединение с сервером баз данных разорвано администратором Microsoft OLE DB Driver for SQL Server: Named Pipes Provider: Could not open a connection to SQL Server [5]. HRESULT=80004005». Это свидетельствует о глубоком конфликте между логическим описанием конфигурации и физической структурой таблиц в SQL-базе.
Разберем подробно причины возникновения этой проблемы и эффективные методы её решения, основываясь на опыте практикующих специалистов и особенностях платформы 1С:Предприятие 8.3.27.
Проанализируем ситуацию: когда мы добавляем объект в расширение с включенной опцией хранения данных, платформа создает в СУБД реальные физические таблицы. При удалении объекта из расширения платформа должна корректно инициировать процесс реструктуризации и удалить эти таблицы или поля. Однако в новых версиях платформы (особенно в ветках 8.3.26 и 8.3.27) механизм Update-DBSchema для расширений может срабатывать некорректно.
В результате в системных таблицах Config, ConfigCAS или ExtensionTables могут остаться записи об объектах, которые уже отсутствуют в метаданных расширения. При попытке формирования файла .dt платформа обходит все зарегистрированные объекты. Натыкаясь на «фантомную» ссылку, рабочий процесс сервера rphost аварийно завершается (дамп), что и приводит к разрыву соединения с SQL-сервером.
Первым делом рассмотрим стандартный функционал платформы. Если конфигурация расширения сообщает, что все в порядке, но основная конфигурация «ругается» на неразрешимые ссылки, необходимо выполнить Тестирование и исправление (ТиИ) основной базы. Рассмотрим по шагам, какие флаги стоит выставить:
Важно: Перед любыми действиями с ТиИ обязательно создайте резервную копию базы данных средствами SQL Server (файл .bak), так как выгрузка в .dt у вас на данном этапе не работает.
Иногда стандартное ТиИ не помогает, так как проблема кроется в самих файлах конфигурации, хранящихся в базе. В этом случае проанализируем метод «перезагрузки» метаданных:
.cf файл)..cfe, удалим расширение из базы совсем, обновим конфигурацию базы данных, а затем загрузим расширение обратно (уже без проблемных объектов).Этот процесс заставляет платформу полностью пересоздать внутренние реестры объектов метаданных, что часто устраняет «зависшие» ссылки.
Рассмотрим профилактический метод, который позволяет избежать подобных ошибок в будущем. Если вы планируете удалить объект из расширения, в котором накоплены данные (например, РегистрСведений), выполните следующие действия:
Это минимизирует нагрузку на механизм реструктуризации и предотвращает ошибки тайм-аута или блокировок со стороны SQL Server.
Посмотрим на проблему с точки зрения системного администрирования. Ошибка Native=5 (Access is denied) часто указывает на то, что упавший ранее процесс rphost заблокировал фрагменты памяти или временные файлы. Попробуем следующие шаги:
1С:Предприятия.C:\Program Files\1cv8\srvinfo\reg_1541) и удалим содержимое папки snccntx.
DBCC CHECKDB ('Имя_Вашей_Базы') WITH NO_INFOMSGS, ALL_ERRORMSGS;
Проанализируем стратегию использования расширений, чтобы не «набивать шишки» в будущем. Среди опытных разработчиков существует правило: не хранить критически важные данные в расширениях. Рассмотрим почему:
CompatibilityMode) доступ к данным может быть временно или постоянно потерян.Бухгалтерия предприятия), если меняются объекты, от которых зависит ваше расширение, база может войти в состояние «глюка», как в описанном случае.Если вам все же необходимо хранить данные в расширении, всегда тестируйте удаление объектов сначала на копии базы, идентичной по объему данных рабочей, и только на той же версии платформы (в данном случае 8.3.27.1786), так как поведение механизмов реструктуризации сильно зависит от релиза 1С.
В завершение отметим: если вы столкнулись с такой проблемой и откат к бекапу невозможен, попробуйте воспользоваться функционалом «Пересоздать автономную конфигурацию» (если база используется в мобильном или автономном режиме) или методом полной переустановки расширения через удаление и повторное добавление.