При обновлении современных конфигураций 1С (таких как Комплексная автоматизация 2.5, ERP 2.5 или Управление торговлей 11.5) специалисты часто сталкиваются с ошибкой СУБД: Microsoft SQL Server Native Client 11.0: Недопустимое имя объекта "dbo._AccumRg68950NG". Ошибка сопровождается кодом HRESULT=80040E37 и прерывает процесс обновления базы данных.
В этой статье мы подробно разберем, что означают таблицы с постфиксом NG, почему система не может их найти и как правильно настроить платформу, чтобы завершить обновление без ошибок. Мы проанализируем технические аспекты работы платформы 1С:Предприятие 8.3 и рассмотрим пошаговый алгоритм решения проблемы.
Для начала разберем природу возникновения таблиц с постфиксом NG. Этот постфикс расшифровывается как Next Generation (новое поколение). Начиная с версии платформы 8.3.11, компания 1С представила новый механизм реструктуризации данных, который в профессиональной среде называют v2.
Рассмотрим отличия двух механизмов:
Q, в нее копируются все данные из старой таблицы, затем старая таблица удаляется, а новая переименовывается. Это требует двойного объема места в базе данных и значительного времени на выполнение транзакции.NG. В некоторых случаях реструктуризация может происходить через ALTER TABLE на уровне СУБД или путем фонового копирования данных частями.Ошибка Недопустимое имя объекта ... NG возникает в ситуации, когда логика платформы 1С уже «считает», что должна работать с новой структурой (таблицей NG), но на уровне SQL-сервера эта таблица либо не была создана из-за сбоя, либо была удалена в результате незавершенной транзакции. Часто это происходит из-за ошибок в коде самой платформы (например, в версиях 8.3.22 или 8.3.23) или из-за внешних факторов, таких как нехватка прав или места на диске.
Проанализируем самый надежный метод решения проблемы, который помогает в 90% случаев. Если новый механизм v2 дает сбой, мы можем принудительно заставить платформу использовать проверенный временем механизм v1. Для этого необходимо отредактировать файл конфигурации conf.cfg.
Разберем по шагам, как это сделать:
C:\Program Files\1cv8\conf. Если файла там нет, проверьте папку конкретной версии платформы.conf.cfg с помощью текстового редактора (от имени администратора).
UpdateMode=Standard
Или, в зависимости от версии платформы, можно использовать числовое значение:
UpdateMode=0
Важный момент: Параметр Standard (или 0) отключает использование механизма v2. После внесения изменений необходимо перезапустить службу агента сервера 1С:Предприятие. После этого попробуем запустить обновление снова. Система будет использовать старый алгоритм создания временных таблиц, что позволит избежать ошибки с отсутствующими объектами NG.
Рассмотрим ситуацию, когда переключение на v1 не помогло или вы хотите использовать именно v2 для ускорения процесса. Одной из ключевых причин падения реструктуризации является недостаток дискового пространства.
Механизм v2 крайне требователен к свободному месту не только в основной базе данных, но и в системной базе SQL-сервера — tempdb. Проанализируем следующие рекомендации:
.mdf) и логов (.ldf), достаточно места. Для успешной реструктуризации рекомендуется иметь свободного пространства не менее 1.5–2 размеров самой базы.tempdb в SQL Server Management Studio. Файлы этой базы должны иметь возможность автоматического приращения (Autogrowth), а диск, на котором они лежат, не должен быть заполнен «под завязку».NG, что и приведет к ошибке обращения к пустому объекту.Если ошибка сохраняется даже после настройки conf.cfg, возможно, в метаданных базы остались «хвосты» от предыдущих неудачных попыток. Посмотрим, как очистить систему:
snccntx в каталоге описания базы на сервере.Обратите внимание, что реструктуризация — это длительный процесс. Однако именно она позволяет привести физическую структуру таблиц SQL в полное соответствие с метаданными конфигурации 1С, удаляя при этом все «фантомные» ссылки на таблицы NG.
Проанализируем ситуацию, описанную пользователями: иногда ошибка возникает при попытке «перепрыгнуть» через слишком много релизов (обновление по «синей стрелке» в конфигураторе). Если вы обновляете конфигурацию, например, с версии 2.5.10 сразу на 2.5.15, механизм реструктуризации может не справиться с объемом изменений в схеме данных.
Попробуем применить стратегию поэтапного обновления:
Если ошибка указывает на конкретную таблицу, например _InfoRg32576NG, мы можем выяснить, какой именно объект (справочник, регистр или документ) вызывает проблему. Это поможет понять, в каком объекте данных кроется ошибка структуры.
Для этого воспользуемся SQL-запросом к базе данных:
SELECT * FROM Params WHERE FileName = 'DBNames'
В поле этого запроса хранится бинарная информация о соответствии имен. Однако проще воспользоваться встроенной функцией 1С. Создадим внешнюю обработку и выполним код:
СтруктураХранения = ПолучитьСтруктуруХраненияБазыДанных();
Для Каждого СтрокаТаблицы Из СтруктураХранения Цикл
Если Найти(СтрокаТаблицы.ИмяТаблицыХранения, "32576") > 0 Тогда
Сообщить("Это объект: " + СтрокаТаблицы.ИмяТаблицы);
КонецЕсли;
КонецЦикла;
Зная проблемный объект, мы сможем более целенаправленно подойти к его лечению: проверить наличие расширений, влияющих на этот объект, или попробовать вручную пересоздать его структуру в конфигураторе.
Появление ошибки dbo._AccumRg...NG — это верный признак того, что новый механизм реструктуризации v2 столкнулся с препятствием, которое не смог преодолеть. Самым быстрым и эффективным решением остается принудительный возврат к механизму v1 через файл conf.cfg. Если же это не помогает, следует обратить внимание на свободное место на дисках СУБД и актуальность версии платформы 1С.